Merge PR #2508: add mnemopi embedding variant setting
This commit is contained in:
@@ -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]);
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user