İçeriğe geç

Embedding seçimi / yapılandırması

Embedding’ler bellekler ve kullanıcı profili için benzerlik aramasını güçlendirir. Bunları aynı dosyada yapılandırın (~/.config/opencode/opencode-mem.jsonc). MLX backend yoktur — yerel embedding’ler Apple MLX değil, ONNX ile @huggingface/transformers kullanır.

Yerel (varsayılan): yalnızca embeddingModel ayarlayın. İlk kullanımda model Hugging Face’ten indirilir ve {storagePath}/.cache altında önbelleğe alınır (varsayılan ~/.opencode-mem/data/.cache).

Uzak (OpenAI uyumlu): hem embeddingApiUrl hem embeddingApiKey ayarlayın. Eklenti ardından Bearer belirteciyle {embeddingApiUrl}/embeddings çağırır. embeddingApiKey, memoryApiKey ile aynı gizli biçimleri kabul eder (literal, env://…, file://…).

Anahtar Rol
embeddingModel Hugging Face kimliği (yerel) veya API model adı (uzak). Varsayılan: Xenova/nomic-embed-text-v1
embeddingDimensions İsteğe bağlı geçersiz kılma; genellikle atlayın — boyutlar yerleşik bir haritadan alınır
embeddingPooling Yerel pooling: "mean" (varsayılan), "cls" veya "last_token". Ayarlanmamış → küçük bilinen-model ön ayarı veya "mean"
embeddingQueryPrefix Sorgu-görevi embedding’leri için önek. Ayarlanmamış → model ön ayarı veya embeddingUseTaskPrefixes true iken Nomic. Açık "" devre dışı bırakır
embeddingDocumentPrefix Belge-görevi embedding’leri için önek (embeddingQueryPrefix ile aynı çözüm kuralları)
embeddingUseTaskPrefixes Özel/ön ayar önekleri ayarlanmamışken Nomic search_query: / search_document: öneklerine katılma. Varsayılan false
embeddingDtype İsteğe bağlı yerel ONNX dtype geçersiz kılması (örn. "q8", "fp32"). Ayarlandığında transformers.js pipeline({ dtype })’a iletilir
embeddingApiUrl OpenAI uyumlu bir embeddings API’si için temel URL (/v1 ötesinde sondaki yol yok)
embeddingApiKey O uç nokta için API anahtarı (embeddingApiUrl ile birlikte gerekli)

Önerilen yerel modeller:

Model Boyut Notlar
Xenova/nomic-embed-text-v1 768 Varsayılan; çok dilli, 8192 bağlam; mean pooling
Xenova/jina-embeddings-v2-base-en 768 Yalnızca İngilizce, 8192 bağlam
Xenova/jina-embeddings-v2-small-en 512 Daha hızlı, 8192 bağlam
Xenova/all-MiniLM-L6-v2 384 Çok hızlı, 512 bağlam
Xenova/all-mpnet-base-v2 768 İyi kalite, 512 bağlam
Xenova/bge-m3 1024 Çok dilli; otomatik CLS pooling
intfloat/multilingual-e5-large 1024 Otomatik query: / passage: önekleri

Örnek — uzak OpenAI embedding’leri:

{
"embeddingApiUrl": "https://api.openai.com/v1",
"embeddingApiKey": "env://OPENAI_API_KEY",
"embeddingModel": "text-embedding-3-small",
}

Örnek — yerel bge-m3 (pooling ön ayar üzerinden CLS’ye varsayılan; gerekirse geçersiz kılın):

{
"embeddingModel": "Xenova/bge-m3",
// "embeddingPooling": "cls",
// "embeddingDtype": "q8",
}

embeddingModel, boyutlar, pooling veya görev öneklerini değiştirmek, depo ve sorgu vektörlerinin hizalı kalması için saklanan belleklerin yeniden embedding’ini gerektirebilir. Belirli bir veri dizini için bir modeli (ve pooling/önek ayarlarını) bir kez seçip bunlara bağlı kalmayı tercih edin.

Desteklenmez — Intel Mac (darwin/x64): Yerel kalıcılık, Intel Mac yerel bağlayıcısı yayınlamayan @tursodatabase/database gerektirir. Sabit onnxruntime-node sürümleri (1.24.1+, sabitlenmiş 1.31.1 dahil) de darwin/x64 içermez. Apple Silicon Mac, Linux veya Windows kullanın; ya da embeddingApiUrl + embeddingApiKey ile uzak bir uç nokta (yukarıdaki örnek). Desteklenen platformlarda opencode-mem, onnxruntime-node@1.31.1’ı sabitler (1.24.1 / #225’ten Ort::Env teardown düzeltmesi) ve OpenCode iç içe kurulumlarının o bağlayıcıyı koruması için transformers’ı bir CJS çözüm shim’i üzerinden yükler. Transformers, o shim kurulmadan önce mutlak bir yola çözülür; böylece OpenCode’un Bun --compile ana bilgisayarı Cannot find module '@huggingface/transformers' from '' ile başarısız olmaz. Yükseltmeden sonra OpenCode’un iç içe eklenti önbelleğini temizleyin (~/.cache/opencode/packages/opencode-mem@*) ve yeniden kurun.