@@ -25,6 +25,14 @@ const TRANSFORMERS_MODEL_CONFIGS: Record<string, { dimensions: number; maxContex
2525 * remote providers (OpenAI, Ollama) with their specific dimension logic.
2626 */
2727export 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.
0 commit comments