Hybrid Search
Hibrit Arama — anahtar kelime + anlamsal
Klasik anahtar kelime araması (BM25) + vektör tabanlı anlamsal arama, sonuçların birleştirilmesi. İkisinin de zayıf yanını kapatır.
Sadece vektör arama yapmak: anlamsal yakınlığı yakalar ama "GDPR", "iPhone 16 Pro Max" gibi tam terim eşleşmesini bazen kaçırır. Sadece anahtar kelime arama (BM25): tam terimi mükemmel bulur ama "compliance" sorgusunda "uyum" geçen dokümanı kaçırır.
Hybrid search, ikisini birden çalıştırıp sonuçları birleştirir. Yaygın birleştirme yöntemi: Reciprocal Rank Fusion (RRF) — her sonucun her listedeki sırasına göre skor verir, toplam skora göre yeniden sıralar. Skor normalizasyonu derdi yoktur.
Production RAG sistemlerinin neredeyse hepsi hibrit. Pinecone, Weaviate, Qdrant, Elastic — hepsinin built-in hibrit modu var.
Bir kitap araması düşün. "İklim değişikliği" diye arıyorsun. Anahtar kelime araması: tam bu ifadeyi içeren kitapları getir. Anlamsal arama: "küresel ısınma", "karbon ayak izi" gibi yakın konuları da getir. İkisini birleştirince: tam terim + ilgili kavramlar = en kapsamlı sonuç.
Bir hukuk firmasının RAG'i. Sorgu: "GDPR Madde 17 uyum süreci".
Sadece vektör: "GDPR" terimi vektör uzayında belirsiz olabilir ("data protection" benzer skor verir). Madde 17 tam terimini kaçırır.
Sadece BM25: tam terimi yakalar ama "uyum süreci" yerine "compliance process" geçen dokümanı kaçırır.
Hibrit: BM25 → 8 doküman ("GDPR Madde 17" geçen). Vektör → 12 doküman (kavramsal benzer). RRF birleşir → top 5 = tam terim eşleşmesi + kavramsal benzerler bir arada. Recall %30 artar, precision korunur.
- RAG kuruyorsan — neredeyse her zaman hibrit kullan
- Domain-specific terimler var (kod, ürün isimleri, yasal/tıbbi terimler)
- Çok dilli içerik — vektör İngilizce'ye optimize, BM25 dilden bağımsız
- User query'leri çok değişken — kısa, kelime bazlı + uzun, açıklayıcı
- Çok küçük corpus (<1K doküman) — basit vektör yeter
- Pure semantic similarity gerekiyorsa (öneri, kümeleme)
- BM25 indexini bakım/güncelleme zorsa — ek karmaşıklık
Skor birleştirmeyi yanlış yapmak
Vektör skoru 0-1 arası, BM25 skoru sınırsız. Doğrudan toplamak yanlış. RRF veya min-max normalize gerekir. Pinecone/Weaviate built-in birleştirme kullan.
Ağırlık ayarını ihmal etmek
BM25 ağırlığı 0.5, vektör 0.5 default; ama domain'ine göre 0.3/0.7 daha iyi olabilir. A/B test ile öğren — 'hangi sorguda BM25, hangisinde vektör daha doğru?'
İki ayrı index = iki ayrı bakım
Doc güncellendiğinde hem BM25 hem vektör index'i güncellenmeli. Senkronizasyonu unutma — yoksa biri eski cevap, diğeri yeni cevap döner.