İçeriğe geç
ivralo
Bölümler

Dokümantasyon / Belgeler ve veri

Bilgi dizini

Bilgi dizini, çalışma alanındaki belgelerde ne yazdığını cevaplar: runbook'lar, postmortem'ler, sözleşmeler, sunumlar. Dizini ivralo index kurar, Librarian bu dizinde arama yapar, ivralo search de aynı sonuçları size gösterir.

Nedir

Tek bir soruyu cevaplamak için bütün belgeyi modelin bağlamına okumak yavaştır; uzun bir belge zaten sığmaz. Bunun yerine ivralo index çalışma alanındaki belgeleri parçalara böler, her parçayı embedding modeliyle bir vektöre çevirir ve hepsini pgvector eklentili PostgreSQL'e kaydeder. Bu kayıtlar diğer her şeyle aynı ivralo şemasında durur.

Librarian dizinde arama yapar ve cevabını dosyayı ve sayfayı, bölümü ya da slaytı belirterek verir. documents skill'i ona aittir.

ivralo index
ivralo search "payments servisi için rollback prosedürü"

Oturum içinde /index ve /find <sorgu> aynı işi yapar.

Dizine neler girer

TürNasıl bölünürSonuçta ne görünür
.pdfher sayfa bir parçadosya ve sayfa
.docxbaşlık stillerine göre; tablolar düzleştirilirdosya ve bölüm yolu
.md# başlıklarına göredosya ve bölüm yolu
.pptxher slayt bir parçadosya, slayt ve slaytın başlığı
.txtboyuta göredosya

Parçalar belgenin kendi doğal sınırlarına göre ayrılır; çünkü sabit boyutlu bir pencere, cevabı taşıyan cümleyi ortasından bölebilir. IVRALO_CHUNK_SIZE'dan uzun bir bölüm paragraf aralarından bölünür ve her parça bölümün adını korur. Metin katmanı olmayan bir PDF OCR'dan geçer; bunun için docling gerekir (ayrıntılar Belgeler ve veri sayfasında).

Gizli klasörler ve ivralo'nun kendi .ivralo/ klasörü hiçbir zaman dizine girmez. Repo'nun IVRALO.md dosyasına bir # Documents bölümü eklerseniz dizin yalnızca orada yazan yollar, klasörler ve glob'larla sınırlanır; kaç dosyanın dışarıda kaldığını ivralo index ve ivralo doctor söyler.

Güncel tutmak

Dizin içeriğe bakarak artımlı güncellenir: değişmeyen dosyalar atlanır, değişenler yeniden embed edilir, silinenler dizinden çıkarılır. Belgeler değiştikten sonra ivralo index'i elle ya da bir zamanlamayla çalıştırın.

KomutNe yapar
ivralo indexbu çalışma alanının dizinini dosyalarla eşitler
ivralo index --rebuildbu çalışma alanının dizinini sıfırdan kurar
ivralo index --rebuild --allbütün çalışma alanlarını sıfırdan kurar ve tabloyu yeniden oluşturur
ivralo search <sorgu>Librarian'ın alacağı sonuçları gösterir; --limit (-n) ve --json alır

ivralo index'in çıkış kodu dizinin eşitlenip eşitlenmediğini gösterir. Embed edilmesi gereken her dosya embed edildiyse 0 döner. Embedding modeli hata verdiyse ya da isteği reddettiyse, yapılandırılandan farklı boyutta vektör döndürdüyse, bir dosya okunamadıysa ya da veritabanına ulaşılamadıysa 1 döner. Kullanım hatasında 2 döner. Her sorun stderr'e adıyla yazılır; böylece bir script ya da zamanlama bu koda güvenebilir.

Tek veritabanı, birçok çalışma alanı

Her parça ait olduğu çalışma alanının anahtarını taşır; bu sayede birkaç repo tek veritabanını paylaşabilir. Bir çalışma alanını dizinlemek diğerinin belgelerini asla silmez ve arama yalnızca kendi çalışma alanından sonuç döndürür. --rebuild yalnızca bu çalışma alanının satırlarını temizler. Embedding boyutu değiştiyse çalışmayı reddeder, çünkü tablo ortaktır. Bu durumda --rebuild --all kullanılır. Taşıdığınız ya da adını değiştirdiğiniz bir çalışma alanının eski yoldaki satırlarını temizlemenin yolu da budur.

Arama nasıl sıralar

Arama hibrittir. Vektör tarafı anlamca yakın ifadeleri bulur: "nasıl geri alırız" sorusu "Bir sürümü geri almak" başlıklı bölümü bulur. PostgreSQL'in metin dizini ise tam sözcüğü bulur: bir hata kodu, bir host adı ya da bir ticket numarası gibi; embedding bu tür aramalarda zayıftır. İki tarafın ağırlığını IVRALO_INDEX_VECTOR_WEIGHT belirler.

Anahtar sözcük tarafı bir metin arama yapılandırmasıyla çalışır. Varsayılan simple hiçbir sözcüğü köküne indirmez; bu yüzden E4471 her dilde E4471 ile eşleşir. turkish ya da english seçerseniz o dilin kök bulma kuralları eklenir: turkish ile rapor araması raporlar'ı da bulur. Ayarı değiştirdikten sonra ivralo index'i yeniden çalıştırın: metin dizini yeni dile göre kurulur, hiçbir şey yeniden embed edilmez.

Ayarlar

DeğişkenVarsayılanNe işe yarar
IVRALO_KNOWLEDGEtruefalse olursa dizin ve Librarian devreden çıkar
IVRALO_EMBED_MODELnomic-embed-textembedding modeli; değiştirirseniz ivralo index --rebuild gerekir
IVRALO_EMBED_DIMENSIONS768vektör boyutu; modelle aynı olmalıdır
IVRALO_KNOWLEDGE_RESULTS5arama başına dönen parça sayısı
IVRALO_CHUNK_SIZE1500bir parçanın en fazla karakter sayısı
IVRALO_INDEX_LANGUAGEsimpleanahtar sözcük tarafının metin arama yapılandırması
IVRALO_INDEX_VECTOR_WEIGHT0.5vektör tarafının anahtar sözcük tarafına göre ağırlığı, 0 ile 1 arası

Embedding modeli seçimi Embedding'ler sayfasında anlatılıyor. ivralo doctor eklentiyi denetler, gerçek bir embedding isteği gönderip dönen boyutu kontrol eder, son dizinlemeden bu yana değişen dosyaları sayar ve metin dizininin yapılandırılan dilde kurulu olduğunu doğrular.

Kod dizini değildir

Bilgi dizini belgeler içindir. Kod ayrı dizinlenir: dil sunucusundan ve git'ten alınan bilgilerle, veritabanı olmadan .ivralo/index/ içinde. Bu dizini ivralo index --code kurar. Ayrıntılar Kod analizi sayfasında.