29  Ajan Tabanlı RAG

Bölüm durumu: çevrildi. Kaynak metin: İngilizce 29. bölüm. Birkaç dakikada çalışan küçük bir ölçüm: 660 gerçek Türkçe habere uydurma olgular ekilerek kurulan bir derlem üzerinde iki adımlı (two-hop: cevabı iki ayrı belgedeki bağlantılı bilgiye dayanan) sorular; karşılaştırma baştan bölümün konusunu kayırmasın diye yanında tek adımlı bir kontrol kümesi. Sabit hat Bölüm 20’nin, döngü ise Bölüm 23’ün konusuydu; bu bölüm birini ötekinin içine koyduğunuzda ne olduğunu anlatıyor. Yazılım: ollama 0.24.0 üzerinden qwen3.5:9b, snowballstemmer 3.1.1, NumPy 2.5.2, Python 3.14.5.

Öğrenme hedefleri. Bu bölümün sonunda:

29.1 Hattan politikaya

Bölüm 20’nin hattı bir kez erişir, sonra üretir. Her tasarım kararını — neye, ne kadarına, nereden erişileceğini — kurma anında siz verirsiniz ve her istekte aynı şey olur. Bu öngörülebilirlik bir artıdır; hattın doğru varsayılan seçim olmasının nedeni de budur.

Ajan tabanlı RAG (agentic RAG) tek bir kararı kurma anından çalışma anına taşır: erişim, modelin gerekli gördüğü kadar çağırdığı bir araç hâline gelir. Retriever (ilgili belgeleri bulup getiren arama bileşeni) Bölüm 20’nin hattındaki beşinci aşama olmaktan çıkar ve Bölüm 23’ün terimleriyle araç listesinde bir madde olur.

Bunun kazandırdığı üç şey:

  • İlk sorgunun içeremeyeceği ikinci bir sorgu. Bütün gerekçe budur ve Bölüm 29.2 onu ölçüyor.
  • Bir yeterlilik yargısı. Cevaplamak için yeterli bilgim var mı? sorusu bir varsayım olmaktan çıkar, açık bir adım hâline gelir.
  • Bir kaynak seçimi. Birden fazla indeks varsa hangisine sorulacağı, sorgunun kendisine bakılarak verilebilecek bir karardır.

Bedeli, çalışma anı kararlarının her zaman ödettiği bedeldir; Bölüm 23 bunu hesaplamıştı: öngörülebilirlik ve hata ayıklama kolaylığı kaybedilir, fatura değişken olur ve döngünün sonlanması bir koşula değil, bir model yargısına bağlanır.

Neye bakacağız. Önce sabit bir hattın yapısal olarak cevaplayamadığı tek soru biçimine ve bu başarısızlığın ne kadar büyük olduğunu gösteren ölçüme bakacağız; yanında, hattın zaten yeterli olduğu durumda döngünün neye mal olduğunu gösteren bir kontrol olacak. Sonra ikinci sorguyu elde etmenin iki yolunu, aralarında seçim yapma kuralını ve literatürde karşılaşacağınız adlandırılmış tasarımları (Self-RAG ve diğerleri) göreceğiz. Ardından birden fazla indeks olduğunda ne olduğuna geçeceğiz; burada akla ilk gelen çözümün kaybettiğini Bölüm 19 zaten ölçmüştü. Sonra çıkış kararını modelin verdiği bir döngünün nasıl durdurulacağını ele alacağız. Son olarak da iki mimariyi, farkında olmadan yalnızca mimarinin kendisi için tasarlandığı durumu ölçme tuzağına düşmeden nasıl karşılaştıracağımızı göreceğiz.

29.2 Klasik RAG’in tırmanamadığı tavan

Bu bölümdeki her şeyi belirleyen soru biçimi şu:

  [belge 1]  ZRG-14'ün ardılı olan projeye KVT-22 adı verildi.
  [belge 2]  KVT-22'nin onaylanmış bütçesi 4.382 liradır.

  soru       ZRG-14'ün ardılı olan projenin bütçesi nedir?

Soruda ZRG-14 var. KVT-22 ise yok, çünkü soran onu bilmiyor; zaten sorduğu şey bu.

Devam etmeden önce birkaç terim. Bir belgeden ötekine geçen her adıma hop (adım) denir; bu yüzden bu soru iki adımlı (two-hop) bir sorudur, iki ya da daha fazla böyle adım gerektiren sorulara da çok adımlı (multi-hop) denir. İki belgeyi birbirine bağlayan ad olan KVT-22 ise köprü varlıktır (bridge entity): hem ilk adımın cevabı hem de ikinci adımın arama anahtarıdır.

Yani bu sorguyu alan bir retriever 1. belgeyi kolayca buluyor, ama sorguda 2. belgeyi öteki bütçe belgelerinden ayıracak hiçbir şey yok: ikinci belgeyi getirmek için gereken terim yalnızca birincinin içinde vardır. Bu bir imkânsızlık kanıtı değil, güçlü bir dezavantajdır: 2. belge başka bir ortak terim sayesinde, iki projeyi vektör uzayında birbirine yakın koyan yoğun (dense) bir retriever’la, daha büyük bir k ile ya da çifti önceden bağlamış veya birleştirmiş bir indeksle yine de sonuçlara girebilir. Sorgunun yapamadığı şey, ikinci ihtiyacı ifade etmek.

Sorun zayıf bir retriever değil. Bölüm 19’un ölçümleri burada işe yaramaz, çünkü mesele sıralama değil; mesele, tek bir sorgunun bilgi ihtiyacını ifade edememesi. Bu, tek sorguya özgü yapısal bir tavandır.

Bu tavanın neyi elediğine dikkat edin, çünkü göründüğünden azını eliyor: sabit bir hattı değil, yalnızca tek bir erişimi. Bu örneği, içinde hiçbir model yargısı olmayan sabit bir hatla da çözebilirsiniz: eriş, gelen belgelerden adlandırılmış varlıkları çıkar, o varlıklarla yeniden eriş, üret. İki erişim, iki model çağrısı, belirlenimci maliyet, garantili sonlanma; döngü yok. Buna köprü varlık üzerinden sorgu ayrıştırma (query decomposition) denir ve aşağıda ölçtüğümüz klasik RAG ile ajan döngüsü arasındaki seçimin dışında kalan gerçek bir üçüncü seçenektir. Dolayısıyla devamını “tek sorgu yetmez” diye okuyun, “döngü şart” diye değil.

Köprüyü indeks tarafında kurmak da mümkündür. GraphRAG gibi bilgi çizgesi (knowledge graph) yaklaşımları (Edge vd., 2024) varlıkları ve aralarındaki ilişkileri indeksleme anında bir LLM ile çıkarıp bir çizgeye yazar; ZRG-14 → KVT-22 bağı böylece soru gelmeden kurulmuş olur. Bu, ajan döngüsünün yerine geçen bir yöntem değil, köprüleme işini çalışma anından indeksleme anına taşıyan ayrı bir ödünleşimdir (trade-off): sorgu anındaki iş azalır, ama indeksleme pahalanır ve çizgenin derlemle birlikte güncel tutulması gerekir. Bu bölüm onu ölçmüyor; yukarıda sayılan “çifti önceden bağlamış bir indeks” seçeneğinin en bilinen örneği olarak aklınızda tutun.

29.2.1 Ölçüm

Tam da bu biçimde 30 iki adımlı soru; olgular 660 gerçek Türkçe haber belgesinin arasına ekilmiş. Yanlarında, sorunun anahtarı içerdiği 30 tek adımlı kontrol sorusu var; çünkü yalnızca konusunun kazandığı durumu ölçen bir bölüm gerçekte ölçüm yapmış olmaz.

Kurulum iki sistemde de aynı: retriever, Snowball ile gövdelenmiş Türkçe metinler üzerinde NumPy ile yazılmış bir BM25 indeksi (Bölüm 29.9); her erişim modele ilk üç belgeyi (top-3) verir; model iki koşulda da qwen3.5:9b. Klasik hat bir kez erişip üretir; ajan tabanlı sistem aynı retriever’ı bir araç olarak çağırır ve bütçesi üç turdur.

Aşağıdaki blok ölçüm çıktısıdır ve başlıkları İngilizce kaldı: her satır bir hücredir (soru türü × sistem); sütunlar sırasıyla soru türü (1-hop tek adımlı, 2-hop iki adımlı), sistem (classic klasik, agentic ajan tabanlı), doğruluk, %95 güven aralığı ve istek başına ortalama token sayısıdır.

qwen3.5:9b, 30 questions per cell, 660 documents, top-3 retrieval

 question    system   accuracy   95% CI          tokens
    1-hop   classic     100.0%   [88.6, 100.0]      155
    1-hop   agentic     100.0%   [88.6, 100.0]      179
    2-hop   classic       0.0%   [ 0.0,  11.4]      158
    2-hop   agentic      30.0%   [16.7,  47.9]    1,043

Bu ölçüm neyi göstermez. Tur sayısını: tablodan bir tur (rounds) sütunu çıkarıldı. Bir tur, bir kez erişip sonra yargılama döngüsüdür ve bütçe üç turdur; oysa ajan tabanlı iki adımlı hücrede kaydedilen ortalama 3,43’tü. Ya sınır erişim turlarına değil model çağrılarına uygulandı ya da sayaç hatalıydı; hangisi olduğunu gösterecek koşu log’ları saklanmadı. Kendi sınırını aşan bir sayı ölçüm değildir. İki çekince daha var: ikinci belgenin sırası kaydedilmedi (aşağıda neden önemli olduğu anlatılıyor) ve hücre başına otuz soruyla aralıklar geniştir.

Bu deneyde yineleme yalnızca iki adımlı kümede işe yaradı
SİSTEM DOĞRULUK (HÜCRE BAŞINA 30 SORU) İSTEK BAŞINA TOKEN TEK ADIM — gerçek trafiğe hâkim olan durum klasik %100,0 155 ajan tabanlı %100,0 179 İKİ ADIM — mimarinin var olma nedeni klasik %0,0 158 ajan tabanlı %30,0 1.043 %0 %50 %100 bıyıklar %95 güven aralıklarıdır KALDIRILMIŞ BİR TAVAN, AŞILMIŞ BİR TAVAN DEĞİLDİR kazandığı durumda 6,6× token, trafiğin çoğunu oluşturan durumda 1,15×

İki adımlı klasik çubuğun hiç uzunluğu yok (30 soruda 0 doğru) ve aralığı yalnızca %11,4’e ulaşıyor; yani gerçek oran ne olursa olsun küçüktür. Ajan tabanlı iki adımlı aralığın ne kadar geniş olduğuna dikkat edin: otuz soru gerçek değeri %16,7 ile %47,9 arasında bir yere koyuyor. Bu, tavanın yerinden oynadığını göstermeye yetiyor, ama sisteme kullanılabilir demeye yetmiyor.

Sonuçlar üç biçimde okunabilir; asıl tartışılması gereken üçüncüsü.

Bu hat hiçbirini cevaplamadı. Klasik RAG iki adımlı sorularda 30’da 0 aldı; hem de aynı olguların tek adımlı sürümlerinde %100 alan bir retriever’la. Bunu bu hattın ölçülmüş oranı olarak okuyun, klasik RAG için genel olarak kanıtlanmış bir sıfır olarak değil: 0/30’un %95 Wilson üst sınırı %11,4’tür ve farklı bir retriever, daha büyük bir k ya da ilişkili belgeleri önceden bağlamış bir indeks başka bir deneydir. İnsanlar bir RAG sisteminin “çok adımlı soruları kaldıramadığını” söylediğinde kastettikleri başarısızlık tam olarak budur.

Bu deneyin yapması gerekirken yapmadığı bir kontrol var: ikinci altın belgenin sırası (altın belge, gold document: cevabın dayandığı, önceden bilinen doğru belge). Sıfır sonucun iki olası nedeni var ve ikisinin sonuçları farklı. İkinci belge ilk üçe (top-3) hiç girmediyse kusur erişimdedir ve aynı ilk üç aday üzerinde çalışan hiçbir yeniden sıralayıcı bunu çözmez; yukarıdaki okuma budur. Bazen girdiyse ve model onu yine de 1. belgeyle birleştiremediyse kusur toplamadadır (aggregation: farklı belgelerdeki kanıtları birleştirme); yeniden sıralayıcı bu kez başka bir nedenle işe yaramaz ve o zaman sonucu anlatan cümle de değişir: sorun erişimde değil, toplamadadır. Okurdan bu kontrolü 2. alıştırma istiyor; bölümün de bunu yapması gerekir. Yapılana kadar “yapısal” açıklamayı kanıtlanmış değil, olası açıklama olarak okuyun.

Tek adımlı sorularda döngü hiçbir şey kazandırmıyor ve 1,15 kata mal oluyor. Doğruluk birebir aynı; buna karşılık her seferinde “yeterli” cevabı dönen bir yeterlilik kontrolü için %15 daha fazla token harcanıyor (155’e karşı 179). Çoğu uygulamada soruların büyük kısmı tek adımlıdır (kendi oranınızı labın ilk adımında ölçeceksiniz); dolayısıyla gerçek bir iş yüküne genellikle hâkim olan durum budur ve mimarinin katıksız ek yük olduğu durum da budur.

Tavanı kaldırmak, görevi güvenilir biçimde çözmek demek değildir. Ajan tabanlı erişim %0’dan %30’a çıktı. Bu, gözlenen sıfır düzeyinden 30 yüzde puanlık bir kazançtır (sıfırdan başlandığı için göreli kazanç sonsuz değil, tanımsızdır); ama ortaya çıkan sistem hâlâ her on sorunun yedisinde yanılıyor. O hücrede 6,6 kat token harcandı. Doğru cevap başına bu yaklaşık 3.475 token eder; karşısındaki klasik hat ise hangi fiyata olursa olsun doğru cevap üretmiyor.

Ajan tabanlı RAG tavanı kaldırdı. Çalışan bir sistem teslim etmedi. Döngü artık ikinci sorguyu ifade edebiliyor; ama model sıklıkla onu kuramıyor ya da geleni kullanamıyor. Bu da Bölüm 23’ün bulgusunun tekrarı: orada araç kullanımı kusursuzdu, toplama değildi.

Küçük ölçüm, tek model, hücre başına otuz soru, aralıklar ±15 puan civarında. Ortaya koyduğu şey sıralama ve genel biçimdir: tek atışlık hat iki adımlı sorularda 0/30 aldı, yineleme bunu yükseltiyor, maliyet katlanıyor ve tek adımlı kontrolde döngü kaybediyor. Daha büyük bir model büyük olasılıkla %30’dan yüksek alırdı. Maliyet ve tek adımlı kontrol bulguları değişmezdi, çünkü ikisi de model yeteneğiyle ilgili değil. Henüz yapılmamış sıra kontrolü ikinci belgenin ilk üçe hiç girmediğini gösterirse sıfır da geçerliliğini korur.

29.2.2 Kuracağınız sistem için anlamı

Buradan çıkan öneri bir mimari değil, bir yönlendiricidir (router: her soruyu uygun yola, klasik hatta ya da döngüye gönderen bileşen):

  • Varsayılan olarak klasik hattı kullanın. Soruların çoğunluğunda, maliyette, gecikmede ve hata ayıklama kolaylığında o kazanıyor.
  • Yineleme gerektiren soruları saptayın — cevabı, sorunun içermediği bir anahtara bağlı olanları — ve yalnızca onları döngüye yönlendirin.
  • Kendi karışımınızı ölçün ve sayılara inanmadan önce harmanlayın, yani her soru türünün sonucunu trafikteki payıyla ağırlıklandırıp ortalayın. 6,6 kat, iki adımlı hücrenin çarpanıdır; faturanızın değil. Trafiğin %5’i iki adımlıysa tümüyle ajan tabanlı bir mimari istek başına 0,95 × 179 + 0,05 × 1.043 ≈ 222 token’a mal olur; klasik hat ise ≈ 155 token harcar. Harmanlanmış oran 1,43 kattır; karşılığında genel doğruluk 1,5 puan artar. İki adımlı pay %20 ise ≈ 352 token, harmanlanmış 2,26 kat ve +6 puan. Hücre çarpanı mimariyi satan sayıdır; harmanlanmış olan ise ödediğiniz sayıdır.
  • Sonra yönlendiriciye ihtiyacınız olup olmadığını kontrol edin. Bu ölçümde döngü büyük ölçüde kendi kendini yönlendirdi: tek adımlı sorularda hattan yalnızca 24 token fazla harcadı; bu, ikinci sorguyu nadiren ya da hiç göndermeyen bir döngüyle uyumlu. (Tablodan çıkarılan tur sayacı orada 1,00 tur kaydetmişti, ama o sayaca güvenilmiyor.) Kusursuz bir yönlendiricinin kazandırabileceği de bu 24 token’dır — %5’lik bir karışımda harmanlanmış faturanın yaklaşık %10’u (222 token’ın 0,95 × 24 ≈ 23’ü), üstelik birebir aynı doğruluk için.

Yani burada yönlendirmenin gerekçesi maliyet değil; gecikme, hata ayıklama kolaylığı ve kuyruk varyansıdır (en pahalı isteklerin ortalamadan ne kadar saptığı). Kusurlu bir sınıflandırıcı ise doğrulukta yalnızca kaybettirebilir: yanlışlıkla klasik hatta gönderilen iki adımlı soruların beklenen doğruluğu %30 değil sıfırdır; bu yüzden sınıflandırıcının hataları, küçük token tasarrufunun değerinden pahalıya patlayabilir.

29.3 Planlama ve ne zaman atlanacağı

İkinci sorguyu elde etmenin iki yolu var ve farklı davranıyorlar.

