Merge PR #2508: add mnemopi embedding variant setting

This commit is contained in:
can1357
2026-06-14 03:32:54 +02:00
10 changed files with 412 additions and 4 deletions
@@ -1920,6 +1920,31 @@ export const SETTINGS_SCHEMA = {
condition: "mnemopiActive",
},
},
"mnemopi.embeddingVariant": {
type: "enum",
values: ["en", "multilingual"] as const,
default: "en",
ui: {
tab: "memory",
group: "Mnemopi",
label: "Embedding variant",
description:
"Local embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start.",
options: [
{
value: "en",
label: "English (bge-base-en-v1.5)",
description: "BAAI/bge-base-en-v1.5 (768d), English-only",
},
{
value: "multilingual",
label: "Multilingual (multilingual-e5-large)",
description: "intfloat/multilingual-e5-large (1024d), cross-language recall",
},
],
condition: "mnemopiActive",
},
},
"mnemopi.autoRecall": {
type: "boolean",
default: true,
@@ -1982,7 +2007,8 @@ export const SETTINGS_SCHEMA = {
tab: "memory",
group: "Mnemopi",
label: "Mnemopi Embedding Model",
description: "Optional embedding model override passed to Mnemopi",
description:
"Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant.",
condition: "mnemopiActive",
},
},
@@ -305,6 +305,7 @@ function createStatsMemory(config: MnemopiBackendConfig, bank: string): Mnemopi
authorType: "agent",
channelId: bank,
...providerOptions,
reconcile: false,
} as ConstructorParameters<typeof Mnemopi>[0]);
}
+12 -1
View File
@@ -48,6 +48,17 @@ export function loadMnemopiConfig(settings: Settings, agentDir: string): Mnemopi
const recallBanks =
scoping === "global" ? scope.recallBanks : extendRecallWithLegacyBanks(scope.recallBanks, dbPath, cwd);
const llmMode = settings.get("mnemopi.llmMode");
const embeddingOverride = settings.get("mnemopi.embeddingModel");
const embeddingVariant = settings.get("mnemopi.embeddingVariant");
// Map the variant explicitly rather than indexing an object with the raw config
// value (which could resolve an inherited property like `__proto__`); any value
// other than the multilingual variant falls back to the English default.
const variantModel =
embeddingVariant === "multilingual" ? "intfloat/multilingual-e5-large" : "BAAI/bge-base-en-v1.5";
// Precedence: explicit `mnemopi.embeddingModel` setting > `MNEMOPI_EMBEDDING_MODEL`
// env (documented model-level override) > variant-derived default. Without the env
// term a variant default would silently shadow a user's configured env model.
const embeddingModel = embeddingOverride?.trim() || Bun.env.MNEMOPI_EMBEDDING_MODEL?.trim() || variantModel;
return {
dbPath,
baseBank: scope.baseBank,
@@ -69,7 +80,7 @@ export function loadMnemopiConfig(settings: Settings, agentDir: string): Mnemopi
providerOptions: {
noEmbeddings: settings.get("mnemopi.noEmbeddings"),
debug: settings.get("mnemopi.debug"),
embeddingModel: settings.get("mnemopi.embeddingModel"),
embeddingModel,
embeddingApiUrl: settings.get("mnemopi.embeddingApiUrl"),
embeddingApiKey: settings.get("mnemopi.embeddingApiKey"),
llm: