Yapay Zeka

FAISS Nedir? Yapay Zekâ Büyük Vektör Kümelerinde Nasıl Hızlı Arama Yapıyor?

FAISS (Facebook AI Similarity Search), vektörler arasında verimli benzerlik araması ve kümeleme yapmak için geliştirilmiş açık kaynak bir kütüphanedir. Meta’nın araştırma ekipleri ve dış katkıcılar tarafından geliştirilen FAISS, farklı hız, bellek ve sonuç kalitesi ihtiyaçlarına uygun seçenekler sunar.

FAISS Nedir?

FAISS, sayısal vektörleri indeksleyen ve bir sorgu vektörüne yakın kayıtları bulan yazılım kütüphanesidir.

Örneğin bir belge arama sisteminde her metin parçası embedding modeliyle vektöre dönüştürülebilir. FAISS, kullanıcının sorusunu temsil eden vektörle bu kayıtları karşılaştırarak en yakın adayları döndürür.

FAISS metin embedding’lerini kendisi üretmez. Bu işlem için ayrı bir model gerekir. FAISS’in görevi, oluşturulmuş vektörler üzerinde arama yapmaktır.

FAISS Nasıl Çalışır?

Bir RAG uygulamasında süreç genel olarak şöyledir:

  1. Belgeler hazırlanır: İçerikler temizlenir ve uygun parçalara ayrılır.

  2. Embedding oluşturulur: Her parça sayısal bir vektöre dönüştürülür.

  3. İndeks seçilir: Veri miktarına ve performans hedeflerine uygun yapı belirlenir.

  4. Vektörler eklenir: Gerekiyorsa indeks önce örnek vektörlerle eğitilir.

  5. Sorgu işlenir: Kullanıcının sorusu uyumlu bir embedding modelinden geçirilir.

  6. Yakın kayıtlar bulunur: FAISS, sonuç kimliklerini ve uzaklık veya benzerlik değerlerini döndürür.

  7. İçerikler getirilir: Uygulama, bu kimlikleri kullanarak ilgili belge parçalarına ulaşır.

Buradaki indeks eğitimi, dil modelini eğitmekten farklıdır. Örneğin IVF kümelerinin veya sıkıştırma kodlarının hazırlanmasını ifade edebilir.

Hangi İndeksleri Destekler?

IndexFlat

IndexFlatL2 ve IndexFlatIP, seçilen ölçüte göre bütün vektörleri karşılaştırarak tam arama yapar. Küçük koleksiyonlarda veya doğruluk karşılaştırması için başlangıç noktası olarak kullanılabilir.

Tam arama, matematiksel olarak en yakın vektörleri bulur; kullanıcının ihtiyacına en uygun belgeyi bulmayı tek başına garanti etmez.

IVF

Vektörleri kümeler hâlinde düzenler. Arama sırasında seçilen kümeler incelenerek karşılaştırma sayısı azaltılabilir.

Daha fazla kümenin taranması sonuç kalitesini artırabilir; ancak işlem süresini de uzatabilir.

HNSW

Vektörleri bir komşuluk grafiğinde organize eder. Grafikte ilerleyerek yakın adaylara ulaşır. Hızlı arama sağlayabilir; bağlantı yapısı ek bellek gerektirir.

Product Quantization

PQ, vektörleri sıkıştırılmış kodlarla temsil eder. Bellek ihtiyacını azaltabilir, ancak yaklaşık hesaplamalar nedeniyle sonuçlarda kayıp oluşabilir. IVF ile birlikte de kullanılabilir.

Benzerlik Ölçütü Neden Önemlidir?

FAISS’te yaygın seçenekler arasında L2 uzaklığı ve iç çarpım bulunur. L2 aramalarında kütüphane genellikle uzaklığın karesini döndürür; daha küçük değer daha yakın sonucu ifade eder.

İç çarpım ise tek başına kosinüs benzerliği değildir. Kosinüs benzerliği için bu yaklaşım kullanılacaksa hem kayıtların hem sorguların birim uzunluğa normalize edilmesi gerekir.

Bu ayrım önemlidir: Uygun olmayan ölçüt veya normalizasyon, iyi bir embedding modelinin sonuçlarını da olumsuz etkileyebilir.

GPU Desteği Ne Sağlar?

FAISS, desteklenen indekslerde GPU hızlandırması sunar. Özellikle çok sayıda sorgunun birlikte işlendiği durumlarda paralel hesaplama avantaj sağlayabilir.

