Ünite 4 / 11

Retrieval Stratejileri: Top-k, Hybrid, Re-ranking

Kazanimlar:

  • Top-k seçimini ve semantik ile keyword aramayı birleştiren hybrid search'ü uygulamak
  • Re-ranking (yeniden sıralama) ile ilk aramanın hassasiyetini artırmak
  • Query transformation ve HyDE gibi tekniklerle zor soruları daha aranabilir hale getirmek

Dokümanları güzelce parçalayıp vektör veritabanına koydunuz. Şimdi asıl iş: kullanıcı soru sorduğunda doğru parçaları getirmek. Buna retrieval (erişim) denir ve RAG kalitesinin belkemiğidir. "Retrieval kalitesi = RAG kalitesi" cümlesini hatırlayın; bu ünite tam olarak o kaliteyi yükseltme sanatıdır. Top-k seçiminden hybrid aramaya, re-ranking'den sorgu dönüşümüne kadar pratik teknikleri işleyeceğiz.

Top-k: Kaç Parça Getireceğiz?

En temel ayar: aramadan kaç parça (k) geri getirileceği. Az getirirseniz (k=1) doğru parçayı kaçırma riski yüksektir; çok getirirseniz (k=20) modele gürültü yükler ve token maliyeti artar.

İki kavramı ayırt edin. Recall (anma): doğru parçanın getirilenler arasında olma oranı. Precision (kesinlik): getirilenlerin alakalı olma oranı. k'yi büyütmek recall'u artırır ama precision'ı düşürür. Amaç ikisini dengelemektir.

top-k

Etki

Uygun durum

1-3

Yüksek precision, kaçırma riski

Basit, tek-cevaplı sorular

4-8

Denge; çoğu senaryo

Genel kurumsal RAG

10-20

Yüksek recall, gürültü artar

Re-ranking ile birlikte (aşağıda)

İpucu: Yaygın ve güçlü desen: geniş getir (k=20), sonra re-ranking ile daralt (en iyi 4). Böylece hem kaçırmazsınız hem de modele temiz bağlam verirsiniz.

Hybrid Search: İki Aramanın Gücü

Semantik (vektör) arama anlamı yakalar ama bazı şeyleri kaçırır: tam ürün kodu ("XR-4471"), nadir kısaltma, özel isim, sürüm numarası. Bu tam-eşleşme işlerinde eski usul keyword (anahtar kelime) araması — özellikle BM25 denen klasik algoritma — çok iyidir.

Hybrid search, bu ikisini birleştirir: hem semantik hem keyword araması çalışır, sonuçları birleştirir. Böylece "XR-4471 modelinin garanti süresi" gibi bir soruda hem "XR-4471"i birebir bulan keyword araması hem de "garanti süresi" anlamını yakalayan semantik arama devreye girer.

Birleştirme genelde RRF (Reciprocal Rank Fusion, karşılıklı sıra füzyonu) ile yapılır: iki listede de üst sıralarda olan parça öne çıkar.

# Hybrid retrieval (kavramsal)sem = vektor_ara(soru, k=20) # anlamkey = bm25_ara(soru, k=20) # tam kelimesonuc = rrf_birlestir(sem, key)[:8] # ikisini kaynaştır, ilk 8

Re-ranking: İkinci ve Daha Akıllı Geçiş

İlk arama hızlı ama kaba olabilir. Re-ranking (yeniden sıralama), ilk aramanın getirdiği adayları daha güçlü bir modelle (genelde bir cross-encoder — soru ve parçayı birlikte okuyup alakayı puanlayan model) tek tek puanlayıp en alakalıları üste taşır.

Mantık şu: ilk arama recall için geniş atar (20 aday), re-ranker precision için en iyi 4'ü seçer. Bu iki aşamalı yaklaşım, tek aşamalı aramadan çok daha isabetlidir. Maliyeti biraz gecikme ve ek işlem; kazancı belirgin kalite artışıdır.

# İki aşamalı retrieval (kavramsal)adaylar = hybrid_ara(soru, k=20) # geniş, hızlıpuanli = reranker.puanla(soru, adaylar) # her aday için alaka puanıbaglam = puanli.sirala()[:4] # en iyi 4

Sorguyu Dönüştürmek

Bazen sorun aramada değil, sorunun kendisindedir. Kullanıcı "peki ya uzaktan çalışanlar?" diye sorarsa, bu tek başına aranamaz (neyin uzaktan çalışanlar için olduğu belli değil). İşte query transformation (sorgu dönüşümü) teknikleri:

  • Yeniden yazma (rewriting): Konuşma geçmişini kullanarak soruyu bağımsız hâle getir: "Uzaktan çalışanların yıllık izin hakkı nedir?"
  • Çoklu sorgu (multi-query): Aynı sorunun 3 farklı ifadesini üret, hepsiyle ara, sonuçları birleştir. Farklı kelimeler farklı parçalar bulur.
  • HyDE (Hypothetical Document Embeddings): Modele önce "olası bir cevap" yazdır, sonra o hayali cevabı embed edip ara. Hayali cevap, gerçek dokümana kelime olarak daha yakın olduğu için bazen daha iyi bulur.

