Skip to content

Commit 8ecc514

Browse files
committed
fix(embeddings): address code review feedback - remove eager export, fix OLLAMA_HOST, add embeddinggemma
1 parent 7659c02 commit 8ecc514

2 files changed

Lines changed: 29 additions & 5 deletions

File tree

src/embeddings/index.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ const TRANSFORMERS_MODEL_CONFIGS: Record<string, { dimensions: number; maxContex
2525
* remote providers (OpenAI, Ollama) with their specific dimension logic.
2626
*/
2727
export function getConfiguredDimensions(config: Partial<EmbeddingConfig> = {}): number {
28+
// Allow explicit dimension override via env var for custom models
29+
if (process.env.EMBEDDING_DIMENSIONS) {
30+
const parsed = parseInt(process.env.EMBEDDING_DIMENSIONS, 10);
31+
if (!isNaN(parsed) && parsed > 0) {
32+
return parsed;
33+
}
34+
}
35+
2836
const provider =
2937
config.provider ?? parseEmbeddingProviderName(process.env.EMBEDDING_PROVIDER) ?? 'transformers';
3038
const model = config.model ?? process.env.EMBEDDING_MODEL ?? DEFAULT_MODEL;
@@ -34,6 +42,8 @@ export function getConfiguredDimensions(config: Partial<EmbeddingConfig> = {}):
3442
const ollamaDimensions: Record<string, number> = {
3543
'nomic-embed-text': 768,
3644
'nomic-embed-text:latest': 768,
45+
embeddinggemma: 768,
46+
'embeddinggemma:latest': 768,
3747
'mxbai-embed-large': 1024,
3848
'mxbai-embed-large:latest': 1024,
3949
'all-minilm': 384,
@@ -73,9 +83,11 @@ export async function getEmbeddingProvider(
7383

7484
if (mergedConfig.provider === 'ollama') {
7585
const { OllamaEmbeddingProvider } = await import('./ollama.js');
86+
const endpoint =
87+
mergedConfig.apiEndpoint || process.env.OLLAMA_HOST || 'http://localhost:11434';
7688
const provider = new OllamaEmbeddingProvider(
7789
mergedConfig.model || 'nomic-embed-text',
78-
mergedConfig.apiEndpoint || 'http://localhost:11434'
90+
endpoint
7991
);
8092
await provider.initialize();
8193
cachedProvider = provider;
@@ -93,6 +105,6 @@ export async function getEmbeddingProvider(
93105
return provider;
94106
}
95107

96-
// Re-export TransformersEmbeddingProvider and MODEL_CONFIGS for consumers who need them
97-
// These will trigger transformers loading, but only when explicitly imported
98-
export { TransformersEmbeddingProvider, MODEL_CONFIGS } from './transformers.js';
108+
// Note: transformers provider is lazy-loaded in getEmbeddingProvider to avoid
109+
// eager heavy dependency loading. Consumers should import from './transformers'
110+
// directly if they need access to provider implementation or MODEL_CONFIGS.

src/embeddings/ollama.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ interface OllamaEmbeddingResponse {
88
const MODEL_CONTEXT_WINDOWS: Record<string, number> = {
99
'nomic-embed-text': 2048,
1010
'nomic-embed-text:latest': 2048,
11+
embeddinggemma: 2048,
12+
'embeddinggemma:latest': 2048,
1113
'mxbai-embed-large': 512,
1214
'mxbai-embed-large:latest': 512,
1315
'all-minilm': 512,
@@ -31,12 +33,22 @@ export class OllamaEmbeddingProvider implements EmbeddingProvider {
3133
private maxChars: number;
3234

3335
// Default dimensions for nomic-embed-text (768)
34-
// Override via EMBEDDING_MODEL env var for other models
36+
// Override via EMBEDDING_DIMENSIONS env var for custom models
3537
get dimensions(): number {
38+
// Allow explicit dimension override via env var
39+
if (process.env.EMBEDDING_DIMENSIONS) {
40+
const parsed = parseInt(process.env.EMBEDDING_DIMENSIONS, 10);
41+
if (!isNaN(parsed) && parsed > 0) {
42+
return parsed;
43+
}
44+
}
45+
3646
// Common Ollama embedding model dimensions
3747
const modelDimensions: Record<string, number> = {
3848
'nomic-embed-text': 768,
3949
'nomic-embed-text:latest': 768,
50+
embeddinggemma: 768,
51+
'embeddinggemma:latest': 768,
4052
'mxbai-embed-large': 1024,
4153
'mxbai-embed-large:latest': 1024,
4254
'all-minilm': 384,

0 commit comments

Comments
 (0)