Dokümantasyon / Modeller
Embedding'ler ve dizin
Bilgi dizini, çalışma alanındaki belgeleri ve isterseniz kodu vektörlere çevirir; böylece ajanlar onları anlamına göre arayabilir. Bu sayfada embedder seçimi, dizini embedder'la uyumlu tutmak ve kodu barındırılan bir embedder'dan uzak tutan kural anlatılıyor.
Embedder ne işe yarar
Embedder, bir metin parçasını vektöre çeviren modeldir; vektör, benzer anlamları birbirine yakın konumlandıran bir sayı listesidir. ivralo embedder'ı iki iş için kullanır:
- çalışma alanındaki belgelerin (PDF, Word, PowerPoint, Markdown, düz metin) bilgi dizini; Librarian bu dizinde arama yapar ve alıntılarken dosyayı ve sayfayı belirtir;
- anlamsal kod araması: repo'daki kodun sembollere göre bölündüğü, isteğe bağlı bir dizin.
İkisi de ivralo'nun diğer verileriyle birlikte, pgvector'lü PostgreSQL'de tutulur. Arama hibrittir: vektör aynı anlamı başka kelimelerle anlatan metni bulur, PostgreSQL'in metin dizini de birebir kelimeyi. Neyin dizinlendiği ve nasıl arandığı Bilgi dizini sayfasında.
Embedder seçmek
IVRALO_EMBED_MODEL, sohbet modelleriyle aynı referans biçimini kullanır (Modeller ve sağlayıcılar), yalnız bu kez agno'nun embedder'ları üzerinden. Önünde paket olmayan bir ad Ollama tag'i sayılır.
| Referans | Nerede çalışır |
|---|---|
nomic-embed-text | Ollama, varsayılan |
openai-compatible:bge-m3 | IVRALO_OPENAI_COMPATIBLE_URL adresindeki OpenAI uyumlu bir sunucu |
openai:text-embedding-3-small | OpenAI API |
google:gemini-embedding-001 | Gemini API |
mistral:mistral-embed | Mistral API |
Hem yerel hem barındırılan embedder'lar çalışır. Barındırılan bir embedder, belgelerin metnini embedding için makinenin dışına gönderir; ivralo da bunu barındırılan bir sohbet modelinde olduğu gibi açıkça bildirir.
| Değişken | Varsayılan | Ne ayarlar |
|---|---|---|
IVRALO_KNOWLEDGE | true | false dizini kapatır; IVRALO_WEB de kapalıysa Librarian da devreden çıkar |
IVRALO_EMBED_MODEL | nomic-embed-text | Embedder |
IVRALO_EMBED_DIMENSIONS | 768 | Vektör boyutu. Modelle aynı olmalı: nomic-embed-text için 768, OpenAI'ın küçük modeli için 1536 |
IVRALO_EMBED_CODE_HOSTED | false | Barındırılan bir embedder'ın kodu embed edip edemeyeceği |
IVRALO_EMBED_DIMENSIONS, PostgreSQL'deki vektör sütununun boyutunu da belirler; bu yüzden modelinizin ürettiği boyuta ayarlayın. ivralo doctor gerçek bir embedding isteği gönderir ve dönen boyutu ya da isteğin aldığı hatayı gösterir.
Sunucuda
Sunucuda Ollama olmaz; bu yüzden siz bir embedder belirtmedikçe ivralo init --server IVRALO_KNOWLEDGE=false yazar. Şirket endpoint'i kullanıyorsanız embedder, sohbet modeliyle aynı URL'den sunulan bir model adıdır:
ivralo init --server --model-url http://gpu-box:8000/v1 --model qwen3-32b --embed-model bge-m3
Bu komut IVRALO_EMBED_MODEL=openai-compatible:bge-m3 yazar. IVRALO_EMBED_DIMENSIONS'ı modele uygun değere ayarlayın (bge-m3 için 1024), sonra kontrol edin:
ivralo doctor
Dizini oluşturmak ve yeniden oluşturmak
ivralo index
Dizinleme artımlıdır: değişmeyen dosyalar atlanır, değişenler yeniden embed edilir, silinenler dizinden çıkarılır. Oturumun içinde /index aynı işi yapar. Bir şey ters giderse (embedder hata verirse, boyut uyuşmazsa, bir dosya embed edilemezse) ivralo index 1 koduyla çıkar ve her sorunu stderr'e yazar; böylece bir script ya da zamanlanmış bir iş bu sonuca güvenebilir.
İki farklı modelin vektörleri birbiriyle karşılaştırılamaz; embedder değişirse dizini baştan oluşturmanız gerekir:
| Veritabanında | Çalıştırın |
|---|---|
| Yalnızca bu çalışma alanının dizini var | ivralo index --rebuild |
| Başka çalışma alanlarının dizinleri de var | ivralo index --rebuild --all |
--rebuild bu çalışma alanının dizinini sıfırdan başlatır. Veritabanında başka bir çalışma alanının dizini yoksa vektör tablosunu drop eder; böylece yeni bir vektör boyutu da kullanılabilir. Başka dizinler varsa yalnızca bu çalışma alanının satırlarını siler ve değişmiş bir vektör boyutunu kabul etmez, çünkü sütun hepsi için ortaktır. Model değiştiyse diğer çalışma alanlarının vektörleri de eski modele aittir. --rebuild --all bütün çalışma alanlarını sıfırdan başlatır ve tabloyu drop eder. Taşıdığınız ya da adını değiştirdiğiniz bir çalışma alanının eski satırlarını temizlemenin yolu da budur.
Kodu embed etmek
Anlamsal kod araması, dizinini ajanlar onu kullandıkça doldurur. Bütün repo'yu tek seferde embed etmek için kod dizinini oluşturup ardından embed edin:
ivralo index --code --semantic
Her parça, kod dizininde tutulduğu haliyle bir semboldür (bir fonksiyon, bir sınıf, bir metot). Dosyalar, git'in listelediği dosyalardır: yalnızca metin dosyaları, her biri en fazla 256 KB ve asla bir .env.
Bir embedder'ın barındırılan sayılıp sayılmadığına sohbet modellerindeki gibi karar verilir: loopback, özel adresler ve yerel adlar yereldir, geri kalan her şey barındırılandır. Kuralın kendisi Modeller ve sağlayıcılar sayfasında.