# Multi-query (kavramsal)varyantlar = model.uret("Bu soruyu 3 farklı şekilde ifade et: " + soru)tum_sonuc = []for v in varyantlar: tum_sonuc += vektor_ara(v, k=6)baglam = tekille_ve_sirala(tum_sonuc)[:6]

Zayıf Retrieval / Güçlü Retrieval

Zayıf (tek aşamalı, sadece semantik, sabit k=3):

sonuc = vektor_ara(soru, k=3)# Sorun: ürün kodu kaçar, zor sorularda doğru parça 3'e giremez.

Güçlü (hybrid + geniş k + re-ranking + gerekirse multi-query):

adaylar = hybrid_ara(rewrite(soru, gecmis), k=20)baglam = reranker.puanla(soru, adaylar).ilk(4)# Hem tam eşleşme hem anlam yakalanır; en iyi 4 modele gider.

Üç Mini Vaka

Vaka 1 — Ürün kodu kaçtı. Bir destek ekibinde saf semantik arama, "RTX-9080 sürücü hatası" sorusunda "RTX-9080"i birebir bulamıyordu; benzer isimli başka ürünleri getiriyordu. Hybrid search eklenince tam kod eşleşmesi geldi ve doğru makale getirme oranı %58'den %92'ye çıktı.

Vaka 2 — Re-ranking farkı. Bir hukuk asistanı k=5 ile çalışıyordu ama doğru madde çoğu zaman 7-10. sıralarda kalıyordu. k=20 + re-ranking'e geçilince doğru maddenin ilk 3'e girme oranı %61'den %94'e çıktı; gecikme sadece 300 ms arttı — kabul edilebilir bir ödün.

Vaka 3 — Bağlamsız takip sorusu. Bir İK asistanında kullanıcı "ya yarı zamanlılar?" diye sorunca sistem alakasız parçalar getiriyordu. Sorgu yeniden yazma (geçmişten "yıllık izin" bağlamını çekip "Yarı zamanlı çalışanların yıllık izin hakkı") eklenince doğru cevap oranı %40'tan %86'ya çıktı.

Sık yapılan hatalar

  • Sadece semantik aramaya güvenmek: Ürün kodu, kısaltma, özel isim kaçar; hybrid ekleyin.
  • k'yi çok küçük tutmak: Doğru parça listeye giremez; geniş getirip re-rank ile daraltın.
  • Re-ranking'i hiç düşünmemek: İlk arama kaba; ikinci akıllı geçiş kaliteyi belirgin artırır.
  • Takip sorularını olduğu gibi aramak: Bağlamsız soru anlamsız arar; yeniden yazın.
  • k'yi kör büyütmek (re-rank yokken): Modele gürültü dolar, cevap bozulur ve maliyet artar.
Dikkat: Her teknik maliyet ve gecikme ekler. Multi-query 3 kat arama, re-ranking ek model çağrısı demektir. Önce basit hybrid + makul k ile başlayın; ölçüp gerçekten gerektiği yerde ağır teknikleri ekleyin. Ölçmeden ekleme.

Özetle

  • Top-k, recall (kaçırmama) ile precision (temizlik) arasındaki dengedir; genelde 4-8 iyi başlangıçtır.
  • Hybrid search, semantik aramayı keyword (BM25) aramasıyla birleştirir; tam eşleşmeleri kurtarır.
  • Re-ranking, geniş ilk aramanın adaylarını güçlü bir modelle yeniden puanlayıp en iyileri seçer.
  • Query transformation (rewriting, multi-query, HyDE) zor ve bağlamsız soruları aranabilir hâle getirir.
  • Güçlü desen: geniş getir → hybrid'le birleştir → re-rank ile daralt; ama her tekniği ölçerek ekleyin.

Uygulama görevi

Önceki ünitelerin verisiyle 6 zor soru hazırlayın: en az 2'si tam eşleşme gerektiren (ürün kodu, kısaltma, tarih), 2'si anlamsal (farklı kelimelerle aynı konu), 2'si bağlamsız takip sorusu. (1) Her soruyu önce saf semantik arama gibi düşünüp elle hangi parçaların geleceğini işaretleyin. (2) Aynı soruları hybrid ve re-ranking eklenmiş gibi yeniden değerlendirin. (3) Bağlamsız takip sorularını yeniden yazın. Hangi tekniğin hangi soru tipinde fark yarattığını tablo hâlinde not edin.

Kontrol listesi

  • [ ] Top-k'nin recall-precision dengesi olduğunu ve makul bir başlangıç aralığını biliyorum.
  • [ ] Hybrid search'ün neden tam eşleşmeleri kurtardığını açıklayabiliyorum.
  • [ ] Re-ranking'in iki aşamalı (geniş getir → akıllı daralt) mantığını uygulayabiliyorum.
  • [ ] Bağlamsız takip sorularını yeniden yazma ihtiyacını tanıyorum.
  • [ ] Ağır teknikleri ölçmeden değil, ölçerek eklediğimi doğruluyorum.