data-infra

Embedding İndeksi

Bir embedding indeksi, bir vektör veritabanının veya arama motorunun bir embedding koleksiyonu üzerine inşa ettiği, bir sorgu vektörünün en yakın komşularını bulmanın onu depolanan her vektörle tek tek karşılaştırmayı gerektirmemesini sağlayan dahili veri yapısıdır. Bir indeks olmadan, benzerlik araması "brute force"tur (teknik olarak flat veya kapsamlı arama olarak adlandırılır) — doğrudur, ama maliyeti vektör sayısıyla doğrusal olarak artar; bu da bir koleksiyon milyonlarca girdiye ulaştığında işlenemez derecede yavaşlar. AI/SaaS kuran ekipler için neden önemli: indeks tipi ve yapılandırması genellikle bir RAG veya semantik arama özelliğinin gecikmesi, recall'u (gerçek en iyi eşleşmelerin fiilen ne sıklıkta döndürüldüğü) ve altyapı maliyeti üzerindeki tek en büyük kaldıraçtır — ve ham pgvector, Qdrant veya Weaviate üzerine inşa eden her ekibin açıkça vermesi gereken bir karardır (Pinecone gibi yönetilen hizmetler bunu makul varsayılanların arkasına gizler). Nasıl çalışır: bugün production'da baskın indeks ailesi HNSW'dir (Hierarchical Navigable Small World) — her vektörün birden fazla katman boyunca yaklaşık en yakın komşularına bağlı bir düğüm olduğu bir grafik yapısı; bu, aramanın her şeyi taramak yerine sorgu vektörüne doğru kabaca logaritmik zamanda "zıplamasını" sağlar. HNSW mükemmel recall/hız ödünleşimleri sunar ama bellek açısından açtır (tüm grafik tipik olarak RAM'de kalmalıdır) ve indeks inşaları, çok yüksek yazma hacminde artımlı olarak güncellemek için hesaplama açısından pahalıdır. IVFFlat (Inverted File with Flat compression), pgvector ve diğerleri tarafından kullanılan daha ucuz bir alternatiftir: indeks inşa zamanında vektörleri kovalara kümeler (k-means aracılığıyla) ve yalnızca sorguya en yakın kovaları arar; daha düşük bellek ve daha hızlı inşalar için biraz recall feda eder — sürekli değişmeyen veri setleri için iyidir. `ef_construction`/`ef_search` (HNSW) veya `lists`/`probes` sayısı (IVFFlat) gibi ayar parametreleri, recall'u doğrudan gecikmeye karşı takas eder: grafiğin veya daha fazla kümenin daha fazlasını aramak daha iyi eşleşmeler bulur ama daha uzun sürer. Örnek üzerinden: bir kod arama SaaS'ı 2 milyon fonksiyon embedding'i indeksliyor. Flat (indekssiz) bir aramayla, tek bir sorgu ~800ms sürüyor — bir IDE eklentisi için kabul edilemez. `m=16, ef_construction=200` ile bir HNSW indeksine geçmek, sorgu gecikmesini ~8ms'ye düşürüyor ve brute-force ground truth'a karşı %95'in üzerinde recall sağlıyor; bunun karşılığında indeksin, ham vektörlerin diskte ~4GB'ına karşılık ~6GB RAM'e ihtiyaç duyması gerekiyor. Ekip daha sonra belirsiz sorgularda recall düşüşü fark ettikten sonra `ef_search`'i 50'den 100'e yükseltiyor; bu, downstream LLM'de ölçülebilir şekilde daha iyi yanıt kalitesi karşılığında birkaç milisaniye ek gecikmeyi takas ediyor — ürün yüzeyinde görünmez ama eklentiyi kullanan geliştiriciler için "bunun gibi fonksiyonları ara"nın gerçekten güvenilir hissedip hissetmediğini doğrudan şekillendiren bir ayar ödünleşimi.

İlgili terimler

Daha fazla Veri ve Altyapı terimi