Önce planla. Hiçbir şeye erişmeden önce soruyu alt sorulara ayırın: ZRG-14’ün ardılı hangi proje ve o projenin bütçesi ne. Alt sorgular önceden yazılabildiğinde bu temiz bir yoldur. İki adımlı örnek ise sorunlu durumdur: iki alt soru yazılabilir, ama ikincisinin arama sorgusu yazılamaz, çünkü KVT-22’ye ihtiyaç duyar ve onu yalnızca ilk cevap verir. İçinde değişken olan bir plan (<1. cevabın> bütçesi) bunu halleder, yeter ki değişkeni çalışma anında dolduran bir şey olsun; sabit dizgilerden oluşan bir plan halledemez.

Eriş, sonra karar ver. Erişin, bakın ve cevap orada değilse başka bir sorgu gönderin. Bu, mimariyi motive eden bağımlı durumu halleder. Sonlanmama riski taşıyan döngü de budur.

İki yol yan yana, aynı örnek üzerinde:

  önce planla (değişkenli):  a = ardili_bul("ZRG-14");  butceyi_getir(a)
  eriş, sonra karar ver:     eriş("ZRG-14 ardılı")  → KVT-22 görüldü
                             eriş("KVT-22 bütçe")   → 4.382 lira → cevapla

Buradan çıkan kural: alt sorular bağımsızsa planlayın, bağımlıysa yineleyin. Bağımsız alt sorular aynı zamanda paralel çalıştırmaya değer olanlardır; bu da Bölüm 28’in okuma ağırlıklı durumu, yani işi paralel kollara dağıtmanın (fan-out) gerçekten kazandırdığı durumdur.

29.3.1 İlginç adım yeterliliktir

Döngünün cevaplamak için yeterli bilgim var mı? sorusunu cevaplaması gerekir ve ajan tabanlı RAG en çok burada kırılgandır. Bölüm 23 problemin genel sürümünü ölçtü: döngünün çıkışı kontrol edilmiş bir koşul değil, bir model tahminidir; metin protokolüyle çalışan döngü, cevabı çoktan getirmiş olmasına rağmen tek adımlı görevlerin %60’ında sonlanamadı.

Yargıyı daha güvenilir kılması beklenen iki tasarım tercihi var ve hiçbiri aynı sorunun daha özenle ifade edilmiş bir sürümü değil. (İkisi de bu bölümde ölçülmedi; ilki Bölüm 23’ün sonucuna dayanıyor.)

  • “Cevapla” ile “yine ara”yı yapısal olarak farklı eylemler hâline getirin. Bölüm 18 ve Bölüm 23’te gördüğümüz gibi: aynı çıktıda yarışan iki dizgi olarak değil, biri araç çağrısı, öteki düz içerik olarak.
  • Bir yargı değil, eksik anahtarı isteyin. Hâlâ neye ihtiyacın var? erişilebilir bir terim üretir. Yeterli bilgin var mı? çoğu zaman bir “evet” üretir. İlki aynı zamanda bir tür sorgu yeniden yazmadır (query rewriting): model, kullanıcının sözcüklerini yeniden göndermek yerine gördüğü boşluğu bir sonraki arama sorgusuna çevirir.

29.3.2 Literatürde karşılaşacağınız adlandırılmış tasarımlar

Literatür bu hamlelerin çoğuna ad vermiştir; okumaya başlamadan önce onları bu bölümün kavramlarıyla eşleştirmek işinizi kolaylaştırır.

  • Self-RAG (Asai vd. 2024), modelin kendisini özel yansıtma token’ları (reflection tokens) üretecek biçimde eğitir: biri o noktada erişim yapılıp yapılmayacağını söyler, diğerleri erişilen pasajın ilgili olup olmadığını, üretilen metnin o pasajca desteklenip desteklenmediğini ve işe yarayıp yaramadığını puanlar. Bu bölümün döngüsünün hiç vermediği bir kararı ekler: erişimi tamamen atlamak. Bunun için bir prompt (istem) yetmez; modelin fine-tuning (ince ayar) ile eğitilmesi gerekir.
  • Düzeltici RAG (Corrective RAG, CRAG) (Yan vd., 2024) retriever’ın çıkışına küçük, eğitilmiş bir değerlendirici koyar. Erişilen belgeler yanlış görünüyorsa web aramasına başvurur; tuttuğu belgeleri de süzer. Bu, üreticinin değil ayrı bir modelin yaptığı bir yeterlilik kontrolüdür.
  • IRCoT (Trivedi vd., 2023) adım adım akıl yürütmenin bir cümlesini ve bir erişimi sırayla, dönüşümlü olarak yürütür ve her yeni cümleyi bir sonraki sorgu olarak kullanır: çok adımlı sorular için kurulmuş, en ince taneli hâliyle “eriş, sonra karar ver” döngüsü.
  • Adaptive-RAG (Jeong vd., 2024) soru karmaşıklığını tahmin eden küçük bir sınıflandırıcı eğitir ve her soruyu erişimsiz cevaba, tek adımlı erişime ya da yinelemeli bir döngüye yönlendirir: yukarıda önerilen yönlendiricinin yayımlanmış bir tasarımı.

Hiçbiri bu bölümün hesabını değiştirmez: her biri, trafiğinizde yer kazanmadan önce Bölüm 29.6’daki tür bazında doğruluk ve doğru cevap başına token karşılaştırmasından geçmek zorundadır.

29.4 Kaynaklar arası yönlendirme

Şimdiye kadarki her şey tek bir indeks varsaydı. Döngünün kazandırdığı üçüncü şey bir kaynak seçimiydi; ama seçim ancak birden fazla kaynak olduğunda anlam kazanır.

Birden fazla kaynak olduğunda — bir belge deposu, bir destek talebi (ticket) sistemi, bir kod deposu, bir veritabanı — hangisine sorulacağı bir karara dönüşür ve bu kararı vermenin üç yolu vardır.

