Vektör Aramada Doğruluk ve Gecikme Dengesi: Recall@K, HNSW, IVF ve PQ
Yaklaşık en yakın komşu aramasında doğruluk, gecikme, bellek tüketimi ve indeks oluşturma maliyetlerinin HNSW, IVF ve Product Quantization parametreleriyle nasıl dengelendiğini karşılaştırmalı ölçüm yaklaşımıyla ele alır.
Vektör arama altyapısını seçerken “hangi indeks daha hızlı?” sorusu tek başına yeterli değildir. Bir yapı daha düşük gecikme sağlarken daha fazla bellek tüketebilir; başka bir yapı daha küçük bellekle çalışırken Recall@K değerini düşürebilir. Bu nedenle algoritmaları tek bir skorla değil, aynı veri kümesi ve aynı sorgu yükü altında karşılaştırmak gerekir.
Ben böyle bir karşılaştırmayı önce hedefleri sabitleyerek yapmayı tercih ederim.
Önce kabul edilebilir doğruluk düzeyi belirlenir
Yaklaşık en yakın komşu (ANN) yöntemlerinde amaç her zaman tam aramayla bire bir aynı sonucu üretmek değildir. Bunun yerine kabul edilebilir hesaplama maliyeti içinde yeterli komşuları bulmak hedeflenir.
Recall@K bu karşılaştırmanın temel ölçülerinden biridir. Örneğin exact search ile bulunan ilk 10 komşunun 9'u ANN sonucunda da bulunuyorsa Recall@10 yaklaşık 0,9'dur.
Ancak “0,9 iyi midir?” sorusunun cevabı uygulamaya bağlıdır. Aday üretme aşamasında arkasından güçlü bir reranker çalışıyorsa daha düşük recall kabul edilebilir veya tam tersine aday kaybı sonradan telafi edilemeyeceği için daha yüksek recall gerekebilir.
HNSW: arama genişliği ile maliyet birlikte büyür
HNSW graf tabanlı bir yapıdır. Arama sırasında daha fazla düğüm incelemek genellikle recall değerini yükseltir; bunun karşılığında gecikme ve CPU maliyeti artar.
Pratik karşılaştırmada özellikle şu parametrelerin aynı tabloda tutulması yararlıdır:
efSearch,- Recall@K,
- P50/P95/P99 sorgu süresi,
- indeks belleği,
- indeks oluşturma süresi.
Yalnız ortalama sorgu süresine bakıldığında yüksek yüzdeliklerde ortaya çıkan gecikme gözden kaçabilir.
IVF: kaç hücrenin taranacağı sonucu değiştirir
Inverted File Index yaklaşımında vektör uzayı kümelere ayrılır. Sorguda yalnızca en yakın bazı kümeler aranır.
FAISS tarafındaki nprobe, kaç listenin taranacağını belirleyen önemli ayarlardan biridir. nprobe arttıkça recall çoğunlukla yükselir; fakat daha fazla aday değerlendirildiği için sorgu maliyeti de artar.
Bu nedenle nprobe=1 ile nprobe=32 sonuçlarını yalnız hız açısından karşılaştırmak anlamlı değildir. Her iki ayarda elde edilen Recall@K ile gecikmeyi birlikte görmek gerekir.
PQ: bellek kazancı karşılığında bilgi kaybı
Product Quantization, yüksek boyutlu vektörleri daha küçük kodlarla temsil ederek bellek kullanımını ve bazı arama maliyetlerini düşürebilir. Bunun bedeli kuantizasyon hatasıdır.
PQ kullanan bir deneyde en az şu değerleri ölçmek gerekir:
- vektör başına bayt,
- toplam indeks boyutu,
- Recall@K,
- sorgu gecikmesi,
- yeniden sıralama varsa nihai kalite.
Bellek tüketimini ciddi biçimde azaltan bir yapı, recall kaybı kabul edilebilir düzeydeyse büyük veri kümelerinde daha doğru sistem tercihi olabilir.
Karşılaştırma ölçütleri ve ölçüm düzeni
Aynı testte şu değişkenleri sabit tutmak gerekir:
- embedding modeli,
- veri kümesi,
- sorgu kümesi,
- K değeri,
- donanım,
- thread sayısı,
- warm-up yaklaşımı,
- ölçüm süresi.
Ardından her indeks ayarı için en az şu çıktıları kaydederim:
Recall@K, yaklaşık aramanın tam aramaya göre ilk K sonuçtaki geri çağırma düzeyini gösterir. P50 tipik sorgu gecikmesini, P95/P99 ise gecikme dağılımının üst yüzdeliklerini ve ağır sorguların etkisini açıklar. QPS, birim zamanda taşınabilen sorgu hacmini ölçerken bellek kullanımı, indeksin kapasite sınırını belirler. İndeks oluşturma süresi yeniden indekslemenin işlem ve bakım maliyetini görünür kılar.
Bu ölçüler aynı sorgu kümesi ve donanım koşullarında bir arada değerlendirilir. Örneğin benzer Recall@K düzeyindeki iki indeksin QPS değerleri farklı olabilir; daha yüksek QPS ise P99 veya bellek tüketiminde farklı bir maliyetle elde edilmiş olabilir.
Bu şekilde “en hızlı” indeks yerine belirli bir hizmet seviyesi için en uygun ayar bulunabilir.
Yetki filtresi olan bir arama sisteminde Recall@K, yalnız bütün koleksiyon üzerinde ölçüldüğünde yanıltıcı olabilir. Sorgu önce kullanıcının erişebildiği kayıt kümesini tanımlar; tam arama ile yaklaşık arama bu aynı kümede karşılaştırılır. Önce küresel olarak en yakın adayları getirip sonra yetkisizleri çıkarmak, yetkili fakat alt sıralarda kalan kayıtları kaybettirebilir. Değerlendirmeye farklı yetki kapsamları, dar filtrelerin seçiciliği ve filtre sonrasında boş dönen sonuç oranı eklenmelidir. Bu çalışma arama kalitesinin yanında erişim güvenliğini de test eder.
Son karar tek bir algoritma adına indirgenmemeli
HNSW, IVF ve PQ birbirinin her durumda doğrudan alternatifi değildir; bazı sistemlerde birlikte de kullanılabilirler. Veri kümesinin büyüklüğü, güncelleme sıklığı, bellek sınırı ve gecikme hedefi seçim üzerinde en az algoritma kadar etkilidir.
Vektör veritabanı seçimini de aynı nedenle ürün veya algoritma adından önce ölçüm hedefleriyle yapmak gerekir. FAISS indeks mimarisi bu yapıların uygulama düzeyindeki ayrıntılarını tamamlar.
Doğru yapı, en yüksek teorik recall değerine veya en düşük tekil sorgu süresine sahip olan değil; gerekli Recall@K düzeyini kabul edilebilir P95/P99 gecikme ve kaynak bütçesi içinde sürekli sağlayabilen yapıdır.
Referans Komşular ve Sorgu Kümesi
Exact ve ANN karşılaştırmasında uzaklık ölçütü, vektör normalizasyonu, filtre kapsamı ve eşit uzaklıklardaki bağ kırma kuralı sabitlenir. Eşit uzaklıktaki geçerli komşuların farklı sırada dönmesi, tanımlanmamış bir referans kuralıyla yapay recall kaybı üretebilir. Filtre sonrasında K'dan az kayıt kalması durumunda paydanın nasıl belirlendiği açıkça yazılır.
İndeks ayarlarını seçmekte kullanılan sorgular ile son değerlendirme sorguları ayrılır. Ortalama recall yanında başarısız sorgu oranı ve sorgu sınıfları incelenir. Tam aramaya yakınlık, kullanıcının aradığı bilginin anlamsal doğruluğunu tek başına ölçmez; görev ilgililiği için ayrıca etiketli sorgu-belge değerlendirmesi gerekir.
Kaynakça
- Matthijs Douze; Alexandr Guzhva; Chengqi Deng; Jeff Johnson; Gergely Szilvasy; Pierre-Emmanuel Mazaré; Maria Lomeli; Lucas Hosseini; Hervé Jégou; 2024; The Faiss Library; arXiv
- Jeff Johnson; Matthijs Douze; Hervé Jégou; 2021; Billion-Scale Similarity Search with GPUs; IEEE Transactions on Big Data
- Meta AI / FAISS maintainers; FAISS — Guidelines to choose an index; Meta AI