Sık döndüğüm üç RAG kalıbı
Her bilgi-getirme problemi vektör veritabanı istemez. Üretim ortamında karşılaştığım vakaların %80'ini çözen üç kalıba bakış.
İki yılı aşkın bir süredir kurumsal bankacılık için RAG hatları kuruyorum ve aynı üç kalıba sürekli geri döndüğümü fark ediyorum. Hiçbiri egzotik değil. Hepsi de "her şeyi göm, top-k çek, context'e tıka" yaklaşımını net bir farkla geçiyor.
1. Hibrit getirme bir optimizasyon değil, gerekliliktir
Saf dense retrieval ID'leri kaçırır. Saf BM25 ifade çeşitliliğini kaçırır. Gerçek sorular ikisinin karışımıdır: "472911 numaralı hesap Q3'te ne yaptı?" hem birebir eşleşme (hesap numarası) hem de anlamsal kavrayış (Q3 ≈ üçüncü çeyrek ≈ Temmuz–Eylül) ister.
İşe yarayan en basit hibrit: ikisini de çalıştır, skorları normalize et ve ağırlıklı topla. Türkçe bankacılık metinlerinde 0.6 dense + 0.4 lexical makul bir başlangıç oldu bizim için. Ağırlıkları küresel değil, korpus bazında ayarla.
2. Sorgu yeniden yazımını getirmeden *önce* yap, sonra değil
Kullanıcının sorusu nadiren doğru sorgudur. Zamir vardır, devam sorusudur, önceki turlardan miras varsayımlar taşır. Konuşmayı dikkate alarak soruyu kendi-içinde-tam bir sorguya yeniden yazan küçük bir LLM geçişi, dahili değerlendirmelerimizde recall'u %15–20 civarı artırıyor.
Önemli: bunu gömme öncesi yap, sonrası değil. Getirme sonrası re-ranking, embedding'in hiç görmediği belgeleri geri getiremez.
3. Context'i büyütme, isabeti büyüt
Cazibe hep daha fazlasını getirmektir. Top-20, top-50, "modele her şeyi ver." Oyuncak demolarda işe yarar, üretimde kırılır: alakasız parçalar bedava değildir — modelin bastırması gereken gürültü ekler ve dikkatin bozulduğu uçurumun ötesine alakalı içeriği iter.
Çözüm gösterişsiz: bir re-ranker. Top 30'un üzerinde cross-encoder çalıştırıyoruz → top 5'i tutuyoruz → bitti. Gecikme bedeli 100–200 ms; kalite kazancı, insanların güvendiği bir araçla artık kullanmayı bıraktıkları arasındaki farktır.
Yapmadıklarımız
- Salt-okunur Soru-Cevap için "ajansal getirme" yok. Aşırı geliyor. Ajan döngüsünü gerçekten durum gerektiren işlere sakla — çok adımlı rezervasyonlar, sistemler arası mutabakat, tek bir getirmenin cevap veremediği herhangi bir şey.
- Domain uyumsuzluğunu ölçmediysen embedder fine-tune yok. OpenAI / Cohere / Voyage gömmeleri vakaların %95'ini hallediyor. Fine-tuning bakım maliyetli uzun bir saptırmadır.
- Lexical index'i atma. Ortalamada dense daha iyi görünse bile, salt-dense ile salt-lexical'ın hata modları farklıdır. Hibrit duplikasyon değil, sigortadır.
Sıkıcı ders: RAG kalitesinin çoğu cazip olmayan kısımlardan gelir. Parçalama stratejisi, sorgu yeniden yazımı, re-ranker. Model nadiren darboğazdır.