Birkaç kaynağı ele almanın üç yolu
yaklaşım nasıl işler ne zaman uyar
Her şeyi ara, birleştir bütün kaynakları sorgula, sonuçları kaynaştır az sayıda kaynak, benzer içerik. Ama Bölüm 19 saf birleştirmenin neye mal olabileceğini ölçtü: kalitesi farklı iki retriever’ı ağırlıksız sıra tersine dayalı birleştirmeyle (RRF) kaynaştırmak, daha iyi olana karşı iki koşulda 32,8 ve 46,8 recall@1 puanı kaybettirdi (recall@1: doğru belgenin ilk sırada gelme oranı); aynı birleştirme recall@10’da ise neredeyse hiç zarar vermedi (ölçüldüğü koşulda %99,9’a karşı %99,6), yani modele birkaç parça veren bir hatta zararın boyutu ilk sıranın ne kadar önemli olduğuna bağlıdır. O ölçüm birkaç kaynak değil, tek derlem üzerinde iki retriever’dı; ama ders buraya da taşınır: girdilerden biri çok daha iyiyse eşit ağırlıklı birleştirme zarar verir
Bir kez yönlendir bir sınıflandırıcı ya da model kaynağı seçer, sonra erişir öngörülebilir ve ucuz; kaynaklar açıkça farklıysa doğru varsayılan
Ajan seçsin her kaynak, kendi açıklamasıyla bir araçtır gerçekten karışık ihtiyaçlar; işe yarayıp yaramayacağını Bölüm 24’ün kuralları belirler, çünkü modele her kaynağın ne zaman uygun olduğunu söyleyen şey araç açıklamasıdır

Kaynaklar birleştirilince kolayca gözden kaçan bir nokta var: hepsi aynı derecede güvenilir değildir. Bir iç politika belgesiyle web’den otomatik toplanmış (scrape edilmiş) bir sayfa birbirinin yerine geçebilecek kanıtlar değildir; içerikleri tek bir bağlamda art arda eklendiğinde bu ayrım kaybolur.

Bu yüzden erişilen her parçanın provenance’ını (nereden ve ne zaman geldiğini) saklayın, modele iletin ve cevapta belirtilmesini zorunlu kılın; örneğin her parçanın başına [kaynak: iç politika · 2025-03-12 · güven: yüksek] gibi kısa bir etiket koymak yeter. Bu, Bölüm 26’daki provenance argümanının başka bir sistemde karşımıza çıkmasıdır.

29.5 Döngüyü sınırlamak

Çıkış kararını modelin verdiği bir erişim döngüsünün dışarıdan sınırlanması gerekir ve bu bir ayar ayrıntısı değildir: Bölüm 23’teki adım bütçesi, tam da onsuz döngü sınırsız kalacağı için mimarinin bir parçasıdır.

Dört sınır var ve hepsi ucuz; en sık atlanan ise dördüncüsü:

  • Bir tur sınırı. İki ya da üç. Cevap ortaya çıkmadıysa daha fazla tur onu nadiren bulur, ama maliyeti her seferinde artırır.
  • Bütün istek için bir token bütçesi. Turlar arasında kontrol edilir. Sizi kötü bir ortalamadan değil, tek bir patolojik sorudan koruyan sınır budur.
  • Bir tekrar kontrolü. Bir sorgu döngünün zaten gönderdiği bir sorguysa durun. Bölüm 23, cevabı 0. adımdan beri elinde olan bir döngünün aynı çağrıyı bütçesi bitene kadar yeniden gönderdiğini gözlemledi.
  • Bir cevap eşiği (floor on the answer), yani bir çekimserlik (abstention) kuralı. İki durumda sistem cevap vermez, açıkça “bulunamadı” der: kanıt belli bir eşiğin altındaysa ya da sınıra cevapsız ulaşıldıysa. Bütçesini tüketip yine de cevaplayan bir döngü, saptanabilir bir kusuru saptanamaz bir kusura çevirmiştir.

29.6 Birini diğerine karşı değerlendirmek

Yukarıdaki sınırlar döngünün maliyetini bütçe içinde tutar. Bu alt bölüm ise ondan önce gelen soruyla ilgili: döngünün trafiğinizde hiç yer alması gerekiyor mu? Buna bir demo değil, bir karşılaştırma karar verir.

Bu karşılaştırmanın dört sütunu var. Daha azını raporlamak, ajan tabanlı RAG’in yalnızca en iyi durumuna bakılarak benimsenmesine yol açar.

Dört sütun ve her birinin nedeni
ne raporlanacak neden isteğe bağlı değil
Soru türüne göre ayrılmış doğruluk toplam her şeyi gizler. Burada toplam doğruluk, tek adımlıdaki %100’lük beraberlikle çok adımlıdaki %0’a karşı %30’luk farkı ortalar ve ikisini de anlatmayan bir sayı üretirdi
Doğru cevap başına token istek başına değil. 6,6 kata mal olan ve soruların %30’unu doğru cevaplayan bir sistem, doğru cevap başına yaklaşık 3.475 token’a mal olur; istek başına rakam onu olduğundan ucuz gösterir
Tur sayısı ve sınıra ne sıklıkla ulaşıldığı ikisini de raporlayın ve turu tanımlayın. Ortalama tipik harcamayı söyler; sınıra ulaşma oranı ise döngünün tatmin olduğunda mı durduğunu yoksa bütçesini mi tükettiğini söyler ve bunlar farklı sistemlerdir. Ortalama tek başına ikisini ayıramaz; bu bölümün tablodan çıkarılan tur sayısı gibi kendi sınırını aşan bir sayaç ise hiç yorumlanamaz
Varyans sabit bir hattın maliyeti her seferinde aynıdır. Döngününki değildir; ortancanın on katı olan bir p99 (isteklerin en pahalı %1’inin eşiği), bütçenizin kaldırması gereken operasyonel bir gerçektir

