/** * Single source of truth for the named embedding presets. * * **What lives here:** * - `EMBEDDING_PRESETS` — the friendly-name → (model, provider) registry. * - `DEFAULT_PRESET` — name of the preset that applies when neither * EMBEDDING_PRESET nor EMBEDDING_MODEL is set. * - `DEFAULT_OLLAMA_MODEL`— the Ollama model used as a fallback when the * user explicitly sets EMBEDDING_PROVIDER=ollama * without naming a model or a matching preset. * - `resolvePresetConfig` — **the single resolver every consumer must call**. * Returns `{ provider, model, presetName, source }` * atomically so it's structurally impossible to * desync provider and model (the v1.7.5→v1.7.7 * multilingual-ollama bug class). * - `resolveEmbeddingProvider` / `resolveEmbeddingModel` — back-compat thin * wrappers around `resolvePresetConfig`. Pre-v1.7.8 * callers (tests, auto-recommend, cli/models) * keep working unchanged. * * **What does NOT live here:** * - Per-model metadata (dim, max_tokens, prefixes). That's resolved at * runtime via the metadata-resolver chain (cache → bundled seed → HF → * defaults). See `src/embeddings/metadata-resolver.ts`. * - Display-only docs content (preset descriptions, MTEB scores, license, * language coverage). That lives in `docs/models.md` and is currently * hand-maintained — codegen is a separate concern. * * **Precedence in `resolvePresetConfig` (highest first):** * 1. EMBEDDING_MODEL set → use it raw; provider = EMBEDDING_PROVIDER if set, * else `transformers` (legacy default for raw model id). * 2. EMBEDDING_PROVIDER + EMBEDDING_PRESET set with mismatched provider → * provider override wins, preset's model carried over, **mismatch warning * emitted** so the (likely-incorrect) combo doesn't silently fail. * 3. EMBEDDING_PRESET set → preset's declared (provider, model) pair used * atomically. Deprecated aliases (`fastest`, `balanced`) resolve to their * canonical name with a one-shot warning. * 4. EMBEDDING_PROVIDER set without preset/model → use the provider-default * model: `DEFAULT_OLLAMA_MODEL` for ollama, `DEFAULT_PRESET`'s model for * transformers. (Pre-v1.7.8 the ollama-default was hardcoded inside * factory.ts; v1.7.8 unifies it here.) * 5. Nothing set → `DEFAULT_PRESET` applies. */ export declare const DEFAULT_PRESET: "english"; export declare const DEFAULT_OLLAMA_MODEL = "nomic-embed-text"; export declare const EMBEDDING_PRESETS: { readonly english: { readonly model: "Xenova/bge-small-en-v1.5"; readonly provider: "transformers"; }; readonly 'english-fast': { readonly model: "MongoDB/mdbr-leaf-ir"; readonly provider: "transformers"; }; readonly 'english-quality': { readonly model: "Xenova/bge-base-en-v1.5"; readonly provider: "transformers"; }; readonly multilingual: { readonly model: "Xenova/multilingual-e5-small"; readonly provider: "transformers"; }; readonly 'multilingual-quality': { readonly model: "Xenova/multilingual-e5-base"; readonly provider: "transformers"; }; readonly 'multilingual-ollama': { readonly model: "qwen3-embedding:0.6b"; readonly provider: "ollama"; }; }; export type EmbeddingPresetName = keyof typeof EMBEDDING_PRESETS; export type EmbeddingProvider = 'transformers' | 'ollama'; /** * Deprecated preset aliases. On match, `resolvePresetConfig` emits a one-boot * warning to stderr and resolves to the canonical preset name. * * - fastest → english-fast: alias rename. v1.7.4 also swapped english-fast's * underlying model from Xenova/paraphrase-MiniLM-L3-v2 * to MongoDB/mdbr-leaf-ir (Apache-2.0, retrieval-tuned * 23M-param distillation of mxbai-embed-large-v1, 22 MB, * 768d (post-Dense projection), asymmetric). * Vault will re-embed once. * - balanced → english: MODEL CHANGE — all-MiniLM-L6-v2 dropped; resolves * to bge-small-en-v1.5. Vault will re-embed once. */ export declare const DEPRECATED_PRESET_ALIASES: Record; export interface PresetConfig { provider: EmbeddingProvider; model: string; /** null when the user set EMBEDDING_MODEL directly (no preset chosen). */ presetName: EmbeddingPresetName | null; source: 'env-model' | 'env-preset' | 'env-provider' | 'default'; } /** * The single resolver. Every consumer should call this — never re-implement * env-var precedence locally. Returns provider and model atomically so they * cannot desync (the bug class that hit `multilingual-ollama` pre-v1.7.8). */ export declare function resolvePresetConfig(env: NodeJS.ProcessEnv): PresetConfig; export declare function resolveEmbeddingModel(env: NodeJS.ProcessEnv): string; export declare function resolveEmbeddingProvider(env: NodeJS.ProcessEnv): EmbeddingProvider; export declare function _resetAliasWarnings(): void; export declare function _resetMultilingualQualityWarning(): void; export declare function _resetProviderMismatchWarning(): void;