20 Erişimle Zenginleştirilmiş Üretim (RAG)
Öğrenme hedefleri. Bu bölümün sonunda:
- erişimin neden daha uzun bir prompt’u (istem) yendiğini ve alışıldık gerekçelerden hangisinin ölçümden sağ çıktığını söyleyebilirsiniz (Lewis vd. 2020; Liu vd. 2024);
- kanonik hattı (RAG sistemlerinin çoğunun paylaştığı temel işlem akışını) tasarlayabilir ve her aşamanın neden sorumlu olduğunu adlandırabilirsiniz;
- hangi ödünleşimi (trade-off) göze aldığınızı bilerek bir parça (chunk) boyutu seçebilirsiniz;
- yanlış bir cevabı, herhangi bir şeyi ayarlamadan önce ona yol açan aşamaya atfedebilirsiniz.
20.1 Neden her şeyi prompt’a yapıştırmıyoruz?
Önce adın ne anlama geldiğine bakalım. Erişimle zenginleştirilmiş üretim (RAG) (retrieval-augmented generation) basit bir tariftir: bir soru geldiğinde kendi belgelerinizde cevabı içermesi en olası birkaç pasajı arayın, bu pasajları prompt’a yapıştırın ve modelden cevabı onlara dayanarak vermesini isteyin. Arama kısmı Bölüm 19’un konusu; bu bölüm onun çevresindeki her şeyle ilgili. Özgün formülasyon (Lewis vd. 2020) retriever’ı (ilgili belgeleri bulup getiren arama bileşeni) ve üreticiyi (cevabı yazan dil modeli) birlikte eğitiyordu; bugün neredeyse herkesin kurduğu sürüm ikisini ayrı tutuyor ve burada ele alınan da o sürüm.
RAG’in var olma nedeni şu: modelin parametreleri sabit kalır ama sizin bilginiz güncellenir. Kalıcı neden budur ve yanında üç yakın gerekçe daha durur. Özel veri: kurumunuzun belgeleri ve modelin eğitimde nadiren gördüğü uzun kuyruk olgular parametrelerde yoktur ya da zayıf temsil edilir. Kaynak gösterme: erişilen her parça bir kaynağa bağlıdır, dolayısıyla cevap denetlenebilir. Halüsinasyonun (uydurma) azalması: model cevabı kendi belleğinden değil önüne konan metinden kurduğunda uydurma azalır, ama sıfırlanmaz — erişim yanlış parçayı getirebilir, model geleni yok sayabilir, parçanın kendisi yanlış olabilir; bu durumları Bölüm 20.4 ayırıyor. Ama bağlam pencereleri büyümeyi sürdürdü ve her büyüdüklerinde birileri sorunun ortadan kalktığını savundu: bütün derlem sığıyorsa neden erişim yapalım?
Herkesin verdiği üç cevap var — maliyet, çünkü her istekte her girdi token’ı için ödeme yaparsınız; erişim kontrolü, çünkü bir prompt kimin hangi belgeyi görebileceğini zorlayamaz; ve güncellik, çünkü önbelleklenmiş bir prompt bayatlar. Üçü de doğru; ama şimdiden bir çekince eklemek gerekiyor: ikincisi ile üçüncüsü, erişimin kurmanıza izin verdiği şeyler; “RAG” etiketinin kendiliğinden getirdiği özellikler değil. Bir erişim katmanı size yetkiye göre süzecek bir yer ve yeniden indeksleyecek bir yer verir. Ama kullanıcının okumaması gereken belgeleri süzmeyen bir indeks o belgeleri yine sızdırır, yalnızca araya bir adım daha girer; kimsenin tazelemediği bir indeks de yerine geçtiği prompt kadar bayattır. En büyük özgüvenle tekrarlanan dördüncü cevap ise bir modelin uzun bir bağlamı eşit kullanmadığıdır.
Dördünden yalnızca bu sonuncusu altyapınızla değil, modelin davranışıyla ilgili olgusal bir iddia; dolayısıyla ölçülmesi gereken de o. Ölçtük ve yeniden üretemedik.
20.1.1 İğne testi
Tasarım, puanlayanın hoşgörüsüne yer bırakmamalı; bu yüzden bilerek kaba tutuldu. Hiçbir modelin bilemeyeceği ya da tahmin edemeyeceği tek bir uydurma olgu alın — ZRG-14 projesinin onaylanan 2025 bütçesi 743.912 liradır. Bu olguyu, dikkat dağıtıcı olarak seçilmiş gerçek Türkçe haberlerle birlikte bir bağlama yerleştirin. Sayıyı sorun ve tam eşleşmeyle puanlayın; böylece puanlamada belirsizlik kalmasın. Sonra iki şeyi değiştirin: bağlamda kaç belge olduğu ve olgunun nerede durduğu. Tabloda documents bağlamdaki belge sayısı, position olgunun konumu (başta, ortada, sonda), prompt tokens prompt’un token cinsinden uzunluğudur. Bu testte bir erişim adımı yok, belgeler bağlama doğrudan konuyor; dolayısıyla son satırdaki retrieval failures sayacı burada bir erişim ölçümü değildir.
qwen3.5:9b, 40 invented facts per cell, temperature 0, exact-match scoring
documents position accuracy prompt tokens
1 start 100.0% 113
5 start 100.0% 951
5 middle 100.0% 953
5 end 100.0% 949
10 start 100.0% 2,005
10 middle 100.0% 2,007
10 end 100.0% 1,987
20 start 100.0% 4,106
20 middle 100.0% 4,115
20 end 100.0% 4,112
40 start 100.0% 8,318
40 middle 100.0% 8,313
40 end 100.0% 8,316
80 start 100.0% 16,744
80 middle 100.0% 16,720
80 end 100.0% 16,775
16 conditions, 640 queries, 0 retrieval failures, 0 errors
Hiçbir şey. Ne bir eğim, ne ortada bir çukur, ne 80 belgede ve 16.775 token’da bir sallanma. Altı yüz kırk sorgu ve model her iğneyi her konumda buldu.
20.1.2 Fark gözlenmeyen bir sonuç (null result) ne anlatır
İnsan, ortada kaybolma (lost in the middle: modelin uzun bir bağlamın başını ve sonunu ortasından daha iyi kullanması) etkisinin bir efsane olduğu sonucuna varmaya heveslenebilir. O sonuç bu tablodan çıkarılamaz ve nedenini anlamak tablonun kendisinden daha yararlı.
Her şeyin geçtiği bir test, test değildir. Kurduğumuz test, görevin mümkün olan en kolay hâli: tek bir birebir dizgi, ayırt edici bir anahtar (ZRG-14), sayısal bir cevap ve anahtarı birebir tekrarlayan bir soru. Attention (dikkat mekanizması) tam da bunda son derece iyidir.
Bu yalnızca kendi testimiz hakkındaki bir sezgi değil; testin kontrollü sürümü de yapıldı. Modarressi vd. (2025) soru ile iğne arasındaki birebir sözcük örtüşmesini kaldırıp ne olduğunu ölçtü: 128K bağlamı desteklediğini söyleyen on üç modelden on biri, 32K’da kısa bağlamdaki kendi baseline’ının (taban puanının) yarısının altına düştü; GPT-4o %99,3’ten %69,7’ye indi. Bir token üzerinden eşleştirebileceğiniz bir iğne, çıkarım yapmanız gereken bir iğneden farklı bir görevdir ve ZRG-14 eşleştirmesi olabilecek en kolay iğnelerden biridir.
Liu vd. (2024) konusunda da ters yönde dikkatli olun. O makale iki deney içeriyor ve yalnızca biri çok belgeli soru cevaplama. Öteki, UUID’ler üzerinde anahtar-değer erişimi — hiçbir anlamsal ipucu olmayan saf bir dizgi araması, yani yapısal olarak bizim kurduğumuz test — ve orada U biçimi bazı modellerde çıktı, bazılarında çıkmadı. Yani tek bir 9B modelde çıkan düz sonuç o makaleyle çelişmiyor; makalenin kendi raporladığı varyansın içinde duruyor. Makalenin çok belgeli yarısı daha zor koşulu ekliyor: orada ilgili pasajın nadir bir token üzerinden eşleştirilmesi değil, anlamından tanınması gerekiyor ve etkinin en gürbüz olduğu yer de orası.
Bağlam uzunluğunun aramızdaki fark olmadığına dikkat edin: onların çok belgeli kurulumu en fazla 100 token’lık 30 pasaja, yani modelin tokenizer’ına göre ortalama 4.400–5.200 token’a çıkıyor — bizim en uzun koşulumuzun dörtte biri ile üçte biri arası. Fark iğnede, samanlıkta değil. Ayrıca ölçümleri 2023 kuşağı modellerle yapılmıştı; uzun bağlamı işlemek ise o günden beri en çok mühendislik emeği harcanan konuların başında geliyor.
Tablonun gösteremediği bir çekince daha var. Hücre başına 40 sorguyla, 40/40’lık kusursuz bir puanın %95 Wilson güven aralığının alt sınırı %91,2 — yani bu tasarım, Liu vd.’nin (2024) çok belgeli kurulumda GPT-3.5-Turbo için raporladığı büyüklükte bir düşüşü (yaklaşık yirmi puan: cevap yirmi belgenin başındayken %75,8, ortasındayken %53,8) dışlayabilir, sekiz puanlık bir düşüşü dışlayamaz. İddia “büyük bir konum etkisi yok”; “konum etkisi yok” değil.
Yani ölçtüğümüz şeyin doğru ifadesi dar kapsamlı; geniş ve tanıdık bir iddia yerine dar ama doğru olanı yazıyoruz: bu modelde, 16.775 token’a kadar, sözcüksel olarak kolay bir iğneyle, hücre başına kırk sorgunun görebileceği kadar büyük hiçbir konum etkisi yok.
Erişim göreviniz buna benziyorsa ve benzer boyutta bir modeli benzer bağlam uzunluklarında kullanıyorsanız, konum büyük olasılıkla ilk kaygınız olmamalı. Benzemiyorsa bu tablo size sizin durumunuz hakkında hiçbir şey söylemiyor — ve öğrenmenin yolu aynı deneyi sizin iğnelerinizle çalıştırmak, ki bu bir öğleden sonra sürer.
20.1.3 Ayakta kalan argüman
Doğruluk sütunu yerine token sütununa bakın, çünkü ölçümün asıl söylediği orada.
1 document 113 prompt tokens 100.0%
80 documents 16,775 prompt tokens 100.0%
148x the input, for identical accuracy
Erişim yapmamanın bedeli modelin yanlış bilmesi değil. Aynı ölçüde haklı olmak için 148 kat ödemenizdir. Bunu, bir önbellekten karşılanamayan her istekte ödersiniz; bağlam uzadıkça attention’ın karesel payı da büyüdüğünden gecikme, token sayısından daha hızlı artar. (Bu ölçekte bir modelde, 16K token civarında prefill hesabının çoğunu hâlâ token sayısıyla doğrusal büyüyen katmanlar taşır; karesel terim daha uzun bağlamlarda baskınlaşır.)
Bu sayıya yöneltilebilecek haklı itiraz prompt önbellekleme (prompt caching) itirazıdır ve açıkça söylenmeyi hak ediyor. Sabit bir derlem öneki önbelleğe alınabilir: önbellekten okunan girdi taze girdi fiyatının bir kesriyle faturalanır — 2026’da onda biri yaygın, ama indirim sağlayıcıya göre değişir ve önbelleğe yazmak ek ücrete tabi olabilir — ve prefill (prompt’un model tarafından baştan işlendiği ilk aşama) atlanır. Onda bir oranında bu, 148 katı 15 kata yakın bir şeye çevirir: daha küçük ama yine de bedava değil; üstelik yalnızca önek değişmediği sürece geçerli, oysa erişim tam da içeriğin değiştiği durum için var. Ayrıca 113 token’lık baseline, kusursuz bir erişimin tek bir belgeyi getirdiğini varsayıyor; gerçek bir sistem \(k\) parça geçirir ve bir indeksi kurup sorgulamanın bedelini öder. Aşağıdaki yapısal argümanlara ise önbellekleme dokunmuyor.
Bu, bölümün tamamına bakışımızı değiştiriyor. Erişim, uzun girdileri okuyamayan bir model için bir geçici çözüm değil — bu model onları gayet iyi okuyor. Erişim, ihtiyacınız olmayan 79 belge için ödemeyi bırakma biçiminizdir. Tek, ortak ve tıka basa doldurulmuş bir prompt’un kötü hallettiği üç şeyi ele almanın da doğal yeridir: herhangi bir bağlam penceresinden çok daha büyük bir derlem (gerçek belge koleksiyonlarının çoğu binlerce token değil gigabaytlarca metindir), eğitimden sonra değişen bilgi ve belirli bir kullanıcının görmesine izin verilmeyen bilgi.
Neye bakacağız. Önce hat. Onu aşama aşama adlandırmamızın tek nedeni, her aşamanın kendi başına bozulabilmesi ve hepsinin aynı belirtiyi üretmesi. Hatla birlikte, erişilen parçaları kaynak gösteren, dayandırılmış bir cevaba çeviren prompt’u da ele alacağız. Sonra bölümün asıl deneyi olan parçalama geliyor: aynı derlemi kesmenin on bir yolu, iki biçimde sorgulanmış. Orada bir soru türünde en iyi olan yapılandırma diğerinde en kötüsü çıkıyor ve yerleşik varsayılanın, yazarının hiç görmediği sorular hakkında bir tahminden ibaret olduğu görülüyor. Ardından üç kusur biçimi ve onları birbirinden ayıran, bir öğleden sonrada yazılacak kod — her hafta başvuracağınız ama çoğu ekibin ihtiyaç duymadan önce kurmadığı şey — ve son olarak sistemin iki yarısını puanlayan standart metrikler.
20.2 Kanonik hat
Erişim, ihtiyacınız olmayan 79 belge için ödemeyi durduran şeyse, sonraki soru bu makinenin gerçekte nelerden oluştuğudur. Tipik bir RAG sistemi yedi aşamadan oluşur (yeniden sıralama gibi bazıları her sistemde bulunmaz). Bölüm 20.4’teki teşhisi mümkün kılan, onları ayrı ayrı adlandırmaktır; çünkü her biri kendi başına bozulabilir.
Üst satır bir kez kurulur; alt satır her istekte çalışır. Alttaki üç kusur biçiminin — biri erişimde, ikisi üretimde — hepsi aynı belirtiyi üretir: yanlış bir cevap. Bölüm 20.4’ün herhangi bir şeyi ayarlamadan önce onları birbirinden ayırmakla ilgili olmasının nedeni budur.
3. ile 6. aşamalar — embedding (gömme), indeks, ilk k erişimi ve çapraz kodlayıcıyla (cross-encoder) yeniden sıralama — Bölüm 19’un konusuydu; bu bölüm onları hazır kabul ediyor. İndeks ya tam taramadır ya da biraz recall (duyarlılık) kaybı karşılığında hız kazandıran bir yaklaşık en yakın komşu (ANN) indeksidir. Şema hakkında açıkça söylenmesi gereken iki şey var, çünkü ikisi de çoğu zaman atlanıyor.
Hat aynı zamanda her RAG literatür taramasının (survey) saydığı şeydir — Gao vd. (2023) varyantların en eksiksiz haritasıdır ve bir tanesini kendiniz kurduktan sonra bir kez göz gezdirmeye değer; böylece sınıflandırma zihninizde somut bir şeye oturur. Şemanın tamamının erişimin üretimden önce yalnızca bir kez gerçekleştiğini varsaydığına dikkat edin. Erişim yapılıp yapılmayacağına ve ne zaman yapılacağına karar veren, sonra geleni eleştiren sistemler — Self-RAG (Asai vd. 2024) referans tasarımdır — Bölüm 29’un konusudur ve ancak bu sabit hat çalışıp ölçüldüğünde anlam kazanırlar. Sorguyu erişimden önce yeniden yazmak gibi sorgu tarafı iyileştirmeler de orada ele alınıyor.
Gerçek projelerin çoğu asıl 1. aşamada kaybeder. Bir PDF tablosu birbirinden kopuk sayılardan oluşan bir sütuna dönüşür; iki sütunlu bir düzen iç içe geçer; taranmış bir sayfa hiçbir şey üretmez. Hiçbir embedding kalitesi, girişte yok edilmiş metni geri getirmez ve kusur aşağı akışta görünmezdir — hat çalışır, sayılar makul görünür ve cevap kimsenin bakmadığı bir nedenle yanlıştır. Başka bir şeyi ayarlamadan önce elli ayrıştırılmış belgeyi elle okuyun.
5. aşama 7. aşamaya bir tavan koyar. Bölüm 19 bunu gösterdi ve bölümdeki en işe yarar olgu bu: modele geçirdiğiniz k için recall@k (doğru belgenin ilk k sonuç arasında çıkma oranı) %80 ise, soruların %20’si üretim başlamadan erişilen metinden cevaplanamaz ve hiçbir prompt mühendisliği onlara ulaşmaz. (Model bunların bir kısmını yine de kendi belleğinden cevaplayabilir, ama o cevaplar erişilen hiçbir şeye dayanmaz; aynı olgu birden çok belgede geçiyorsa da sınır gevşer — kesin koşulları Bölüm 19 veriyor.)
Bu yüzden bir RAG sisteminin iki yarısı farklı metrikler ve onlara bakan farklı insanlar ister. Erişim yarısı kaçırmamak üzerinden yargılanır; üretim yarısı geleni kullanmak ve gelmediğinde reddetmek üzerinden. Bölüm 20.4 bu ikisini ayırmakla ilgilidir ve bu iş göründüğünden zordur, çünkü ikisi de aynı belirtiyi üretir: yanlış bir cevap.
20.2.1 7. aşama: kaynak gösteren, dayandırılmış bir prompt
Üretim aşaması genellikle tek bir prompt’tur ve onun biçimi, sözcüklerinden daha önemlidir. Amaç dayandırılmış (grounded) bir cevaptır: içindeki her iddianın modelin kendi belleğine değil, erişilen metne kadar izlenebildiği bir cevap. Üç alışkanlık sizi yolun büyük kısmına taşır.
- Parçaları numaralandırın ve kaynak gösterilmesini isteyin. Her parçaya bir kimlik ve kaynağını verin; modelden her iddiayı onu destekleyen parçanın kimliğiyle işaretlemesini isteyin. Kaynak gösterimi, “bana güvenin” demeyi bir okurun ya da bir betiğin denetleyebileceği bir şeye çevirir: [2] numaralı parça gerçekten bunu söylüyor mu?
- Modele meşru bir çıkış yolu verin. Parçalar cevabı içermediğinde tam olarak ne yazacağını söyleyin. Bu seçeneği olmayan bir sistemin neden hiç çekimser kalmadığını Bölüm 20.4 anlatıyor.
- Önce belgeler, en sonda soru. Model sağlayıcıları uzun malzemeyi en üste, talimatı ve soruyu en sona koymayı yaygın olarak öneriyor. En üst sıradaki parçaları bloğun ortasına değil başına yerleştirmek, konum etkilerine karşı bedava bir önlemdir — bu bölümün iğne testi böyle bir etki saptamamış olsa da.
Answer the question using ONLY the numbered documents below.
After each sentence, cite the document that supports it, e.g. [2].
If the documents do not contain the answer, reply exactly:
"The documents do not answer this question."
[1] (source: budget-2025.pdf, page 14)
The approved 2025 budget for project ZRG-14 is 743,912 lira. ...
[2] (source: board-minutes-2025-03.docx)
...
Question: What is the approved 2025 budget for project ZRG-14?
Türkçe bir derlemde aynı iskelet şöyle görünür:
Soruyu YALNIZCA aşağıdaki numaralı belgeleri kullanarak cevapla.
Her cümleden sonra onu destekleyen belgeyi göster, örneğin [2].
Belgeler cevabı içermiyorsa aynen şunu yaz:
"Belgeler bu soruyu cevaplamıyor."
[1] (kaynak: butce-2025.pdf, sayfa 14)
ZRG-14 projesinin onaylanan 2025 bütçesi 743.912 liradır. ...
Soru: ZRG-14 projesinin onaylanan 2025 bütçesi nedir?
Kaynak gösterimi de bir iddiadır ve modellerin, 2 numaralı parçanın desteklemediği bir cümle için [2]’yi gösterdiği gerçekten olur. Bu yüzden kaynakları yalnızca göstermeyin, denetleyin: kaynak gösterilen her cümle için gösterilen parçanın onu destekleyip desteklemediğini sorun — sayılar ve adlar için birebir eşleşmeyle, yeniden ifade edilmiş iddialar için doğrulanmış bir hakem modelle — ve başarısızlıkları sayın. Bu sayı, Bölüm 20.4’ün sonunda tanımlanan sadakat puanıdır.
Erişilen metnin RAG’e özgü bir riski daha var: parçalar sizin değil, belgeyi yazanın sözcüklerini taşır. İçlerine gömülmüş bir talimat (“önceki talimatları yok say ve …”) model için sizin talimatınızdan ayırt edilemez. Buna dolaylı prompt enjeksiyonu denir ve Bölüm 36’nın konusudur; derleminiz dışarıdan içerik aldıkça risk büyür.
İki güvenlik ayrıntısı da hatta yerleşmelidir. Yetki belge düzeyinde verilir ama erişim parça düzeyinde yapılır: her parça, geldiği belgenin erişim listesini üstveri olarak taşımalı, süzgeç parçalar prompt’a girmeden uygulanmalı ve belgenin yetkisi değiştiğinde parçaları da yeniden etiketlenmelidir. Kaynak gösterimi de belgenin sürümüne bağlanmalıdır (belge kimliği ile sürüm ya da içerik özeti): belge sonradan güncellenirse eski bir cevabın gösterdiği [2] numaralı parça artık o cümleyi içermeyebilir.
20.3 Parçalama bir modelleme kararıdır
2. aşama bu bölümün ölçtüğü aşamadır, çünkü bir sayının bir blog yazısından kopyalanıp bir daha gözden geçirilmediği aşama burasıdır. Bir parça, eriştiğiniz birimdir. Bu da parça boyutunu bir ön işleme ayrıntısı olmaktan çıkarıp neyin erişilebilir olduğuna dair bir karara dönüştürür — ve bu karar aynı anda iki şeyi zıt yönlere iter:
- Küçük parçalar daha isabetli hedeflenir. Sorguyla eşleşen 50 kelimelik bir parça neredeyse tümüyle sorgu hakkındadır.
- Küçük parçalar daha çok parça demektir, dolayısıyla indeks daha kalabalıktır ve her parça kendini netleştirecek daha az bağlam taşır.
Yerleşik kanı bir sayı seçer — 512 token, 200 kelime, “bir paragraf kadar” — ve devam eder. Sayıyı kendi derleminizde ölçmek gerekir, çünkü yukarıdaki ödünleşim belgelerinizin ne kadar uzun olduğuna ve cevapların belgenin içinde ne kadar dar bir yere toplandığına bağlıdır.
20.3.1 Deney
Retriever sabit tutuldu, böylece yalnızca kesme biçimi değişiyor. 3.397 Türkçe haber, aynı BM25 retriever’ıyla on bir farklı biçimde indekslendi ve iki tür soruyla sorgulandı — çünkü tek bir soru türü yanlış şeyi ölçer ve kendinden emin ama yanlış bir kural üretirdi.
- A. haber düzeyinde. Sorgu, haberin profesyonel tek cümlelik özetidir. Bu belge ne hakkında?
- B. olgu düzeyinde. Sorgu, haberin tek bir cümlesinden alınmış altı içerik kelimesidir. Sonra her kelime aynı gövdenin başka bir çekimli biçimiyle değiştirilir (örneğin seçim → seçimde); böylece sorgu metindeki kelime biçimlerini birebir tekrarlamaz. Bu belirli ayrıntı nerede?
İsabet, kaynak haberin herhangi bir parçasının getirilmesi demektir. Sayılara geçmeden önce bu tanımı her iki koşul için ayrı ayrı düşünün. A koşulunda doğru hedef bu — soru zaten haberin kendisi. B koşulunda ise yalnızca bir vekil ölçü, üstelik cömert bir vekil: doğru haberin başka bir paragrafını getirmek, sorgunun alındığı cümle dönen parçada olmasa bile başarı sayılıyor. Yani B koşulunun sayıları olgu düzeyindeki kanıtı ölçmüyor; haber düzeyindeki erişimi ölçüyor ve olgu düzeyindeki başarı için yalnızca bir üst sınır veriyor. Daha katı sayı, kanıt cümlesi etiketlemesi (supporting-span annotation) ister — her sorgunun hangi cümleden geldiğini kaydedip dönen parçanın o cümleyi içermesini şart koşmak — ve bu çalıştırmada o yok. İndeks kurma süreleri raporlanmıyor, çünkü güvenilir biçimde ölçülemedi (zamanlamalar aynı makinedeki eşzamanlı bir işten etkilenmişti).
3,397 articles | A: 400 summary queries | B: 400 fact queries
chunking chunks w/chk A R@1 A R@5 A MRR B R@1 B R@5 B MRR
whole article 3,397 366 71.8% 91.8% 80.2 96.0% 99.8% 97.7
fixed 50w, no overlap 24,266 51 57.0% 81.8% 67.1 96.5% 99.8% 97.8
fixed 100w, no overlap 12,390 99 66.5% 86.5% 75.2 95.5% 98.2% 96.7
fixed 200w, no overlap 6,459 187 70.0% 88.5% 78.3 94.0% 97.2% 95.4
fixed 400w, no overlap 4,074 297 72.5% 90.2% 80.1 93.8% 97.8% 95.6
fixed 100w, overlap 25 15,983 98 65.8% 87.0% 74.4 97.5% 99.8% 98.6
fixed 100w, overlap 50 21,890 101 66.0% 84.8% 73.7 97.2% 99.8% 98.5
fixed 200w, overlap 50 8,070 184 71.5% 88.0% 78.8 97.0% 99.8% 98.3
fixed 200w, overlap 100 10,166 192 70.5% 87.5% 77.8 96.2% 99.8% 98.0
sentence-aligned ~100w 14,500 86 66.0% 85.8% 74.3 97.8% 100.0% 98.8
sentence-aligned ~200w 7,674 162 69.5% 88.5% 77.9 97.2% 100.0% 98.5
Tablonun sütunları: chunks indeksteki parça sayısı, w/chk parça başına ortalama kelime, R@1 ve R@5 recall@1 ve recall@5, MRR ise ortalama ters sıra (mean reciprocal rank; doğru haberin ilk göründüğü sıranın tersinin ortalaması, 100 üzerinden). Satırlarda fixed sabit boyutlu pencereyi, overlap örtüşen kelime sayısını, sentence-aligned cümle sınırlarına hizalı parçaları gösteriyor.
20.3.2 Ne söylüyor
Ana bulgu kısaca şu: bir koşuldaki en iyi parça boyutu diğerinde en kötüsü. Sayıları ve eğim grafiğini aşağıda bulacaksınız; ama önce bu sayıların yorumunu sınırlayan dört nokta var. Dördü de parçalamanın değil deney tasarımının özelliği; ilk okumada göz gezdirip bulguya geçebilirsiniz.
Tarama, on bir satırın düşündürdüğünden dar. Ortalama haber 366 kelime; yani 400 kelimelik bir pencere haberlerin çoğunu bütün bırakıyor — 3.397 haberden 4.074 parça — ve fixed 400w pratikte whole article’ın gürültülü bir kopyası. Fiilen taranan aralık 50 ile 200 kelime.
Birimler farklı boyuttayken sıra adil bir eksen değil. 1. sırada whole-article indeksi üreticiye 366 kelime, 50 kelimelik indeks 51 kelime veriyor; yani A koşulundaki sıralamanın bir kısmı yalnızca daha çok metin kazanır demek. Tabloda eksik olan karşılaştırma, eşit kelime bütçesinde recall’dur — whole article \(k{=}1\)’de, 200w \(k{=}2\)’de, 100w \(k{=}4\)’te, 50w \(k{=}7\)’de. Bu etkinin hangi yönde işlediğine dikkat edin: B koşulunda 50 kelimelik indeks, 400 kelimelik indeksi metnin altıda biriyle zaten geçiyor; yani bütçeyi eşitlemek o bulguyu zayıflatmaz, güçlendirir.
Recall@5 haber bazında tekilleştirilmemiş. 50 kelimelik bir indeksten gelen beş parça tek bir belgenin beş dilimi olabilir; whole-article indeksinden gelen beş parça zorunlu olarak beş farklı belgedir. Yani ince taneli indeksler 5. sırada, beş yuvanın birkaçını aynı haberin dilimlerine harcayabildikleri için cezalandırılıyor ve A koşulundaki on puanlık R@5 farkının bilinmeyen bir kısmı parçalama değil bu ölçüm yapaylığı.
Ve koşul başına \(n = 400\); yani %95 aralığı A’da kabaca ±4,6 puan, B’de ±1,9. Bunu “bundan küçük farklar ayırt edilemez” hâline getirmeyin; bu kitabın sürekli uyardığı hata bu: bunlar tek tek oranlar üzerindeki aralıklar ve buradaki sistemler aynı 400 sorguda karşılaştırılıyor. Eşleştirilmiş bir test yalnızca iki sistemin farklı sonuç verdiği sorgulara bakar ve eşleştirilmemiş (bağımsız örneklem) aralığın çok içinde kalan farkları bile ayırt edebilir. Sorgular on bir sistemde ortak olduğu için mevcut veriden eşleştirilmiş bir McNemar testi hesaplanabilirdi ve doğru araç o; biz eşleştirilmemiş sayıları raporluyoruz, ki bu daha zayıf seçenek. Bu yüzden yukarıdaki aralıkları, küçük farkları karara bağlayan bir test olarak değil, onları abartmaya karşı bir uyarı olarak okuyun.
Bunları aklımızda tutarak bulguya dönelim: bir koşuldaki en iyi parça boyutu diğerinde en kötüsü. Haber uzunluğunda ya da daha uzun parçalar A koşulunda başı çekiyor — 400 kelimelik parçalar %72,5, bütün haberler %71,8; birbirinden ayırt edilemez — ve B koşulunda sıralamanın dibine iniyor: 400 kelimelik parçalar %93,8 ile sonuncu, bütün haberler %96,0 ile on bir içinde sekizinci. Elli kelimelik parçalar A’da %57,0 ile sonuncu, B’de ise %96,5 ile ortalarda — ikisinin de üstünde. A’daki 15,5 puanlık fark yukarıdaki her aralığın çok dışında. B’deki tersine dönüş daha küçük — 50 ile 400 kelimelik parçalar arasında 2,7 puan, en iyiyle en kötü arasında 4,0 — ve eşleştirilmemiş aralıkların ayırt edebileceği sınırın tam kıyısında duruyor; eşleştirilmiş testin işe yarayacağı yer de tam burası. İki sütun tek bir sıralamanın gürültülü sürümleri değil: sıra korelasyonu negatif (Spearman \(\rho \approx -0{,}62\)), yani iki sütun aynı on bir sistemi büyük ölçüde ters sırayla diziyor.
Yan yana sıralandığında iki sütunu gürültü sanmak zor:
Her çizgi bir parçalama; haber düzeyindeki sorularda bitirdiği yerle olgu düzeyindeki sorularda bitirdiği yer arasında çizilmiş. Gül rengi çizgi 400 kelimelik parçaların birincilikten sonunculuğa gidişi; turkuaz olan cümle hizalı ~100 kelimelik parçaların dokuzunculuktan birinciliğe gidişi (etiketlerde k kelime demektir: 400k = 400 kelime; “+50” örtüşmeyi gösterir). Yine de konumlar kadar sayıları da okuyun: B koşulunun bütün yayılımı dört puan, A koşulununki on beş — dolayısıyla sağdaki yeniden sıralama gerçek, ama orada yanlış seçim yapmanın bedeli çok daha düşük. Bu, aşağıdaki kenar notunun, üreticiniz beş parça okuduğunda recall@1’e bakmak konusunda yaptığı uyarının aynısı.
Dersin tamamı bu; uygulanabilir bir kural olarak: parça boyutu, soruların gerektirdiği ayrıntı düzeyine (granularity) göre seçilmelidir.
Bir belgenin ne hakkında olduğunu sorun; onun yalnızca bir kısmını tutan bir parça sorgunuzun yalnızca bir kısmıyla eşleşebilir, dolayısıyla büyük olan kazanır. Belirli bir olgunun nerede olduğunu sorun; onu içeren kısa bir parça neredeyse tümüyle onun hakkındadır, dolayısıyla küçük olan kazanır. İki durumda da gördüğümüz, BM25’in uzunluk normalleştirmesinin tam da tasarlandığı işi yapmasıdır; yalnızca iki farklı taraftan bakıyoruz.
O tablodaki iki sonuç daha, deneyi çalıştırmadan önce bariz değildi.
Örtüşme bedelini hak ediyor, ama yalnızca olgular için. 100 kelimede 25 kelimelik bir örtüşme eklemek B koşulunu %95,5’ten %97,5’e taşıdı — 400’de 18 hatadan 10’a, yani net sekiz sorguluk bir hareket. (Yukarıdaki eşleştirilmiş testin ihtiyaç duyduğu şey, her yönde kaç sorgunun değiştiğidir; bu koşu onu kaydetmedi.) Aynı örtüşme A koşulunu %66,5’ten %65,8’e indirdi: üç sorgu, o koşulun gürültü bandının epey içinde. Farkın küçük olması, fark olmadığının gösterildiği anlamına gelmez; ne kadarlık bir değişimin sizin için önemli olduğuna önceden karar verin ve sonucu onunla karşılaştırın.
Örüntü şu: bir olgunun bir parça sınırını aşabildiği yerde bir kazanç, sorgunun bütün belgeyi tarif ettiği yerde hiçbir şey. Dolayısıyla örtüşme genel amaçlı bir güvenlik payı değil. Belirli bir kusur için belirli bir onarım ve sorularınız olgu biçimli değilse hiçbir getirisi olmadan %29 daha fazla parçanın bedelini ödüyorsunuz.
Yapı aritmetiği yendi — ama bir karıştırıcı değişkenle birlikte. Yaklaşık 100 kelimelik cümle hizalı parçalar B koşulunda %97,8 aldı; sabit 100 kelimelik pencerelerin %95,5’ine karşı — ve bunu, ikinci gelen örtüşmeli varyanttan daha az parçayla yaptı (cümle hizalı indeks 14.500, örtüşmeli indeks 15.983 parça). Bunun tamamını yapıya yazmadan önce bir çekince: cümle hizalı indeksin parça başına ortalaması 86 kelime, sabit indeksinki 99 ve B koşulu zaten küçük parçaları ödüllendiriyor. Sabit boyut serisinden ara değerlemeyle (interpolasyon) 86 kelimelik sabit bir pencerenin %95,8 civarında olması beklenir; yani o 2,3 puanın kabaca ikisi sınıra, geri kalanı boyuta atfedilebilir görünüyor. Boyutu eşleştirilmiş bir kontrol — fixed 86w, no overlap — o tablonun eksik satırı. Her hâlükârda ayakta kalan şu: bütün cümleleri paketlemek hiçbir şeye mal olmuyor, saf bölmeyi geçiyor ve örtüşmeyle dolgulanmış olanı daha az parçayla yakalıyor (%97,8’e karşı %97,5, 400 sorguda tek bir sorgu).
R@5 sütunlarının ne yaptığına dikkat edin. B koşulunda her yapılandırma 5. sırada %97,2 ile %100 arasında; yani üreticiniz beş parça okuyorsa tablonun B yarısındaki farklar yuvarlama hatası düzeyinde — doğru haberi bulmak açısından, ki bu sütunların ölçtüğü tek şey o. A koşulu farklı: R@5 hâlâ on puanlık bir aralığa yayılıyor (%81,8 ile %91,8), yani bütün bir belge hakkındaki sorularda seçim beş parçada bile önemli. B’deki düz sütunu da sistem hakkında bir iddiaya yükseltmeyin: gelen parçanın cevaplayan cümleyi gerçekten taşıyıp taşımadığı, bu çalıştırmanın puanlamadığı ayrı bir soru. Üreticiniz tek parça okuyorsa R@1 sütunları sizin sisteminizdir. Bölüm 19 aynı noktaya birleştirme (fusion) bağlamında değinmişti ve bu nokta genelleşiyor: önemli olan metrik, tüketicinizin gerçekten okuduğudur.
20.3.3 Yapı aritmetiği yener
Hangi boyuta karar verirseniz verin, belgenin herhangi bir yapısı varsa yapıya göre parçalayın. Bölümler, maddeler, fıkralar, konuşma sıraları, tablo satırları. Sabit bir kelime sayısında çizilen bir sınır cümlenin, yan cümlenin, argümanın ortasına düşer ve tek başına makul görünen ama birlikte yanlış olan iki parça üretir — Bölüm 14’ün map-reduce’ta bulduğu kusur, buraya başka bir kapıdan geliyor.
Örtüşme kaba bir onarımdır: her parçanın son n kelimesini bir sonrakinin başında tekrarlayın, böylece bir sınırı aşan bir olgu en az bir parçada bütün hâlde görünsün — yeter ki olgu örtüşmeden kısa olsun ve iki sınırı birden aşmasın. 25 kelimelik bir örtüşme, öznesiyle niteleyicisi kırk kelime arayla duran bir iddianın bir parçaya bütün hâlde düşeceğini garanti etmez — gerçi bazı konumlarda 100 kelimelik bir pencere ikisini birden tutabilir. Onun bir garanti değil de bir onarım olmasının sebebi bu.
Bedeli indeks boyutudur: \(w\) kelimelik ve \(o\) kelime örtüşmeli, yani her adımda \(w - o\) kelime ilerleyen bir pencere yaklaşık \(w/(w-o)\) kat parça üretir — 25 kelimelik örtüşme için 100/75 ≈ 1,33; ölçülen 1,29, çünkü tek bir pencereden kısa bir haber her iki durumda da tek parça verir. Yukarıdaki tablo, belgenin kendi sınırlarını korumanın aynı işi daha ucuza yaptığını düşündürüyor: cümle hizalı parçalar %97,8’e ulaştı, örtüşmeyle dolgulanmış sabit pencereler %97,5’e — tek sorgu farkla aynı — ve cümle hizalı indeks %9 daha küçüktü. Çizmek zorunda olmadığınız bir sınırı onarmak için örtüşmenin bedelini ödemek, işin pahalı yoludur.
Sabit boyutlu parçalamanın basitçe başarısız olduğu iki belge türü:
- Tablolar. Bir satır başlığı olmadan hiçbir şey ifade etmez. Bir tabloyu satırlara göre parçalayın ve başlığı her parçada tutun ya da indekslemeden önce her satırı bir cümleye dönüştürün.
- Çapraz referans içeren her şey. 4. bölümde anlatıldığı gibi, 4. bölüm indeksin başka bir yerinde başka bir parça olduğunda anlamsızdır. Referansı ya girişte çözün ya da kaybı kabul edip ölçün.
20.3.4 Peki ne yapmalısınız?
Önce bütün bunlara bir sınır: yukarıdaki her sayı BM25. B koşulunun arkasındaki mekanizma — kısa parçaların, neredeyse tamamen sorgu hakkında oldukları için kazanması — BM25’in uzunluk normalleştirmesinin ta kendisi; yani kesme kararı kadar puanlayıcının da bir özelliği. Yoğun bir retriever’da uzunluk normalleştirmesi yoktur. Onun yerine, sınırı aşan metni kesip atan bir maksimum dizi uzunluğu ve uzun bir parçayı tek bir vektöre sıkıştırıp sinyalini seyrelten bir havuzlama (pooling; çoğu zaman token’lar üzerinde ortalama) adımı vardır; bunlar farklı bir optimum üretir. Yön muhtemelen benzer; sayılar taşınabilir değil. Üstelik bölümün başındaki hat şeması bir embedding aşaması gösteriyor; bunu açıkça söylemeseydik okur buradaki sayıların bir embedding modeliyle alındığını varsayabilirdi.
Kendi derleminizde, kendi retriever’ınızla, alacağınız sorulara benzer sorgularla ölçün. Ama bu ölçümü yapmadan önce bir başlangıç noktasına ihtiyacınız varsa:
- Yapıya göre parçalayın — cümleler, paragraflar, bölümler, fıkralar, satırlar — ve bir hedef boyutta kesmek yerine o boyuta paketleyin.
- Sorularınız belirli olgular hakkındaysa kabaca 100–200 kelime hedefleyin; bir belgenin neyi kapsadığı hakkındaysa bütün belgelere kadar daha büyük.
- Örtüşmeyi yalnızca olgu biçimli sorular için ekleyin ve onu varsayılan değil bir sınır onarımı olarak görün.
- Sorularınız gerçekten iki türdense, tek bir boyutta uzlaşmak yerine iki ayrıntı düzeyinde indekslemeyi düşünün. Önce ölçün: bu derlemde en iyi uzlaşma (200 kelime, 50 örtüşme) her iki koşulda da en iyi yapılandırmanın yalnızca bir puan kadar gerisindeydi, ki bu gürültü içinde; ama farkın sizin derleminizde de bu kadar küçük olacağının garantisi yok.
- Küçük parçayla erişin, büyük parçayla üretin. Hedefleme ile bağlam arasındaki ödünleşimin yaygın çözümü small-to-big (ya da parent-document) erişimdir: indekste küçük, isabetli parçaları ararsınız, üreticiye ise eşleşen parçanın çevresindeki bölümü ya da belgenin tamamını verirsiniz; LangChain ve LlamaIndex gibi çatılarda hazır sürümleri var. Bir kardeş yöntem her parçanın başına belge başlığını ya da parçayı belgeye yerleştiren kısa bir bağlam cümlesini eklemektir (contextual retrieval); böylece tek başına belirsiz kalan bir parça kendini tanıtır. İkisi de bu bölümde ölçülmedi.
20.4 Kusur biçimleri ve onları atfetmek
Bir RAG sistemi yanlış bir cevap veriyor. Bunun üç farklı nedeni ve üç farklı düzeltmesi var; dolayısıyla ilk iş herhangi bir şeyi ayarlamak değil — hangi aşamanın bozulduğunu bulmak.
| kusur | ne oldu | nasıl saptanır |
|---|---|---|
| Retrieval miss (erişim kaçırması) | doğru parça hiç döndürülmedi | ilk k içinde olup olmadığını kontrol edin; değilse aşağı akıştaki hiçbir şeyin önemi yok |
| Grounding miss (dayandırma kaçırması) | doğru parça döndürüldü ve model onu yok saydı ya da çelişti | parça bağlamda ve cevap parçada değil |
| Synthesis miss (sentez kaçırması) | gerekli her şey oradaydı, parçalara yayılmıştı ve model onları yanlış birleştirdi | olguların hepsi mevcut, sonuç yanlış |
Teşhis mekaniktir ve kurması bir öğleden sonra sürer:
for q, gold_doc, expected in evaluation_set:
hits = retrieve(q, k=10) # üreticinin okuduğu k ile aynı
answer = generate(q, hits)
if answer == expected:
continue # doğru: atfedilecek bir şey yok
if gold_doc not in {h.doc_id for h in hits}:
bucket["retrieval miss"] += 1 # erişimi düzelt
elif not answer_supported_by(answer, hits):
bucket["grounding miss"] += 1 # prompt'u ya da modeli düzelt
else:
bucket["synthesis miss"] += 1 # soruyu alt sorulara bölmeyi ya da görevi düzelt
# (ya da kaynak/etiket hatası: elle bakın)Üç testi sırayla okuyun. Yalnızca yanlış cevaplar atfedilir. Referans belge hiç gelmediyse aşağı akıştaki hiçbir şey onu kurtaramazdı. Geldiyse ama erişilen metin cevabı desteklemiyorsa, model kanıtını yok saymış ya da onunla çelişmiştir. Her iddia destekleniyor ama sonuç yine de yanlışsa, çoğu zaman olgular yanlış birleştirilmiştir. Ama son kova iki başka nedeni de toplar: erişilen belgenin kendisi yanlış, eskimiş ya da başka bir belgeyle çelişiyor olabilir (derlem hatası) ya da referans cevap hatalı olabilir (etiket hatası). Bunların düzeltmesi sentezinkinden farklıdır; bu yüzden bu kovaya düşen örneklere elle bakın. Cevabın tek bir parçadan geldiği, desteklenmiş ama yanlış bir cevap sentezden çok kaynağı düşündürür. Pratikte == normalleştirilmiş bir eşleşmeye ya da bir hakem modele dönüşür; answer_supported_by ise bu bölümün sonunda tanımlanan sadakat denetimidir.
Bunu embedding modeline dokunmadan önce yapın. Bir RAG sistemi hayal kırıklığı yarattığında varsayılan refleks embedding’leri değiştirmektir ve Bölüm 19’daki ölçüm bunun çoğu zaman en büyük kaldıraç olmadığını söylüyor — embedding modeli seçimi kolay sorgularda 2,4, zor sorgularda 25,3 puan ederken, sözcüksel ile yoğun arasındaki seçim, sorgu türünün dikte ettiği yönde altmış ile yetmiş puan ediyordu. Üstelik embedding modelini değiştirmek üç gruptan yalnızca birincisini düzeltebilir.
20.4.1 Ayrı adlandırmaya değer iki kusur
Bir RAG sisteminin bozulma yollarından ikisi o üçlü tabloya tam oturmuyor, çünkü ikisi de bozulan aşamalar değil, sizin yaptığınız seçimlerin sonuçları.
Dikkat dağılması. Erişilmiş ama ilgisiz bağlam yalnızca yardımcı olmamakla kalmaz; cevapları etkin biçimde bozar (Shi vd. 2023). Bu, k’yı “arttıkça daha güvenli” bir ayar olmaktan çıkarıp gerçek bir ödünleşime dönüştürür: onu yükseltmek recall’u artırır ama gürültü de getirir; bir noktadan sonra ikinci etki ağır basar.
Burada da Bölüm 20.1’de hak edilen çekinceyi eklemek ve kaynağı sessizce geçiştirmek yerine açık olmak gerekiyor: kendi iğne testimiz cevabın etrafına 79 ilgisiz belge koydu ve bunun hiçbir bedeli olmadı. Dikkat dağılması orada da ortaya çıkmadı. Shi vd.’nin (2023) etkisi, ilgisiz bir yan cümlenin kullanılabildiği — akıl yürütme zincirine çekilip hesaba katıldığı — aritmetik ve akıl yürütme problemlerinde ölçülüyor. Bir dizgi bulmak o tür bir görev değil; bilgi çıkarma (extraction) görevlerinin çoğu da değil. RAG tarzı soru cevaplamadan gelen kanıt da aynı yönü gösteriyor: Liu vd.’nin (2024) açık alan soru cevaplama vaka incelemesinde erişilen belge sayısı arttıkça retriever’ın recall’u yükselmeyi sürdürürken okuyucu modelin doğruluğu çok daha erken doyuma ulaşıyor; 20 belgenin ötesi yalnızca 1–1,5 puan kazandırıyor.
Yani k’yı, erişilen metin üzerinde akıl yürütme içeren görevlerde ölçülmüş bir optimumu olan bir parametre olarak görün ve içermeyen görevlerde cezanın var olduğunu varsaymayın: bütçelemeden önce ölçün, ki Bölüm 20.9’un beşinci alıştırmasının sizden istediği budur.
Hiç gerçekleşmeyen reddetme. Belgeler bunu cevaplamıyor diyebileceği açık bir çıktı seçeneği olmayan bir sistem yine de cevap verecektir; parametrik bellekten, akıcı biçimde. Bölüm 17’nin kuralı burada da geçerli: kusur çıktısını adlandırın, üretmesini kolaylaştırın ve sonra modelin onu gerçekten kullandığını kontrol edin — derlemin cevaplayamayacağını bildiğiniz sorularda. Bu son test en sık atlanan testtir; çekimser kalabilen bir sistemle bu seçeneği hiç verilmemiş bir sistemi birbirinden ayıran da odur.
20.4.2 İki yarıyı puanlamak
Üçlü atıf tek tek kusurlar üzerinde çalışır. Bir sistemi zaman içinde izlemek için ise sayılar istersiniz; değerlendirme çatıları — RAGAS (Es vd. 2024) ve akrabaları — aynı ayrımı izleyen standart bir küme sunuyor. Bu adlar her araçta ve her iş görüşmesinde karşınıza çıkar; işte sade bir dille anlamları:
| metrik | yarı | sorduğu soru | puan |
|---|---|---|---|
| bağlam precision’ı (context precision, bağlam kesinliği) | erişim | erişilen parçalar ilgili mi ve ilgili olanlar üst sıralarda mı? | ilgili parçaların sıraya göre ağırlıklandırılmış payı |
| bağlam recall’u (context recall) | erişim | erişilen metin, referans cevabın ihtiyaç duyduğu her şeyi içeriyor mu? | referans cevaptaki iddiaların bağlamda bulunan payı |
| sadakat (faithfulness) | üretim | cevaptaki her iddia erişilen metin tarafından destekleniyor mu? | desteklenen iddialar ÷ cevaptaki tüm iddialar |
| cevap ilgililiği (answer relevance) | üretim | cevap sorulan soruyu karşılıyor mu? | soru ile cevap arasında bir benzerlik puanı |
Sadakati somutlaştıran bir örnek: dört iddiada bulunan ve bunlardan üçü erişilen parçalarca desteklenen bir cevap, dördüncü iddia doğru olsa bile 3/4 = 0,75 alır — sadakat bir iddianın doğru olup olmadığını değil, nereden geldiğini sorar. Bu metriklerin üç kusur grubuyla eşleşmesi doğrudandır: düşük bağlam recall’u bir erişim kaçırmasıdır, düşük sadakat bir dayandırma kaçırması, ikisi de yüksekken yanlış bir cevap ise bir sentez kaçırması (ya da, yukarıda belirtildiği gibi, bir kaynak ya da etiket hatası).
İki uyarı. Birincisi, kökene dair bir not: RAGAS makalesinin kendisi sadakati, cevap ilgililiğini ve bağlam ilgililiğini (context relevance) tanımlıyor; bağlam precision’ı ve bağlam recall’u kütüphaneye sonradan eklendi ve bağlam recall’u bir insanın yazdığı referans cevap gerektiriyor. İkincisi, bu sayıların her birini, metni iddialara bölüp her birini denetleyen bir LLM hakem üretiyor; dolayısıyla hataları hakemin hatalarıdır. Bölüm 14’te iki otomatik sadakat ölçüsü sıralamada anlaştı; ama biri beş, öteki on bir özeti işaretledi ve yalnızca birinde örtüştüler. Metrikleri dayattıkları yapı için kullanın, hakemi elle etiketlediğiniz bir örneklem üzerinde doğrulayın (nasıl yapılacağını Bölüm 22.4 gösteriyor) ve mutlak puanları araçlar arasında karşılaştırmayın.
20.5 Sezgi kontrolleri
Her birini açmadan önce cevaplayın. Çoğu, bu bölümün tartışmayla değil ölçümle çözdüğü sorular; ölçmediği yerde cevap bunu açıkça söylüyor.
Hayır — ve bu bölüm bedelin ne kadar büyük olduğunu ölçtü; genellikle gösterilmek yerine iddia edilen kısım da bu: cevabı içeren tek belge yerine 80 belgeyi prompt’a koymak birebir aynı doğruluk için 148 kat girdi token’ına mal oldu. Kalıcı nedenler ise başka: modelin parametreleri sabit kalır ama belgeleriniz güncellenir — bir erişim adımı, yeni, özel ya da değişen bilginin, o bilgi var olmadan önce eğitimini bitirmiş bir modele ulaşma yoludur; üstelik gerçek derlemlerin çoğu zaten herhangi bir bağlam penceresinden çok daha büyüktür. Erişim kontrolü öteki kalıcı nedendir: bir prompt kimin hangi belgeyi okuyabileceğini zorlayamaz, belge bazında yetki süzgeçleri olan bir indeks zorlayabilir. Uzun bağlam ve erişim rakip değil tamamlayıcıdır — daha büyük bir pencere kaç parçayı karşılayabileceğinizi değiştirir, onları seçmeniz gerekip gerekmediğini değil.
Cevap, sorularınızın ayrıntı düzeyine bağlı olduğudur ve bu bölüm ne kadar bağlı olduğunu ölçtü: aynı derlemde 400 kelimelik parçalar haber düzeyindeki sorularda %72,5 recall@1 ile başı çekti ve olgu düzeyindeki sorularda %93,8 ile sonuncu geldi; 50 kelimelik parçalar tersini yaptı. Ölçmeden önce bir varsayılana ihtiyacınız varsa, bütün cümleleri kabaca 100–200 kelimeye paketleyin. Sorularınız gerçekten iki türdense, bir kez uzlaşmak yerine iki kez indekslemeyi düşünün — ve uzlaşmanın size gerçekten bir şeye mal olup olmadığını ölçün, çünkü bu derlemde bedeli yaklaşık bir puandı.
Yalnızca sorularınız olgu biçimliyse. Burada ölçüldü: 100 kelimelik parçalarda 25 kelimelik bir örtüşme olgu düzeyindeki recall@1’i %95,5’ten %97,5’e taşıdı ve haber düzeyindeki recall@1’i %66,5’ten %65,8’e indirdi — üstelik indekse %29 daha fazla parça ekleyerek. Bir sınırı aşan olgular için bir onarımdır, genel bir güvenlik payı değil. Ve cümle sınırlarında parçalamak, örtüşmeli sabit pencereleri %9 daha küçük bir indeksle yakaladı (%97,8’e karşı %97,5, tek sorgu fark).
Herhangi bir şeyi ayarlamadan önce atfedin. Destekleyici parçanın erişilip erişilmediğini kontrol edin: erişilmediyse bu bir erişim kaçırmasıdır ve prompt’un bununla ilgisi yoktur. Erişildiyse ve cevap onunla çelişiyorsa bu bir dayandırma kaçırmasıdır. Gereken her şey mevcutsa ve sonuç yine de yanlışsa bu bir sentez kaçırmasıdır. Üç neden, üç farklı düzeltme, tek belirti — ve varsayılan refleks olan embedding modelini değiştirmek yalnızca birincisini ele alır.
Hayır — ama bu, bölümün kendisinin ölçmediği cevaplardan biri. İlgisiz bağlam cevapları etkin biçimde bozabilir (Shi vd. 2023), dolayısıyla k “arttıkça daha güvenli” bir ayar değil, gerçek bir ödünleşimdir: onu yükseltmek recall’u artırır ama gürültü de getirir; bir noktadan sonra ikinci etki ağır basabilir. Bu kanıt çoğunlukla akıl yürütme problemlerinden geliyor (RAG tarzı soru cevaplamada Liu vd. (2024), erişilen belge sayısı arttıkça doğruluğun erkenden doyuma ulaştığını gösteriyor); bu bölümün kendi iğne testi cevabın etrafına 79 ilgisiz belge koydu ve hiçbir bedel ödemedi. O yüzden cezayı varsaymadan önce kendi görevinizde ölçün. k’yı ölçerek seçmek için ikinci bir neden daha var: geçirdiğiniz her parçanın bedeli her istekte ödenir, dolayısıyla kulaktan dolma bir kuralla seçilmiş bir k kalıcı bir gider kalemidir.
Genellikle bir tasarım problemidir: sistemin çekimser kalabileceği açık bir çıktı seçeneği yoktur, dolayısıyla parametrik bellekten, akıcı biçimde ve uyarmadan cevap verir. Ona açık bir reddetme çıktısı verin, üretmesini ucuzlatın ve sonra — en sık atlanan adım — derlemin cevaplayamayacağını bildiğiniz sorularda sınayın. O testi çalıştırana kadar çekimser kalabilen bir sistem mi, yoksa bu seçeneği hiç verilmemiş bir sistem mi kurduğunuzu bilemezsiniz. Çekimserliği gerçek, eşiğe bağlı bir karara dönüştürmenin araçları Bölüm 18’de.
20.6 Mülakat soruları
Kaynak konusunda — Bölüm 2’deki çekincenin aynısı. Bu sorular, kitabın kullandığı iki güvenilir açık kaynakta tekrar tekrar geçiyor; bunlara bu bölümün kendi ölçümlerinin cevaplanabilir kıldığı sorular eklendi.
20.6.1 Mekanizmayı anlayıp anlamadığınızı sınayanlar
S: Bir RAG hattını anlatın.
Aşamaları adlandırın ve her birinin neyi bozabileceğini söyleyin, çünkü yedi isimlik bir liste hiçbir şey göstermez. Ayrıştır — tabloların ve taranmış sayfaların sessizce yok edildiği yer. Parçala — neyin erişilebilir olduğuna karar veren. Göm ve indeksle — yaklaşık bir indeksin recall’u sessizce sınırladığı yer. Eriş, yeniden sırala, üret. Sonra önemli olan ilişkiyi verin: recall@k aşağı akıştaki her şeyin sınırını çizer, dolayısıyla hattın, model çağrılmadan önce belirlenmiş bir tavanı vardır.
S: Parça boyutunu nasıl seçersiniz?
Beklediğim sorulara karşı ölçerek; ve iyi cevap evrensel bir sayı olmamasının nedenini adlandırır: parça boyutu hedefleme ile bağlam arasında bir ödünleşimdir ve hangi tarafın kazandığı, sorunun bütün bir belge hakkında mı yoksa belirli bir olgu hakkında mı olduğuna bağlıdır. Bir sayı yerine örüntüyü anlatın — bir derlemde 400 kelimelik parçalar haber düzeyindeki sorular için en iyi, olgu düzeyindekiler için en kötüydü; aynı indekste ve aynı retriever’da. Sonra ölçmeden önce ne yapacağınızı söyleyin: bütün cümleleri paketleyin, 100–200 kelime hedefleyin, örtüşmeyi yalnızca olgu biçimli sorular için ekleyin.
S: Daha çok erişilmiş bağlam eklemek cevapları neden bazen kötüleştirir?
Çünkü ilgisiz bağlam nötr değildir — dikkati dağıtabilir (Shi vd. 2023) — ve çünkü modeller uzun bir bağlamı her zaman eşit okumazlar (Liu vd. 2024). İkisi de k’yı bir güvenlik payı değil, ölçülmüş bir optimumu olan ayarlanmış bir parametre olarak görmek için nedendir. İğne testini kendiniz çalıştırdıysanız ne bulduğunuzu ve hangi koşullarda bulduğunuzu söyleyin, çünkü etkinin büyüklüğü modele ve göreve büyük ölçüde bağlıdır.
20.6.2 Bir tane yayına alıp almadığınızı sınayanlar
S: RAG sisteminiz soruların %30’unda yanlış cevap veriyor. Nedenini nasıl bulursunuz?
Tahmin etmeyi reddederim ve üçlü atfı kurarım: erişim kaçırması, dayandırma kaçırması, sentez kaçırması. Bunu embedding modelini değiştirmeden önce çalıştıracağımı söylerim, çünkü refleks odur ve üç gruptan yalnızca birini ele alır. Sorulmadan eklemeye değer bir nokta da şu: bu atıf, her cevabın yanında erişilen bağlamın kaydedilmesini gerektirir — o kayıt olmadan kusurlar sonradan atfedilemez.
S: Bir RAG sistemini nasıl değerlendirirsiniz?
İki yarıyı ayrı ayrı; çünkü birbirinden bağımsız bozuluyorlar: erişim yarısını etiketli sorgulara karşı recall@k ve nDCG üzerinden, üretim yarısını erişilen bağlama sadakat ve cevap doğruluğu üzerinden. RAGAS (Es vd. 2024) gibi çatılar tam olarak bu ayrıştırmayı dayatıyor — bağlam precision’ı ve recall’u, sadakat ve cevap ilgililiği — ve yapı için kullanmaya değer. Çoğu ekibin atladığı testi ekleyin — derlemin cevaplayamayacağı sorular, sistemin çekimser kalıp kalmadığı üzerinden puanlanmış — ve açıkça söyleyin ki otomatik sadakat puanlarına güvenmeden önce onların doğrulanması gerekir; bu da Bölüm 22’nin konusudur.
S: RAG’i ne zaman kullanmazsınız?
Bilgi prompt’a sığacak kadar küçük ve durağan olduğunda; görev birkaç pasaj yerine bütün derlemi gerektirdiğinde — “bu çeyrekteki her şikâyeti özetle” gibi, erişimin yapısal olarak yeterince göremediği yerde; ve gereksinim aslında doğal dil kılığına girmiş bir veritabanı sorgusu olduğunda, ki o durumda bir şema üzerinde text-to-SQL, satırları gömüp ummayı yener. Tekniğin nerede durduğunu bilmek, bir uygulayıcıyı bir mimari şemasını tekrarlayan birinden ayıran kısımdır.
S: RAG mi, fine-tuning (ince ayar) mi?
Çoğu zaman yanlış bir ikilem. Bilgi için erişimi kullanın — değişen olgular, kullanıcının bir kaynağa karşı denetleyebilmesi gereken olgular, bazı kullanıcıların görmemesi gereken olgular — çünkü bir indeksi güncellemek ucuzdur, her cevap kanıtını kaynak olarak gösterebilir ve yetkiler belge bazında uygulanabilir. Davranış için fine-tuning’i kullanın — biçim, üslup, dar bir görevi güvenilir biçimde yapmak — çünkü küçük bir eğitim koşusunun iyi değiştirdiği şey budur; yeni olguları ise ancak güvenilmez biçimde ekler ve sonradan kolayca silemez. İkisi birleşir: sizin biçiminize göre fine-tune edilmiş bir model, olguları sağlayan erişilmiş belgeler üzerinden cevap verir. Kararı soru soru yürüten karar ağacı için bkz. Bölüm 9.9.
20.7 2026 alet çantası
Bu bölümdeki her şey aşağıdaki sürümlerle tek bir dizüstü bilgisayarda çalıştı.
| kütüphane | kullanılan sürüm | burada ne işe yarıyor |
|---|---|---|
snowballstemmer |
3.1.1 | Bölüm 20.3’teki her erişim sayısının arkasındaki Türkçe gövdeleme |
numpy |
2.5.2 | 24.266 parça üzerinde BM25 ve taramanın tamamı |
ollama |
0.24.0 | iğne testi için yerelde qwen3.5:9b sunmak |
Bilmeye değer, yukarıda kullanılmadı:
| kütüphane | güncel sürüm | ne zaman kullanılır |
|---|---|---|
docling / unstructured |
2.123.0 / 0.27.1 | 1. aşama — PDF’leri ve HTML’i sağ çıkan metne dönüştürmek; üzerine harcamaya en değer aşama |
pymupdf |
1.28.2 | ayrıştırmayı kendiniz kontrol etmek istediğinizde hızlı, düşük düzeyli PDF metin ve düzen çıkarma |
langchain-text-splitters |
1.1.2 | herkesin başladığı parçalayıcılar; özyinelemeli ve yapı farkında bölücüler dâhil |
chonkie |
1.7.0 | yalnızca parçalama kütüphanesi; bölmeyi bir çatının yan etkisi değil ayarlamak istediğiniz şey olarak gördüğünüzde |
llama-index / langchain |
0.14.24 / 1.3.17 | uçtan uca düzenleme; başlamak için yararlı, ona bağımlı hâle gelmeden önce altında ne olduğunu anlamaya değer |
haystack-ai |
3.1.0 | aşamaları açık kılınmış, hat biçimli alternatif |
ragas |
0.4.3 | Bölüm 20.4’ün iki yarımlı değerlendirmesi, uygulanmış hâli (Es vd. 2024) |
20.8 Lab: hangi aşamanın bozulduğunu söyleyen bir RAG sistemi
Teslim edilecek şey bir sohbet botu değil. Yanlış bir cevap verildiğinde sorumlu aşamayı adlandıran bir evaluation harness (değerlendirme düzeneği) — çünkü her hafta gerçekten ihtiyaç duyacağınız ve çoğu ekibin kurmadığı şey odur.
20.8.1 Adım 1 — herhangi bir koddan önce elli soru
Kendi derleminize karşı elli soru yazın ve her biri için onu cevaplayan belgeyi kaydedin. Derlemin cevaplayamayacağı beş tane ekleyin; çekimserliği sınamanın tek yolu onlardır. Bunu önce yapın, çünkü sistemin çıktısını gördükten sonra yazılan sorular, sistemin zaten cevaplayabildiği sorulardır.
20.8.2 Adım 2 — bir değil iki parçalama
Derlemi iki kez indeksleyin: bütün belgeler ve yaklaşık 150 kelimelik cümle paketli parçalar. Artık Bölüm 20.3’ün ödünleşiminin iki ucu kendi verinizde elinizde ve karşılaştırma bir öğleden sonraya mal oluyor.
20.8.3 Adım 3 — bir şey üretmeden önce recall@k ölçün
Her soru için referans belge ilk k içinde mi? O sayı tavanınızdır. %70 ise durun ve erişimi düzeltin; prompt’a yapacağınız hiçbir şey eksik %30’a ulaşmaz.
20.8.4 Adım 4 — üretin ve bağlamı kaydedin
Her soruyu erişilen parçalar prompt’ta olacak şekilde cevaplayın ve parçaları cevabın yanında saklayın. Bağlamı olmayan bir cevap olaydan sonra atfedilemez; bu da kaydı tam ona ihtiyacınız olduğunda işe yaramaz kılar.
20.8.5 Adım 5 — her kusuru atfedin
Her yanlış cevap için Bölüm 20.4’ün üçlü testini sırayla uygulayın: referans parça erişildi mi, cevap erişilen metinle destekleniyor muydu, mevcut olgular verildiğinde sonuç doğru muydu. Bir sayım tablosu üretin.
20.8.6 Adım 6 — reddetmeyi sınayın
Cevaplanamaz beş soruyu çalıştırın. Kaçının yine de kendinden emin bir cevap ürettiğini sayın. Bu lab’ın en bilgilendirici sayısı budur ve en az ölçülen sayılardan biridir.
20.8.7 Neyi teslim edeceksiniz
Üç gruplu atıf tablosunu, onu sınırlayan recall@k’yı, aynı sorularda karşılaştırılmış iki parçalamayı ve önce hangi aşamayı düzelteceğinizi ve neye mal olacağını adlandıran bir paragrafı.
20.9 Alıştırmalar
- Ters dönmeyi yeniden üretin. Kendinize ait 500 belge alın ve iki sorgu kümesi kurun — biri belgenin ne hakkında olduğunu, diğeri belirli bir olgunun nerede olduğunu soran. Parça boyutunu tarayın. Sıralama sizin derleminizde de buradaki gibi ters dönüyor mu? Dönmüyorsa belgelerinizde farklı olan ne?
- Tavanı bulun. Sisteminizin modele gerçekten geçirdiği k için recall@k ölçün. Sonra sisteminizin ulaşabileceği en yüksek uçtan uca doğruluğu hesaplayın. Gerçekte ulaştığıyla karşılaştırın: tavan ile gerçek doğruluk arasındaki fark üretimin, %100 ile tavan arasındaki fark erişimin sorunudur.
- Bir haftalık kusuru atfedin. Sisteminizin geçen hafta ürettiği yanlış cevapları alın ve üç gruba ayırın. Oranları raporlayın. Bakmadan önce hangi grubun en büyük olacağını öngörün.
- Ayrıştırıcıyı bilerek bozun. Alanınızdan on PDF alın, metni çıkarın ve okuyun. Kaç tablonun sağ çıktığını sayın. Bu alıştırmanın, onu çalıştıran kişiyi şaşırtma konusunda %100’lük bir sicili var.
- Dikkat dağılmasını ölçün. Erişimi sabit tutun ve yalnızca k’yı 1’den 20’ye değiştirin. Doğruluğu çizin. Bağlam eklemenin size mal olmaya başladığı noktayı bulun (Shi vd. 2023).
- Reddetmeyi sınayın. Derleminizin cevaplayamayacağı yirmi soru yazın. Kendinden emin cevapları sayın. Sonra açık bir çekimserlik yolu ekleyin ve tekrar ölçün.
- İki ayrıntı düzeyi. Derleminizi hem bütün belge hem cümle paketli parça düzeyinde indeksleyin, her sorguyu birine yönlendirin ve yönlendirmenin iki indeksten birini tek başına yenip yenmediğini ölçün — Bölüm 19’un retriever’lar hakkında sorduğu sorunun bir üst düzeyi.
20.10 Daha derine
Herhangi bir şey okumadan önce: kendi sisteminizden elli yanlış cevap alın ve üç gruba ayırın. Dağılım size bu literatürün hangi yarısının sizi ilgilendirdiğini söyleyecek.
| kaynak | ne olduğu |
|---|---|
ragas |
iki yarımlı değerlendirme uygulanmış hâliyle; mutlak sayıları için değil dayattığı ayrıştırma için kullanın |
| Eugene Yan — LLM örüntüleri | RAG diğer örüntüler arasına yerleştirilmiş, ödünleşimleri belirtilmiş |
| Chip Huyen’in blogu | RAG ve ajan mimarileri üzerine, onları yayına almış birinden uzun soluklu uygulamalı yazılar |
llama-index belgeleri |
kendiniz kursanız bile giriş ve parçalama bölümlerini okumaya değer |
| Stanford CS224N | RAG modellerini ve değerlendirmelerini kapsayan dersler |
| konu | kaynak |
|---|---|
| özgün formülasyon | Lewis vd. (2020) |
| o zamandan beri her şeyin haritası | Gao vd. (2023) |
| modellerin uzun bir bağlamı nasıl kullandığı | Liu vd. (2024) |
| birebir bir iğnenin neden yanlış test olduğu | Modarressi vd. (2025) |
| etkin bir zarar olarak ilgisiz bağlam | Shi vd. (2023) |
| iki yarımı ayrı değerlendirmek | Es vd. (2024) |
| erişim yapılıp yapılmayacağına karar vermek | Asai vd. (2024) |
20.11 Akılda kalması gerekenler
- İğne testi hiçbir şey bulmadı ve bölümün ilk dersi bu. On altı koşul, 640 sorgu, 16.775 token’a kadar her bağlam boyutunda ve her konumda %100 — hücre başına 40 sorguyla, ki bu büyük bir konum çöküşünü dışlamaya yeter, küçüğünü dışlamaya yetmez. Ortada kaybolma etkisi burada yeniden üretilmedi, çünkü nadir anahtarlı birebir bir dizgi attention’ın yapabileceği en kolay şeydir — etki hayal ürünü olduğu için değil: Modarressi vd. (2025) sözcük örtüşmesini kaldırıyor ve on üç uzun bağlam modelinin on birinin kısa bağlamdaki baseline’larının yarısının altına düştüğünü görüyor. Her şeyin geçtiği bir benchmark (kıyaslama) sizin riskinizi ölçmüyordur.
- Ayakta kalan şey maliyettir ve büyüktür. Cevabı içeren tek belge yerine seksen belge: birebir aynı doğruluk için 148 kat girdi token’ı, bir önbellekten karşılanamayan her istekte ödenen — prompt önbellekleme bunu 15 kata yaklaştırıyor, o da yalnızca önek sabitken — ve bağlam uzadıkça attention’ın karesel payı büyürken. Erişim, okuyamayan bir model için bir koltuk değneği değil; ihtiyacınız olmayan 79 belge için ödemeyi bırakma biçiminizdir.
- Erişimin kalıcı nedenlerinin pencere boyutuyla ilgisi yoktur. Modelin parametreleri sabit kalır ama belgeleriniz güncellenir; özel belgeleriniz modelin eğitiminde hiç yoktu; erişilen her parça bir kaynağa bağlanıp denetlenebilir; ve bir prompt kimin hangi belgeyi görebileceğini zorlayamaz. Erişim uydurmayı azaltır ama sıfırlamaz. Bir neden de pratiktir: gerçek derlemlerin çoğu herhangi bir pencereden çok daha büyüktür.
- Parça boyutu, soruların gerektirdiği ayrıntı düzeyine göre seçilmelidir. Bir derlemde 400 kelimelik parçalar haber düzeyindeki erişimde %72,5 recall@1 ile başı çekti ve olgu düzeyindeki erişimde %93,8 ile sonuncu geldi; 50 kelimelik parçalar tersini yaptı. Bir koşuldaki en iyi yapılandırma diğerinde en kötüsü, dolayısıyla bir blog yazısından kopyalanmış bir parça boyutu, yazarının hiç görmediği sorular hakkında bir tahmindir.
- Örtüşme bir onarımdır, güvenlik payı değil. 100 kelimelik parçalarda 25 kelimelik bir örtüşme olgu düzeyindeki sorgularda +2,0 puan kazandırdı, haber düzeyindekilerde 0,7 puan kaybettirdi; üstelik %29 daha büyük bir indeks karşılığında. Yalnızca bir sınırı aşan olguları düzeltir, başka hiçbir şeyi değil.
- Yapı aritmetiği yendi, çoğunlukla. ~100 kelimelik cümle hizalı parçalar %97,8’e ulaştı; sabit 100 kelimelik pencereler %95,5’e — ve örtüşmeli varyantı (%97,5, bir sorgu geride) %9 daha küçük bir indeksle yakaladı. Cümle hizalı parçalar aynı zamanda daha küçük: parça başına 86 kelime, sabit pencerelerde 99. Sabit boyut serisinden ara değerleme, 2,3 puanın kabaca ikisini sınıra atfediyor; ama aynı boyutlu kontrol henüz çalıştırılmadı. Bir olgunun içinden kesmeyi bırakmanın en ucuz yolu, metnin zaten kırıldığı yerden kesmektir.
- Tüketicinizin gerçekten okuduğu metriği izleyin. Olgu düzeyindeki sorgularda recall@1 bu yapılandırmalar arasında dört puan oynadı, recall@5 ise %97,2 ile %100 arasında kaldı; haber düzeyindeki sorgularda recall@1 on beş puan salındı ve recall@5 hâlâ on puanlık bir aralığa yayıldı. Üreticiniz beş parça okuyorsa ve sorularınız olgu biçimliyse, parçalama seçimi doğru haberi bulmayı neredeyse etkilemez; tek parça okuyorsa R@1 sütunları sizin sisteminizdir. Getirilen parçanın cevaplayan cümleyi taşıyıp taşımadığı ayrı bir ölçümdür ve bu koşu onu yapmıyor.
- Üç kusur, tek belirti. Yanlış bir cevap ya bir erişim kaçırması, ya bir dayandırma kaçırması, ya da bir sentez kaçırmasıdır ve üç farklı düzeltmeleri vardır. Ayarlamadan önce atfedin — refleks düzeltme olan embedding modelini değiştirmek, üçünden birini ele alır.
- Parçaları numaralandırın, kaynak gösterilmesini isteyin ve kaynakları denetleyin. Kaynak gösterimi de bir iddiadır. Sadakat (desteklenen iddialar ÷ tüm iddialar) ve bağlam recall’u iki yarıyı zaman içinde puanlar; ama bir LLM hakemden gelirler, o yüzden sayıya güvenmeden önce hakemi doğrulayın.
- Çekimser kalmanın yolu olmayan bir sistem çekimser kalmaz. Ona açık bir reddetme çıktısı verin ve sonra derlemin cevaplayamayacağı sorularda sınayın. En sık atlanan test budur; reddedebilen bir sistemle bu seçeneği hiç verilmemiş bir sistemi birbirinden ayıran da odur.