Embeddings kiezen / configureren
Embeddings voeden similarity search voor herinneringen en het gebruikersprofiel. Configureer ze in hetzelfde bestand (~/.config/opencode/opencode-mem.jsonc). Er is geen MLX-backend — lokale embeddings gebruiken @huggingface/transformers met ONNX, niet Apple MLX.
Lokaal (standaard): stel alleen embeddingModel in. Bij eerste gebruik wordt het model gedownload van Hugging Face en gecached onder {storagePath}/.cache (standaard ~/.opencode-mem/data/.cache).
Remote (OpenAI-compatibel): stel zowel embeddingApiUrl als embeddingApiKey in. De plugin roept dan {embeddingApiUrl}/embeddings aan met een Bearer-token. embeddingApiKey accepteert dezelfde geheime formaten als memoryApiKey (literal, env://…, file://…).
| Sleutel | Rol |
|---|---|
embeddingModel |
Hugging Face-id (lokaal) of API-modelnaam (remote). Standaard: Xenova/nomic-embed-text-v1 |
embeddingDimensions |
Optionele override; meestal weglaten — dimensies worden opgezocht uit een ingebouwde map |
embeddingPooling |
Lokale pooling: "mean" (standaard), "cls", of "last_token". Unset → klein known-model-preset of "mean" |
embeddingQueryPrefix |
Prefix voor query-task-embeddings. Unset → modelpreset of Nomic wanneer embeddingUseTaskPrefixes true is. Expliciete "" schakelt uit |
embeddingDocumentPrefix |
Prefix voor document-task-embeddings (zelfde resolutieregels als embeddingQueryPrefix) |
embeddingUseTaskPrefixes |
Opt-in Nomic search_query: / search_document:-prefixes wanneer custom/preset-prefixes unset zijn. Standaard false |
embeddingDtype |
Optionele lokale ONNX-dtype-override (bijv. "q8", "fp32"). Indien gezet, doorgegeven aan transformers.js pipeline({ dtype }) |
embeddingApiUrl |
Basis-URL voor een OpenAI-compatibele embeddings-API (geen trailing path voorbij /v1) |
embeddingApiKey |
API-sleutel voor dat endpoint (vereist samen met embeddingApiUrl) |
Aanbevolen lokale modellen:
| Model | Dims | Opmerkingen |
|---|---|---|
Xenova/nomic-embed-text-v1 |
768 | Standaard; meertalig, 8192 context; mean pooling |
Xenova/jina-embeddings-v2-base-en |
768 | Alleen Engels, 8192 context |
Xenova/jina-embeddings-v2-small-en |
512 | Sneller, 8192 context |
Xenova/all-MiniLM-L6-v2 |
384 | Zeer snel, 512 context |
Xenova/all-mpnet-base-v2 |
768 | Goede kwaliteit, 512 context |
Xenova/bge-m3 |
1024 | Meertalig; auto CLS-pooling |
intfloat/multilingual-e5-large |
1024 | Auto query: / passage:-prefixes |
Voorbeeld — remote OpenAI-embeddings:
{ "embeddingApiUrl": "https://api.openai.com/v1", "embeddingApiKey": "env://OPENAI_API_KEY", "embeddingModel": "text-embedding-3-small",}Voorbeeld — lokaal bge-m3 (pooling standaard CLS via preset; override indien nodig):
{ "embeddingModel": "Xenova/bge-m3", // "embeddingPooling": "cls", // "embeddingDtype": "q8",}Wijzigen van embeddingModel, dimensies, pooling of task-prefixes kan opnieuw embedden van opgeslagen herinneringen vereisen zodat store- en queryvectoren uitgelijnd blijven. Kies liever één keer een model (en pooling-/prefixinstellingen) en blijf daarbij voor een gegeven datadirectory.
Niet ondersteund — Intel Mac (darwin/x64): Lokale persistentie vereist @tursodatabase/database, dat geen Intel Mac native binding publiceert. Vaste onnxruntime-node-releases (1.24.1+, inclusief de vastgezette 1.31.1) missen ook darwin/x64. Gebruik een Apple Silicon Mac, Linux of Windows, of een remote endpoint via embeddingApiUrl + embeddingApiKey (voorbeeld hierboven). Op ondersteunde platforms pinnet opencode-mem onnxruntime-node@1.31.1 (Ort::Env teardown-fix uit 1.24.1 / #225) en laadt transformers via een CJS resolve-shim zodat geneste OpenCode-installaties die binding behouden. Transformers wordt naar een absoluut pad opgelost voordat die shim wordt geïnstalleerd, zodat OpenCode’s Bun --compile-host niet faalt met Cannot find module '@huggingface/transformers' from ''. Wis na een upgrade de geneste plugincache van OpenCode (~/.cache/opencode/packages/opencode-mem@*) en herinstalleer.