Bölüm 22.3’teki örnekleme disiplini burada özellikle önemlidir. Değerlendirme kümenizin iki soru türünü de, her birini ayrı ayrı ölçmeye yetecek sayıda içermesi gerekir: gerçek karışımda çok adımlı soruların payı %5 ise, temsilî 100 soruluk bir kümede yalnızca beş kadar çok adımlı soru olur; bir aralık vermek için çok az. O yüzden bu bölümün yaptığı gibi tabakalı örnekleyin (her soru türünden ayrı ve yeterli sayıda örnek çekin; burada her türden 30), tür bazında raporlayın, sonra manşet sayı için gerçek oranlarınıza göre yeniden ağırlıklandırın; Bölüm 29.2’deki harmanlama budur. Yalnızca projeyi motive eden çok adımlı sorulardan kurulmuş ve yeniden ağırlıklandırılmadan raporlanmış bir değerlendirme, ajan tabanlı RAG’i hiçbir kullanıcının üretmediği bir dağılımda büyük farkla kazanırken gösterir.

29.7 Sezgi kontrolleri

Her birini açmadan önce cevaplayın. Üçü bu bölümdeki ölçümle çözülüyor: ölçülen sıfır, yinelemenin geri kazandırdığı ve zaten sorunsuz olan sorularda döngünün neye mal olduğu. Diğer üçü tasarım kararlarıdır; bunlardan ikisi burada savunulan bir şeye değil, önceki bölümlerin ölçümlerine dayanıyor.

Çünkü ikinci belgeyi getirmek için gereken terim yalnızca birincinin içinde var. ZRG-14’ün ardılının bütçesi nedir? sorusunda ZRG-14 var, KVT-22 yok; soran onu bilmiyor, zaten sorduğu şey o. Bu bölümdeki ölçümde tek adımlı sorularda %100 alan bir retriever, aynı olguların iki adımlı sürümlerinde %0 aldı. Bu tek atışlık top-3 hat için olası neden sıralama değil, yapısal bir sınırdır: ikinci belgeyi bulan terim yalnızca birincinin içinde. Yine de ikinci belgenin sırası kaydedilmedi; dolayısıyla modelin iki belgeyi birleştirememiş olması dışlanamaz. Her iki durumda da aynı adaylar üzerinde çalışan bir yeniden sıralayıcı bunu düzeltmez. Farklı bir retriever, daha büyük bir k ya da farklı bir indeks ikinci belgeyi ilk sorguda bulabilirdi; bu deney onları sınamadı.

Tavanı aşmadan kaldırıyor. Doğruluk %0’dan %30’a çıkıyor: gözlenen sıfırdan 30 puanlık bir kazanç, ama sistem hâlâ on sorunun yedisinde yanılıyor. Bedeli o hücrede 6,6 kat token; iki adımlı sorular trafiğinizin %5’iyse harmanlanmış maliyet 1,43 kat olur. Döngü artık ikinci sorguyu ifade edebiliyor; ama model sıklıkla onu kuramıyor ya da geleni kullanamıyor. Bu, Bölüm 23’te gördüğümüz toplama kusurunun tekrarı.

Hiçbir kazanç olmadan 1,15 kat. Tek adımlı sorularda iki sistem de %100 aldı ve ajan tabanlı sürüm, her seferinde “yeterli” cevabı dönen bir yeterlilik kontrolü için %15 daha fazla token harcadı. Üretimde soruların çoğu genellikle tek adımlı olduğundan gerçek iş yüküne hâkim olan durum budur; klasik hattı değiştirmek yerine yönlendirme yapmanın gerekçesi de budur.

Bağımsızlarsa planlayın, bağımlılarsa yineleyin. Bağımlı alt sorular için “planlanamaz” demek aceleci olur: iki adımlı örnek, içinde bir değişken olan bir plan olarak yazılabilir — a = ardili_bul("ZRG-14"); butceyi_getir(a) — ve planlarında değişken bağlamayı (binding: bir adımın sonucunu sonraki adımın değişkenine atama) destekleyen bir sistem bunu rahatça ifade eder. Önceden yazılamayan şey, birebir ikinci sorgudur; yani sabit dizgiler üreten bir planlayıcının döngüye dönüşmesi gerekir, değişkenli bir planlayıcı ise değişkenleri dolduran bir çalışma zamanı ortamı ister. Bağımsız alt sorular aynı zamanda paralel çalıştırmaya değer olanlardır; bu da Bölüm 28’in okuma ağırlıklı durumudur.

Dört sınırla; en sık atlanan dördüncüsüdür. İki ya da üç turluk bir tur sınırı; turlar arasında kontrol edilen bir token bütçesi; bir tekrar kontrolü, çünkü Bölüm 23 bir döngünün cevabı zaten elindeyken aynı sorguyu bütçesi bitene kadar yeniden gönderdiğini gözlemledi; ve bir cevap eşiği: sınıra cevapsız ulaşıldığında bunu söyleyin. Bütçesini tüketip yine de cevaplayan bir döngü, saptanabilir bir kusuru saptanamaz bir kusura çevirmiştir.

Kaynaklar açıkça farklıysa bir kez yönlendirin; bu ucuz ve öngörülebilirdir. İhtiyaçlar gerçekten karışıksa ajana kaynak başına bir araç verin; o durumda işe yarayıp yaramayacağına Bölüm 24’ün kuralları karar verir, çünkü her kaynağın ne zaman uygun olduğunu söyleyen şey araç açıklamasıdır. Her şeyi arayıp birleştirmek cazip seçenektir; Bölüm 19 bunun bedelini benzer bir ortamda ölçtü: kalitesi farklı iki retriever’ı birleştirmek, daha iyi olana karşı 32,8 ve 46,8 recall@1 puanı kaybettirdi, ama recall@10’da kayıp neredeyse sıfırdı; bedel, ilk sıranın ne kadar önemli olduğuna bağlıdır. Provenance’ı da saklayın: kaynaklar aynı derecede güvenilir değildir ve içerikleri art arda eklemek bu ayrımı yok eder.

29.8 Mülakat soruları

Kaynak konusunda — Bölüm 2’deki çekincenin aynısı. Bunlar bu kitabın kullandığı iki güvenilir açık kaynakta tekrar eder; ayrıca bu bölümün ölçümünün cevaplanabilir kıldığı sorular vardır.

29.8.1 Problemi anlayıp anlamadığınızı sınayanlar

S: Bir RAG hattı ne zaman yapısal olarak başarısız olur?

