From 44302b0812717c5b7738ffb480e71ea2dd6f47b4 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sat, 23 Aug 2025 10:35:04 +0000 Subject: [PATCH] fix: correct Gemini embedding model dimensions - Fix gemini-embedding-001 dimension from 3072 to 768 in embeddingModels.ts - Update documentation comment in gemini.ts to reflect correct dimension - Update test expectations in service-factory.spec.ts This fixes the vector dimension mismatch error when using Gemini text-embedding-004 with Qdrant, where vectors with incorrect dimensions (1024 or 3072) were being sent to Qdrant which expects 768-dimensional vectors. Fixes #7348 --- src/services/code-index/__tests__/service-factory.spec.ts | 8 ++++---- src/services/code-index/embedders/gemini.ts | 2 +- src/shared/embeddingModels.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/services/code-index/__tests__/service-factory.spec.ts b/src/services/code-index/__tests__/service-factory.spec.ts index 1d8f7ba478..5ae12b4e57 100644 --- a/src/services/code-index/__tests__/service-factory.spec.ts +++ b/src/services/code-index/__tests__/service-factory.spec.ts @@ -566,7 +566,7 @@ describe("CodeIndexServiceFactory", () => { qdrantApiKey: "test-key", } mockConfigManager.getConfig.mockReturnValue(testConfig as any) - mockGetModelDimension.mockReturnValue(3072) + mockGetModelDimension.mockReturnValue(768) // Act factory.createVectorStore() @@ -576,7 +576,7 @@ describe("CodeIndexServiceFactory", () => { expect(MockedQdrantVectorStore).toHaveBeenCalledWith( "/test/workspace", "http://localhost:6333", - 3072, + 768, "test-key", ) }) @@ -590,7 +590,7 @@ describe("CodeIndexServiceFactory", () => { } mockConfigManager.getConfig.mockReturnValue(testConfig as any) mockGetDefaultModelId.mockReturnValue("gemini-embedding-001") - mockGetModelDimension.mockReturnValue(3072) + mockGetModelDimension.mockReturnValue(768) // Act factory.createVectorStore() @@ -601,7 +601,7 @@ describe("CodeIndexServiceFactory", () => { expect(MockedQdrantVectorStore).toHaveBeenCalledWith( "/test/workspace", "http://localhost:6333", - 3072, + 768, "test-key", ) }) diff --git a/src/services/code-index/embedders/gemini.ts b/src/services/code-index/embedders/gemini.ts index 7e795875c9..e0f6f1fcfd 100644 --- a/src/services/code-index/embedders/gemini.ts +++ b/src/services/code-index/embedders/gemini.ts @@ -11,7 +11,7 @@ import { TelemetryService } from "@roo-code/telemetry" * * Supported models: * - text-embedding-004 (dimension: 768) - * - gemini-embedding-001 (dimension: 2048) + * - gemini-embedding-001 (dimension: 768) */ export class GeminiEmbedder implements IEmbedder { private readonly openAICompatibleEmbedder: OpenAICompatibleEmbedder diff --git a/src/shared/embeddingModels.ts b/src/shared/embeddingModels.ts index a3cd61e659..5cb064174b 100644 --- a/src/shared/embeddingModels.ts +++ b/src/shared/embeddingModels.ts @@ -48,7 +48,7 @@ export const EMBEDDING_MODEL_PROFILES: EmbeddingModelProfiles = { }, gemini: { "text-embedding-004": { dimension: 768 }, - "gemini-embedding-001": { dimension: 3072, scoreThreshold: 0.4 }, + "gemini-embedding-001": { dimension: 768, scoreThreshold: 0.4 }, }, mistral: { "codestral-embed-2505": { dimension: 1536, scoreThreshold: 0.4 },