Skip to content

Commit 34e67cf

Browse files
committed
fix: add codestral-embed model support for OpenAI-compatible provider with 3072 dimensions
1 parent c47de36 commit 34e67cf

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { describe, it, expect } from "vitest"
2+
import { getModelDimension, EMBEDDING_MODEL_PROFILES } from "../embeddingModels"
3+
4+
describe("embeddingModels", () => {
5+
describe("EMBEDDING_MODEL_PROFILES", () => {
6+
it("should have codestral-embed model defined for openai-compatible provider", () => {
7+
const openAiCompatibleModels = EMBEDDING_MODEL_PROFILES["openai-compatible"]
8+
expect(openAiCompatibleModels).toBeDefined()
9+
expect(openAiCompatibleModels?.["codestral-embed"]).toBeDefined()
10+
expect(openAiCompatibleModels?.["codestral-embed"].dimension).toBe(3072)
11+
expect(openAiCompatibleModels?.["codestral-embed"].scoreThreshold).toBe(0.4)
12+
})
13+
14+
it("should have codestral-embed model defined for mistral provider", () => {
15+
const mistralModels = EMBEDDING_MODEL_PROFILES["mistral"]
16+
expect(mistralModels).toBeDefined()
17+
expect(mistralModels?.["codestral-embed-2505"]).toBeDefined()
18+
expect(mistralModels?.["codestral-embed-2505"].dimension).toBe(1536)
19+
expect(mistralModels?.["codestral-embed-2505"].scoreThreshold).toBe(0.4)
20+
})
21+
})
22+
23+
describe("getModelDimension", () => {
24+
it("should return correct dimension for codestral-embed in openai-compatible provider", () => {
25+
const dimension = getModelDimension("openai-compatible", "codestral-embed")
26+
expect(dimension).toBe(3072)
27+
})
28+
29+
it("should return correct dimension for codestral-embed-2505 in mistral provider", () => {
30+
const dimension = getModelDimension("mistral", "codestral-embed-2505")
31+
expect(dimension).toBe(1536)
32+
})
33+
34+
it("should return undefined for unknown model", () => {
35+
const dimension = getModelDimension("openai-compatible", "unknown-model")
36+
expect(dimension).toBeUndefined()
37+
})
38+
39+
it("should return correct dimensions for other openai-compatible models", () => {
40+
expect(getModelDimension("openai-compatible", "text-embedding-3-small")).toBe(1536)
41+
expect(getModelDimension("openai-compatible", "text-embedding-3-large")).toBe(3072)
42+
expect(getModelDimension("openai-compatible", "text-embedding-ada-002")).toBe(1536)
43+
expect(getModelDimension("openai-compatible", "nomic-embed-code")).toBe(3584)
44+
})
45+
})
46+
})

src/shared/embeddingModels.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export const EMBEDDING_MODEL_PROFILES: EmbeddingModelProfiles = {
4545
scoreThreshold: 0.15,
4646
queryPrefix: "Represent this query for searching relevant code: ",
4747
},
48+
"codestral-embed": { dimension: 3072, scoreThreshold: 0.4 },
4849
},
4950
gemini: {
5051
"text-embedding-004": { dimension: 768 },

0 commit comments

Comments
 (0)