Skip to content

Commit 04b4a69

Browse files
committed
test(code-index): add tests for text-embedding-004 dimension lookup in embeddingModels
Adds comprehensive tests for embeddingModels.ts to verify: - text-embedding-004 is present in gemini profiles for backward compatibility - getModelDimension returns 3072 for deprecated text-embedding-004 - Ensures createVectorStore works for users with text-embedding-004 configured
1 parent 4335d9f commit 04b4a69

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import { describe, it, expect } from "vitest"
2+
import {
3+
getModelDimension,
4+
getModelScoreThreshold,
5+
getDefaultModelId,
6+
EMBEDDING_MODEL_PROFILES,
7+
} from "../embeddingModels"
8+
9+
describe("embeddingModels", () => {
10+
describe("EMBEDDING_MODEL_PROFILES", () => {
11+
it("should have gemini provider with gemini-embedding-001 model", () => {
12+
const geminiProfiles = EMBEDDING_MODEL_PROFILES.gemini
13+
expect(geminiProfiles).toBeDefined()
14+
expect(geminiProfiles!["gemini-embedding-001"]).toBeDefined()
15+
expect(geminiProfiles!["gemini-embedding-001"].dimension).toBe(3072)
16+
})
17+
18+
it("should have deprecated text-embedding-004 in gemini profiles for backward compatibility", () => {
19+
// This is critical for backward compatibility:
20+
// Users with text-embedding-004 configured need dimension lookup to work
21+
// even though the model is migrated to gemini-embedding-001 in GeminiEmbedder
22+
const geminiProfiles = EMBEDDING_MODEL_PROFILES.gemini
23+
expect(geminiProfiles).toBeDefined()
24+
expect(geminiProfiles!["text-embedding-004"]).toBeDefined()
25+
expect(geminiProfiles!["text-embedding-004"].dimension).toBe(3072)
26+
})
27+
})
28+
29+
describe("getModelDimension", () => {
30+
it("should return dimension for gemini-embedding-001", () => {
31+
const dimension = getModelDimension("gemini", "gemini-embedding-001")
32+
expect(dimension).toBe(3072)
33+
})
34+
35+
it("should return dimension for deprecated text-embedding-004", () => {
36+
// This ensures createVectorStore() works for users with text-embedding-004 configured
37+
// The dimension should be 3072 (matching gemini-embedding-001) because:
38+
// 1. GeminiEmbedder migrates text-embedding-004 to gemini-embedding-001
39+
// 2. gemini-embedding-001 produces 3072-dimensional embeddings
40+
// 3. Vector store dimension must match the actual embedding dimension
41+
const dimension = getModelDimension("gemini", "text-embedding-004")
42+
expect(dimension).toBe(3072)
43+
})
44+
45+
it("should return undefined for unknown model", () => {
46+
const dimension = getModelDimension("gemini", "unknown-model")
47+
expect(dimension).toBeUndefined()
48+
})
49+
50+
it("should return undefined for unknown provider", () => {
51+
const dimension = getModelDimension("unknown-provider" as any, "some-model")
52+
expect(dimension).toBeUndefined()
53+
})
54+
55+
it("should return correct dimensions for openai models", () => {
56+
expect(getModelDimension("openai", "text-embedding-3-small")).toBe(1536)
57+
expect(getModelDimension("openai", "text-embedding-3-large")).toBe(3072)
58+
expect(getModelDimension("openai", "text-embedding-ada-002")).toBe(1536)
59+
})
60+
})
61+
62+
describe("getModelScoreThreshold", () => {
63+
it("should return score threshold for gemini-embedding-001", () => {
64+
const threshold = getModelScoreThreshold("gemini", "gemini-embedding-001")
65+
expect(threshold).toBe(0.4)
66+
})
67+
68+
it("should return score threshold for deprecated text-embedding-004", () => {
69+
const threshold = getModelScoreThreshold("gemini", "text-embedding-004")
70+
expect(threshold).toBe(0.4)
71+
})
72+
73+
it("should return undefined for unknown model", () => {
74+
const threshold = getModelScoreThreshold("gemini", "unknown-model")
75+
expect(threshold).toBeUndefined()
76+
})
77+
})
78+
79+
describe("getDefaultModelId", () => {
80+
it("should return gemini-embedding-001 for gemini provider", () => {
81+
const defaultModel = getDefaultModelId("gemini")
82+
expect(defaultModel).toBe("gemini-embedding-001")
83+
})
84+
85+
it("should return text-embedding-3-small for openai provider", () => {
86+
const defaultModel = getDefaultModelId("openai")
87+
expect(defaultModel).toBe("text-embedding-3-small")
88+
})
89+
90+
it("should return codestral-embed-2505 for mistral provider", () => {
91+
const defaultModel = getDefaultModelId("mistral")
92+
expect(defaultModel).toBe("codestral-embed-2505")
93+
})
94+
})
95+
})

0 commit comments

Comments
 (0)