AI Sözlüğü
Orta· ~2 dk okuma#hybrid-search#bm25#semantic

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.

ANAHTAR KELİME + ANLAM = HİBRİT"GDPR uyum"ANAHTAR KELİME (BM25)"GDPR" geçen 12 belge✓ tam eşleşme✗ "uyum" → kaçırırANLAMSAL (VEKTÖR)"compliance" benzer 18✓ eş anlamlı yakalar✗ "GDPR" → kayarHİBRİT — birleşik skorRRF (Reciprocal Rank Fusion) skor birleştirme için standarttır
Tanım

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.

Benzetme

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ç.

Gerçek dünyadan örnek

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.

Ne zaman kullan
  • 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ı
Ne zaman kullanma
  • Ç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
Sık yapılan hatalar

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.