@@ -147,6 +147,25 @@ describe("ollama embedding provider", () => {
|
147 | 147 | expect(vector[1]).toBeCloseTo(0.8, 5); |
148 | 148 | }); |
149 | 149 | |
| 150 | +it("applies outputDimensionality before normalizing vectors", async () => { |
| 151 | +mockEmbeddingFetch([3, 4, 12]); |
| 152 | + |
| 153 | +const { provider } = await createOllamaEmbeddingProvider({ |
| 154 | +config: {} as OpenClawConfig, |
| 155 | +provider: "ollama", |
| 156 | +model: "unknown-embedder", |
| 157 | +fallback: "none", |
| 158 | +remote: { baseUrl: "http://127.0.0.1:11434" }, |
| 159 | +outputDimensionality: 2, |
| 160 | +}); |
| 161 | + |
| 162 | +const vector = await provider.embedQuery("hi"); |
| 163 | + |
| 164 | +expect(vector).toHaveLength(2); |
| 165 | +expect(vector[0]).toBeCloseTo(0.6, 5); |
| 166 | +expect(vector[1]).toBeCloseTo(0.8, 5); |
| 167 | +}); |
| 168 | + |
150 | 169 | it("marks the configured Ollama origin for managed-proxy direct routing", async () => { |
151 | 170 | const fetchMock = mockEmbeddingFetch([1, 0]); |
152 | 171 | |
@@ -664,6 +683,23 @@ describe("ollama embedding provider", () => {
|
664 | 683 | expect(headers?.Authorization).toBeUndefined(); |
665 | 684 | }); |
666 | 685 | |
| 686 | +it("includes outputDimensionality in the memory embedding cache identity", async () => { |
| 687 | +const result = await ollamaMemoryEmbeddingProviderAdapter.create({ |
| 688 | +config: {} as OpenClawConfig, |
| 689 | +provider: "ollama", |
| 690 | +model: "nomic-embed-text", |
| 691 | +fallback: "none", |
| 692 | +remote: { baseUrl: "http://127.0.0.1:11434" }, |
| 693 | +outputDimensionality: 2, |
| 694 | +}); |
| 695 | + |
| 696 | +expect(result.runtime?.cacheKeyData).toMatchObject({ |
| 697 | +provider: "ollama", |
| 698 | +model: "nomic-embed-text", |
| 699 | +outputDimensionality: 2, |
| 700 | +}); |
| 701 | +}); |
| 702 | + |
667 | 703 | it("marks inline memory batches as local-server timeout work", async () => { |
668 | 704 | const result = await ollamaMemoryEmbeddingProviderAdapter.create({ |
669 | 705 | config: {} as OpenClawConfig, |
|