Sorgu, cevabı getirmek için gereken terimi içeremediğinde; yani anahtarın henüz erişmediğiniz bir belgede bulunduğu çok adımlı durumda. Bunun neden bir sıralama problemi değil de yapısal bir sorun olduğunu söyleyin, çünkü olağan düzeltmeleri devre dışı bırakan budur. Bu bölümdeki ölçümde tek adımlı sorularda %100 alan bir retriever, aynı olguların iki adımlı sürümlerinde %0 aldı. Bu, yapısal açıklamayla uyumlu ama kanıt değil: bir birleştirme hatasını dışarıda bırakacak sıra kontrolü kaydedilmedi. Sonra çareyi adlandırın: ilk sorgunun içeremeyeceği ikinci bir sorguyu gönderebilen bir döngü.

S: Ajan tabanlı RAG neye mal olur?

Öngörülebilirliğe ve token’lara. Çok adımlı durumda doğruluğu 6,6 kat token harcayarak %0’dan %30’a taşıdı; tek adımlı sorularda hiçbir şey kazandırmadı ve 1,15 kata mal oldu. Sağduyulu bir cevap sonucu da söyler: klasik hattı değiştirmeyin, soruları yönlendirin; çünkü ek yükü ödeyen, soruların çoğunluğudur.

29.8.2 Bir tane yayına alıp almadığınızı sınayanlar

S: Ajan tabanlı RAG’i klasik RAG’e karşı nasıl değerlendirirsiniz?

Soru türüne göre ayrılmış dört sütun: doğruluk, istek başına değil doğru cevap başına token, sınıra ulaşma oranıyla birlikte tur sayısı ve varyans. Değerlendirme kümesinin iki soru türünden de her birini ölçmeye yetecek kadar içermesi, manşet sayının ise üretim oranlarına göre yeniden ağırlıklandırılması gerekir. Yalnızca projeyi motive eden çok adımlı sorulardan kurulmuş bir değerlendirme, hiçbir kullanıcının üretmediği bir dağılımda büyük bir kazanç gösterir.

S: Erişim döngünüz ara sıra ortancasının elli katına mal oluyor. Ne yaparsınız?

Bir şey değiştirmeden önce o isteklere bakarım; genellikle iki şeyden biridir. Ya döngü zaten çalıştırdığı sorguları yeniden gönderiyordur ve bunu bir tekrar kontrolü düzeltir; ya da soru derlemden cevaplanamaz ve döngü bütçesi bitene kadar arıyordur. İkinci durum bir cevap eşiği gerektirir; böylece sınırın tükenmesi kendinden emin bir tahmin değil, açık bir “bulunamadı” üretir. Sonra yalnızca tur sayısını değil, isteğin toplam bütçesini de sınırlarım.

29.9 2026 alet çantası

İki koşul da aşağıdaki sürümlerle tek bir dizüstü bilgisayarda çalıştı. Tek bir yerel modelle altmış soru, bir dizüstünde çalışacak kadar küçük bir iştir; Bölüm 29.2’deki aralıkların bu kadar geniş olmasının nedeni de budur.

Bu sayıların çıktığı yığın
kütüphane kullanılan sürüm burada ne işe yarıyor
ollama 0.24.0 iki koşul için de qwen3.5:9b sunmak
snowballstemmer 3.1.1 BM25 indeksi için Türkçe gövdeleme
numpy 2.5.2 retriever ve puanlama

Bilmeye değer, yukarıda kullanılmadı:

Daha geniş ekosistem, yazıldığı andaki sürümler
kütüphane güncel sürüm ne zaman kullanılır
llama-index 0.14.24 alt soru motorları ve yönlendiriciler zaten uygulanmış hâlde
langgraph 1.2.11 döngüyü bir çizge olarak kurar; sınırlar çizgenin görünür kenarları olur
ragas 0.4.3 erişimi ve üretimi ayrı puanlamak
openai-agents 0.22.0 küçük ve okunabilir bir döngüde araç olarak erişim

29.10 Lab: yönlendirin, değiştirmeyin

Başlık, bulgunun kendisidir. 1. ve 2. adımlar, gerisinin trafiğinizde yapmaya değer olup olmadığını size söylemek için var.

29.10.1 Adım 1 — elli gerçek soruyu sınıflayın

Tek adımlı mı çok adımlı mı? Oran bu labdaki en önemli sayıdır ve çoğu ekip onu ölçmeden bilmez.

29.10.2 Adım 2 — klasik hattı ellisinde de çalıştırın

Türe göre doğruluk, token, gecikme. Hangi kusurların yapısal olduğunu — cevabın anahtarı soruda yoktu — ve hangilerinin sıralama kusuru olduğunu not edin.

29.10.3 Adım 3 — döngüyü ekleyin, üç turla sınırlı

Araç olarak erişim, açık bir “hâlâ neye ihtiyacın var” adımı ve Bölüm 29.5’teki dört sınır.

29.10.4 Adım 4 — ikisini de soru türüne göre ölçün

Dört sütun. Tek adımlı ek yükü de atlamadan raporlayın; trafiğinize hâkim olan durum odur.

29.10.5 Adım 5 — doğru cevap başına token hesaplayın

Tür başına. Karar veren sayı budur; döngü genellikle ilk kez burada zekice değil, pahalı görünür.

29.10.6 Adım 6 — yönlendiriciyi kurun

Yalnızca ihtiyaç duyan soruları döngüye gönderin. Karışık trafikte yeniden ölçün. Yönlendirme karışımınızda iki saf mimariyi de yenmiyorsa bunu söyleyin.

29.10.7 Neyi teslim edeceksiniz

1. adımdaki soru türü oranını, türe göre dört sütunlu tabloyu, doğru cevap başına token rakamlarını ve döngünün trafiğinizde yerini hak edip etmediğine dair bir cümleyi.

