RAG'de chunking stratejisi, hybrid search ve reranker neden önemlidir? Retrieval kalitesi düşükse ne yaparsınız?
Cevap
RAG sistemlerinde kötü cevapların çoğu LLM'den değil retrieval'dan kaynaklanır: doğru bilgi bağlama hiç gelmemiştir. Bu üç bileşen retrieval kalitesinin ana kaldıraçlarıdır.
Chunking
- Çok küçük chunk: Bağlam kopar ("Bu oran %5'tir" ama hangi oran?).
- Çok büyük chunk: Embedding birden çok konuyu ortalar, ilgisiz metin bağlamı doldurur.
- Stratejiler: Sabit boyut + overlap (basit baseline), yapısal (başlık, paragraf, kod bloğu sınırları), semantik (cümle embedding'lerindeki kopuşlara göre), parent-child (küçük chunk ile ara, büyük ebeveyn bölümü bağlama ver), chunk'a doküman başlığı/özet ekleme (contextual retrieval).
Hybrid search
| Yöntem | Güçlü olduğu | Zayıf olduğu |
|---|---|---|
| Dense (embedding) | Eş anlamlılar, farklı ifadeler | Ürün kodu, isim, nadir terim |
| Sparse (BM25) | Tam kelime eşleşmesi, kodlar | Anlamsal benzerlik |
| Hybrid (RRF ile birleşim) | İkisinin avantajı | Ek altyapı |
Reranker
Bi-encoder embedding'ler soru ve dokümanı ayrı ayrı kodlar, hızlıdır ama kaba sıralar. Cross-encoder reranker soru ve chunk'ı birlikte işler, çok daha doğru bir alaka skoru üretir. Ancak yavaştır, bu yüzden sadece ilk 20–100 adaya uygulanır. Genelde en yüksek getirili iyileştirmelerden biridir.
Retrieval kötüyse teşhis adımları
- Golden set ile recall@k ölç: doğru chunk ilk 20'de mi?
- Recall düşükse: chunking, embedding modeli (Türkçe performansı), hybrid search, query rewriting, HyDE (önce varsayımsal bir cevap üretip onunla aramak).
- Recall yüksek ama cevap kötüyse: reranker, daha az ama daha alakalı chunk, prompt.
- "Lost in the middle": Uzun bağlamda ortadaki bilgi kaçabilir. En alakalı chunk'ları başa veya sona yerleştirin.
- Metadata filtreleri (tarih, ürün, departman) arama uzayını daraltır.
def rrf(rankings, k=60):
scores = {}
for ranking in rankings: # her biri doc_id listesi
for rank, doc in enumerate(ranking):
scores[doc] = scores.get(doc, 0) + 1 / (k + rank + 1)
return sorted(scores, key=scores.get, reverse=True)İlgili LLM & Üretken YZ soruları
- Şirket içi dokümanlar (Confluence, PDF, wiki) üzerinde soru cevaplayan bir RAG sistemi tasarlayın.
- Hangi prompt engineering tekniklerini kullanırsınız? Few-shot ve chain-of-thought ne zaman işe yarar?
- LLM'lerde temperature, top-k ve top-p (nucleus) sampling parametreleri ne işe yarar?
- Production'daki bir LLM uygulamasında maliyeti ve gecikmeyi (latency) nasıl düşürürsünüz?
- Prompt injection nedir? LLM tabanlı bir uygulamayı ve agent'ı buna karşı nasıl korursunuz?
- Bir LLM uygulamasını nasıl değerlendirirsiniz? Benchmark'lar ve LLM-as-judge yaklaşımının sınırlamaları nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.