Ancak GPU desteği, bütün CPU indekslerinin ve özelliklerinin GPU’da aynı şekilde çalıştığı anlamına gelmez. Desteklenen indeksler, donanım ve kullanılan derlemeye göre kontrol edilmelidir.

Verilerin CPU ile GPU arasında taşınması da maliyetlidir. Bu nedenle yalnızca hesaplama süresi değil, veri aktarımı dahil toplam işlem süresi ölçülmelidir.

FAISS Bir Vektör Veritabanı mı?

FAISS, tam özellikli bir veritabanı değildir. Temel olarak indeksleme, vektör arama ve kümeleme işlevlerine odaklanır.

Vektör kimlikleriyle çalışma ve bazı seçim mekanizmaları sunabilir. Ancak kullanıcı yetkilendirme, belge saklama, servis API’si, yedekleme ve dağıtık işletim gibi ihtiyaçlar uygulama düzeyinde ayrıca karşılanmalıdır.

Bir vektör veritabanı, FAISS veya başka bir arama kütüphanesini kullanabilir. Bununla birlikte her vektör veritabanının altyapısında FAISS bulunduğu varsayılmamalıdır.

Milyarlarca Vektörde Milisaniyelik Arama Mümkün mü?

Uygun indeks ve altyapıyla büyük ölçekli arama yapılabilir. Ancak her veri kümesinde milisaniyelik sonuç garantisi yoktur.

Performansı etkileyen başlıca unsurlar şunlardır:

  • Vektör sayısı ve boyutu.

  • İndeks türü ve sıkıştırma seviyesi.

  • CPU, GPU ve kullanılabilir bellek.

  • Aynı anda işlenen sorgu sayısı.

  • Kabul edilen yaklaşık arama kaybı.

FAISS’in indeks seçim rehberi de yöntemin veri büyüklüğü, bellek bütçesi ve arama ihtiyacına göre belirlenmesini önerir. Az sayıda arama yapılacaksa karmaşık bir indeks hazırlamanın maliyeti beklenen faydayı aşabilir.

Sonuç Kalitesi Nasıl Değerlendirilir?

Yaklaşık aramada recall@k, tam aramanın bulduğu ilk k sonuçtan kaçının geri getirildiğini gösterir.

Örneğin tam aramadaki ilk 10 komşudan 9’u bulunuyorsa o sorgunun recall@10 değeri yüzde 90’dır. Bu ölçüm, indeksin arama kalitesini değerlendirir.

Belgenin kullanıcı sorusuyla gerçekten ilgili olup olmadığı ise ayrıca ölçülmelidir. Embedding modeli, belge parçalama yöntemi ve kaynak içeriği bu kaliteyi etkiler.

Sık Sorulan Sorular

FAISS yalnızca yaklaşık arama mı yapar?

Hayır. Tam arama ve yaklaşık arama seçenekleri bulunur.

FAISS kullanmak için GPU gerekir mi?

Hayır. CPU üzerinde de çalışabilir.

FAISS doğrudan cevap üretir mi?

Hayır. Yakın vektörleri bulur. Belge getirme ve doğal dilde cevap oluşturma, uygulamanın diğer bileşenlerince yürütülür.

En iyi indeks hangisidir?

Tek bir doğru seçenek yoktur. Hız, bellek, güncelleme ihtiyacı ve sonuç kalitesi birlikte değerlendirilmelidir.

FAISS’in temel değeri, vektör aramasında farklı performans seçeneklerini aynı kütüphane içinde sunmasıdır. Başarılı kullanım, doğru indeks seçimini gerçek sorgularla yapılan ölçümlerle tamamlar.

Kaynaklar: Meta — Faiss; FAISS Resmî Dokümantasyonu — Faiss Indexes, Guidelines to Choose an Index, MetricType and Distances, Faiss on the GPU ve FAISS Wiki.

Editör Notu

Bu içerik, kamuya açık vektör arama kaynakları ve resmî teknik dokümantasyonlardan yararlanılarak hazırlanmış bir araştırma ve değerlendirme yazısıdır. İçerikte yer alan değerlendirmeler editoryal yorum niteliğindedir. FAISS’in performansı ve sonuç kalitesi; veri kümesine, donanıma, indeks türüne ve arama ayarlarına göre değişebilir.