29.11 Alıştırmalar

  1. Oranınızı bulun. Elli gerçek soruyu tek ya da çok adımlı diye sınıflayın. Önce bölünmeyi öngörün, sonra ölçün.
  2. Sıfırı sınayın. Cevap anahtarı soruda bulunmayan yirmi soru kurun. Klasik hattınızın bu sorulardaki doğruluğunu ölçün ve aralığıyla birlikte raporlayın. Üç soruyla alınan 0/3 bile %95 üst sınırını ancak %56’ya indirir; yirmi soruyla 0/20 ise %16’ya. Sıfır alırsa, erişim kusurunu toplama kusurundan ayırmak için ikinci altın belgenin sırasını kontrol edin.
  3. Doğru cevap başına maliyet. İki mimari için de iki soru türünde hesaplayın. Hangi karşılaştırma fikrinizi değiştiriyor?
  4. Dirseği bulun. Tur sınırını birden beşe kadar değiştirip doğruluğu bu sınıra karşı çizin. Ek turlar nerede kazandırmayı bırakıyor?
  5. Döngüyü bilerek bozun. Derleminizin cevaplayamayacağı bir soru sorun. Döngü durup bunu söylüyor mu, yoksa bütçesini tüketip yine de cevaplıyor mu?
  6. Yönlendirin. 1. alıştırmadaki etiketleri kullanarak bir sınıflandırıcı kurun, yalnızca çok adımlı soruları döngüye gönderin ve karışımı iki saf sisteme karşı ölçün.
  7. Güven düzeyleri. Güvenilirliği farklı iki kaynak alın ve cevaplarınızın provenance bilgisi taşıyıp taşımadığını kontrol edin. Taşımıyorsa bunun önem taşıdığı bir durum kurun ve sistemin orada başarısız olduğunu gösterin.
  8. Döngüsüz üçüncü seçenek. Bölüm 29.2’deki sabit iki aşamalı hattı kurun: eriş → gelen belgelerden varlıkları çıkar → o varlıklarla yeniden eriş → üret. İki adımlı kümede ajan döngüsüyle karşılaştırın: doğruluk, doğru cevap başına token ve istekler arası maliyet varyansı. Döngü bu hattı yenmiyorsa bunu söyleyin.

29.12 Daha derine

Okumadan önce: kendi sorularınızdan ellisini tek ya da çok adımlı diye sınıflayın. Oran, bu literatürün hangi yarısının sizi ilgilendirdiğine karar verir.

Makalelerin ötesi
kaynak ne olduğu
ragas erişimi ve üretimi ayrı ayrı puanlar; dört sütunlu karşılaştırmanın ihtiyaç duyduğu da budur
llama-index belgeleri sorgu ayrıştırma, yönlendiriciler ve alt soru motorları; soyutlamalar adıyla tanımlanmış
langgraph açık bir çizge olarak erişim döngüsü; sınırları görünür kılar
Chip Huyen’in blogu bir erişim mimarisinin ne zaman doğru ürün kararı olduğu üzerine
Eugene Yan — LLM örüntüleri RAG varyantlarını öteki örüntülerin arasına yerleştirir, artılarını ve eksilerini açıkça belirtir
Birincil kaynaklar
konu kaynak
erişimle zenginleştirilmiş üretimin özgün formülasyonu Lewis vd. (2020)
erişim yapılıp yapılmayacağına karar vermek Asai vd. (2024)
varyantların haritası Gao vd. (2023)
eylemle iç içe geçmiş akıl yürütme Yao vd. (2023)
erişilen ilgisiz bağlamın bedeli Shi vd. (2023)
yeni kanıt olmadan yeniden kontrol etmenin yanlış bir cevabı neden nadiren düzelttiği Huang vd. (2024)

29.13 Akılda kalması gerekenler

  • Tek atışlık top-3 hattımız 30 iki adımlı sorunun hiçbirini cevaplayamadı. Tek adımlı sorularda %100 alan bir retriever, aynı olguların iki adımlı sürümlerinde %0 aldı. Büyük olasılıkla neden, ikinci belge için gereken terimin yalnızca birincinin içinde olması (ikinci belgenin sırası kaydedilmedi). Bu, sınanan kurulumun bir sonucu, evrensel bir sıfır başarı sınırı değil; aynı adaylar üzerindeki bir yeniden sıralayıcı bunu düzeltmez.
  • Ajan tabanlı erişim tavanı aşmadan kaldırıyor. %0’dan %30’a, o hücrede 6,6 kat token’la; bu, doğru cevap başına yaklaşık 3.475 token eder ve karşısındaki hat hiçbir fiyata doğru cevap üretmiyor. Alıntılamadan önce harmanlayın: iki adımlı soruların payı %5 ise mimarinin toplam maliyeti 6,6 değil 1,43 kattır.
  • Tek adımlı sorularda döngü 1,15 kata mal olur ve hiçbir şey kazandırmaz. Gerçek trafiğe hâkim olan durum budur; bu yüzden varılan sonuç klasik hattı değiştirmek değil, soruları yönlendirmektir.
  • Bağımsız alt soruları planlayın; bağımlı olanlarda yineleyin ya da değişken bağlayın. İki adımlı durumda önceden yazılamayan şey birebir ikinci sorgudur — değişkenli bir plan onu ifade edebilir, sabit dizgiler üreten bir planlayıcı edemez. Sabit iki aşamalı bir hat, bu bölümün yapmadığı karşılaştırmadır (8. alıştırma).
  • Bir yargı değil, eksik anahtarı isteyin. Hâlâ neye ihtiyacın var? erişilebilir bir terim üretir; yeterli bilgin var mı? bir “evet” üretir.
  • Döngüyü dört şekilde sınırlayın: tur sınırı, token bütçesi, tekrar kontrolü ve bir cevap eşiği. Sonuncusu olmadan, bütçesini tüketen bir döngü yine de cevaplar ve saptanabilir bir kusuru saptanamaz bir kusura çevirir.
  • Soru türüne göre ayrılmış dört sütun raporlayın. Doğruluk, doğru cevap başına token, sınıra ulaşma oranıyla tur sayısı ve varyans — her türü yeterli sayıda soruyla ölçün, sonra manşet sayıyı projeyi motive eden çok adımlı durumlara göre değil gerçek soru karışımınıza göre ağırlıklandırın.