İçeriğe geç
Dolphy
Test ve Ölçüm

RAG'de Recall %99 İken Bot Neden Eksik Cevap Verir?

Mustafa Gürbüz7 dk okuma
Test tezgâhında belge yığını, sunucu modülü ve bir çubuğu eksik sıralı liste ekranı; üstte “RAG'de recall %99 iken bot neden eksik cevap verir?” başlığı

Bilgi tabanından cevap üreten bir chatbotu (RAG) test ederken ilk bakılan ölçü genellikle recall'dur: doğru sayfa ilk birkaç sonuç içinde geliyor mu? Bizim test setlerimizde bu oran %93 ile %100 arasındaydı. Yine de bot bazı sorularda eksik ya da yanlış ayrıntılı cevap veriyordu.

Recall, sorunun bulunamadığını göstermiyordu. Sorun bulunan sayfanın modele nasıl ulaştığındaydı. Bu yazıda recall'un göremediği dört katmanı ve her birini nasıl ölçtüğümüzü anlatıyoruz. Ölçümler farklı sektörlerden test sitelerinde yapıldı: bir otel, bir e-ticaret mağazası, bir klinik, bir emlak sitesi ve Dolphy'nin kendi sitesi.

1. Doğru sayfa bulunuyor, içeriğin çoğu modele gitmiyor

Bilgi tabanı 4.885 parçadan oluşuyordu. Parça boyu medyanı 143 token'dı; parçalama penceresi ise 700 token. Parçaların %67'si 200 token'ın altındaydı. Tek bir blog sayfası 21, tek bir ürün sayfası 18 parçaya bölünmüştü.

Arama her sayfadan en fazla 3-4 parça alıyor. Hesap basit: 3.000 token'lık bir sayfadan modele giden metin 3 × 143 ≈ 430 token, yani sayfanın yedide biri. Doğru sayfa listede, ama içeriğinin çoğu promptun dışında.

Sebep parçalayıcının bir kuralıydı: her H1/H2 başlığı koşulsuz yeni parça açıyordu. Yapay zekâ ile düzenlenen sayfalar çok sayıda ## başlığı içerdiği için parçalar ufalanıyordu. Kurala bir alt sınır eklendi: 250 token'dan kısa bölüm yeni parça açmıyor, bir öncekiyle birleşiyor.

Ölçü Önce Sonra
Toplam parça 4.885 2.473
Parça boyu p10 63 206
Parça boyu p50 143 362
Parça boyu p90 416 657
200 token altı parça %67 %9
Parça boyu dağılımının parçalama kuralından önce ve sonra karşılaştırması
Parça boyu dağılımının parçalama kuralından önce ve sonra karşılaştırması

Recall değişmedi; değişmesi de beklenmiyordu. Değişen, modelin doğru sayfadan gördüğü metin miktarıydı. Bu yüzden ölçümü sayfa isabetinden olgu kapsamasına genişlettik: sorunun cevabı için gereken bütün bilgiler ilk 8 parçada mı?

Bu ölçümde bir tuzak da vardı. MRR (doğru parçanın sırası) parça boyları arasında karşılaştırılabilir bir ölçü değil. Aynı sayfa 3 parça yerine 1 parça üretince, aranan metnin ilk sıraya düşme olasılığı yalnız sayı yüzünden değişiyor.

2. Ürün kartlarının yarısı kopyaydı

Sohbette ürün sorulduğunda cevabın altında bir kart gösteriliyor: görsel, fiyat, bağlantı. Kartlar sayfa taranırken çıkarılıyor. Bir e-ticaret test sitesinde 686 kart satırı vardı ama yalnız 303 farklı başlık: kartların %55,8'i kopyaydı. Aynı ürün kendi sayfasında, kategori listesinde ve marka listesinde ayrı ayrı geçiyor, her sayfa kendi kartını yazıyordu.

Kopyalar birbirinin aynısı değildi:

Kart nereden geliyor? Kart Görselli
Ürün sayfası 199 %97,5
Liste sayfası (kategori, marka) 487 %1,6

179 kopya kümesinin 131'inde fiyat kopyalar arasında çelişiyordu. Liste sayfası görünür metinden en ucuz varyantın fiyatını alıyordu; ürün sayfası yapılandırılmış veriden paket boyutuyla birlikte doğru fiyatı. Bir kedi maması örneğinde liste kartı 1.559,90 ₺ yazıyordu (hangi paket olduğunu söylemeden), ürün sayfası kartı 15 kg paket için 7.769,90 ₺.

Kartları seçen sorgu sırasız ve 8 satırla sınırlıydı. Tablonun yarısı kopya olduğu için zengin kopya çoğu zaman o sekize hiç girmiyordu. Sonuç: bot doğru ürünü söylüyor, altındaki kart görselsiz, yanlış fiyatlı ve kategori sayfasına gidiyordu. Retrieval hatası değildi; beş test setindeki 114 sorgunun hepsinde doğru sayfa ilk 8'deydi.

Düzeltme kart katmanında yapıldı: kopyalar birleştirilirken boş alan diğer kopyadan dolduruluyor, bağlantı görseli taşıyan kopyadan (pratikte ürünün kendi sayfası) alınıyor, fiyat biçimi tekleşiyor ve seçim sırası belirli.

3. Sözcüksel arama pratikte çalışmıyordu

Hibrit arama iki koldan oluşuyor: anlam benzerliği (vektör) ve kelime eşleşmesi (sözcüksel). Ürün kodları, model adları ve özel terimler için sözcüksel kol önemli; vektörler "PT100" ile "SHT31" arasındaki farkı iyi ayırmaz.

Ölçünce sözcüksel kolun gerçekçi sorularda neredeyse hiç sonuç döndürmediğini gördük. Kullanılan PostgreSQL fonksiyonu sorudaki bütün kelimeleri "VE" ile bağlıyordu. "Kısırlaştırılmış kediler için hangi mamayı önerirsiniz" gibi doğal bir soruda bütün kelimelerin aynı parçada geçmesi gerekiyordu. Bir test sitesinde 10 gerçekçi sorunun 10'unda sıfır eşleşme vardı; diğerlerinde 10'da 8 ve 10'da 2.

Bu kolu açmayı daha önce denemiş ve MRR'ı düşürdüğü için kapatmıştık. Kayda bakınca o ölçümün rerank açıkken alındığı ortaya çıktı; rerank sonradan kaldırılmıştı (rerank yazısı). Ölçüm geçersizdi.

Sözcüksel kol için ürün koduyla arayan ayrı bir test seti yazdık (PT100, SHT31, NRF24L01, RP2040 gibi) ve kelimeleri "VEYA" ile bağlayan ikinci bir kolu altı sette ölçtük:

Set Kapalı (MRR) Açık (MRR)
E-ticaret (evcil hayvan) 0,861 0,890
E-ticaret (elektronik) 0,931 0,928
Otel 0,719 0,822
Emlak 0,870 0,912
Emlak (İngilizce) 0,847 0,975
Ürün kodu 0,900 (hit %93) 0,922 (hit %100)

Hiçbir sette ilk 8 isabeti düşmedi. Kol varsayılan olarak açıldı. "VEYA" tek başına havuzu şişirdiği için (bir soruda 1.475 parçanın 1.302'si eşleşiyordu) sıralamayı vektör kolu ve füzyon belirliyor.

Aynı katmanda bir dil varsayımı da vardı. Tam metin arama Türkçe kök bulucuya (turkish) kilitliydi. Türkçe kök bulucu İngilizce kelimeyi tanımıyor; İngilizce içerikte sözcüksel kol sessizce kayboluyordu. Kök bulmayan ikinci bir kolon (simple) eklendi ve iki kolun sonucu birleştiriliyor. Hata vermeyen, yalnız daha az bulan bir sorundu.

4. Blog yazısı hizmet sayfasının önüne geçiyor

Bir klinik test sitesinde "çene botoksu yapıyor musunuz?" sorusuna bot "sunulup sunulmadığını kesinleştiremiyorum" dedi. Hizmet sayfası vardı; ama arama sonuçlarında aynı konudaki blog yazılarının arkasında, 5.-6. sıradaydı. 20 vakalık bir sıralama setinde ilk 8 isabeti %95, ilk sıra isabeti %74'tü. İlk sırayı kaçıran beş vakanın dördünde öne geçen bir blog yazısıydı.

Önce sorunun gerçekten aramada olup olmadığını ayırdık. Sekiz niyeti beş farklı biçimde yazdık (düz soru, yazım hatalı günlük dil, dolaylı ihtiyaç, istek kipi, İngilizce) ve 40 gerçek turda üç katmanı ayrı ölçtük:

  • Anlama: Niyet doğru mu sınıflandırıldı? 40/40.
  • Bulma: Beklenen sayfa kaçıncı sırada?
  • Cevap: Cevap doğru mu, kaçamak mı? 37/40.

Hataların kaynağı bulmaydı. İlk deneme yazı sayfalarına her soruda ceza vermekti: hizmet soruları düzeldi, fiyat ve blog soruları geriledi. Cezayı yalnız hizmet niyetinde uygulamak test laboratuvarında kusursuz göründü (hizmet sorularında MRR 0,65 → 1,00). Gerçek turda ise işletmenin kendi ürününü anlatan blog yazısını da geri itti ve iki vakada kanıt kayboldu. Geri alındı.

Kalan çözüm sıralamaya dokunmuyor: niyet hizmet, randevu ya da müsaitlikse ve en iyi hizmet sayfası seçilen parçalarda yoksa, yeterince yüksek skorlu hizmet sayfası en zayıf blog parçalarının yerine giriyor. Sayfa türü taramada belirleniyor (yapılandırılmış verideki BlogPosting türü ya da WordPress'in single-post sınıfı). Beş test sitesinde kural her soruya uygulansa bile hiçbir sıralama değişmedi, yani başka soruları bozmuyor. Aynı soru beş ardışık gerçek turda 0/5'ten 5/5'e çıktı.

Bağlam bütçesi

Son bir deneme modele giden bilgi miktarıyla ilgiliydi. Bilgi bütçesi 4.000 token ve 8 geçmiş mesajdan 6.000 token ve 12 mesaja çıkarıldı. Altı hakemli sette tam geçen vaka 86'dan 90'a, kurallı kontrollerden geçen vaka 93'ten 96'ya çıktı. Giriş token'ı yalnız %0,5 arttı, çünkü bütçe bu setlerde nadiren doluyordu. Sesli kanalda bütçe gecikme yüzünden 1.600 token'da kaldı.

Geniş sorular için bir de katalog özeti ekledik. "Hangi tedavileri yapıyorsunuz?" gibi bir soruda model o turun sekiz parçasını görüyor ve 85 kalemli bir klinikte yalnız üç kalemi anıyordu. Bilgi bloğunun başına kategori ve örnek adlardan oluşan bir özet giriyor. Bu özet 7-8 kalemli sitelerde fiyat ve saat ayrıntısını azalttığı için yalnız 12'den fazla ayrı kalem olan sitelerde ekleniyor. Özetin içine toplam sayı yazılmıyor; neredeyse aynı adlar sayımı şişirdi ve model bir denemede "toplam 82 kalem" dedi.

RAG testinizi nasıl kurarsınız?

  • Recall'u tek ölçü yapmayın. Doğru sayfa bulunsa da cevap için gereken bilgi modele ulaşmayabilir. Olgu kapsamasını ölçün.
  • Parça boyu dağılımına bakın. Medyan parça pencerenin küçük bir kesriyse içerik ufalanıyor demektir.
  • Retrieval sonrası katmanları ayrı test edin. Kart, fiyat, bağlantı gibi çıktılar retrieval'dan bağımsız bozulabilir.
  • Her kolu ayrı ölçün. Hibrit aramanın sözcüksel kolu sessizce çalışmıyor olabilir; ürün kodu gibi ona özgü bir test seti yazın.
  • Eski ölçümün koşullarını kontrol edin. Kapatılmış bir özelliğin gerekçesi, sonradan değişen bir koşula dayanıyor olabilir.
  • Laboratuvar sonucunu gerçek turla doğrulayın. Sıralama laboratuvarında kusursuz görünen bir ceza, gerçek cevapta kanıt kaybettirdi.

Ölçümün sınırları

Test setleri 15-35 vakalık; bu boyutta ±1 vaka ve ±0,03 MRR fark gürültü düzeyinde (hakem ve gürültü yazısı). Siteler test amaçlı taranmış gerçek sitelerdi ama her sektörü temsil etmez. Olgu kapsaması etiketleri birkaç set için elle yazıldı.

Sık sorulan sorular

Bu bölümdeki sorular, aynı konuda en sık arananlardan derlendi.

01

RAG'de recall yüksekken cevap neden yanlış olur?

Çünkü recall yalnız doğru sayfanın listede olup olmadığını ölçer. Sayfanın içeriği küçük parçalara bölündüyse gereken bilgi modele gitmeyebilir; retrieval'dan sonra çalışan kart, fiyat ve bağlantı katmanları da ayrıca bozulabilir. Olgu kapsaması ve cevap doğruluğu ayrı ölçülmeli.

02

RAG için ideal parça boyu nedir?

Tek bir doğru değer yok. Bizim hattımızda 700 token'lık pencerede medyan parça 143 token'dan 362 token'a çıkınca model aynı sayfadan çok daha fazla bilgi görmeye başladı ve recall değişmedi. Parça boyunu ayarlamadan önce mevcut dağılımı ölçmenizi öneririz.

03

Hibrit aramada sözcüksel kol gerekli mi?

Ürün kodu, model adı ve özel terimler için evet. Ama doğal dildeki sorularda bütün kelimeleri "VE" ile bağlayan bir sorgu neredeyse hiç sonuç döndürmeyebilir. Bizim ölçümümüzde "VEYA" ile bağlanan bir kol hiçbir sette isabeti düşürmedi ve bazı setlerde MRR'ı belirgin artırdı.

04

Blog yazıları hizmet sayfasını neden geçiyor?

Blog yazıları konuyu uzun ve ayrıntılı anlattığı için anlam benzerliğinde öne çıkabilir. Genel bir ceza başka soruları bozdu; bizde işe yarayan, sıralamayı değiştirmeden hizmet sayfasının sonuçlarda bulunmasını garanti eden dar bir kural oldu.

Paylaş

Mustafa Gürbüz

Dolphy Yöneticisi

Dolphy'nin yöneticisi. Sesli asistan, yazılı sohbet ve bilgi tabanı hattındaki testleri yürütüyor. Yazılardaki sayılar Dolphy'nin kendi test ortamında alınan ölçümlerden geliyor; her yazı ölçümün kapsamını ve sınırını da söylüyor.

İçerik 28 Eylül 2026 tarihinde kontrol edildi

Aynı soruları müşterilere tekrar tekrar yazmayın

Dolphy web sitesi, WhatsApp ve Instagram'da işletmenizin kendi bilgisiyle yanıt verir, talepleri panele düşürür.

Demo paneli gör

İlgili yazılar

Grafikli laptop, ortada hassas terazi ve kontrol listesi; üstte “Chatbot'un uydurduğunu nasıl ölçtük?” başlığı
Test ve Ölçüm7 dk okuma

Chatbot'un Uydurduğunu Nasıl Ölçtük? Hakem Model, Kalibrasyon ve Gürültü

Bilgi tabanından cevap veren bir chatbot'un uydurup uydurmadığını ölçmek için gerçek cevap hattını test sorularıyla koşturan, kurallı kontrollerin yanında farklı aileden bir hakem model kullanan bir değerlendirme aracı kurduk. İlk öğrendiğimiz, hakemin de yanıldığıydı: 'kaldı' dediği 8 vakanın yalnız 2'si gerçek hataydı, 3'ü hakemin kendi yanlışıydı. Hakemi insan etiketli vakalarla kalibre ettik, sonuçları geçti/kaldı/hata diye ayırdık ve küçük setlerde ±1 vakanın gürültü olduğunu ölçtük. Bu düzenle beş işletme sitesinde 73 vakada 1 gerçek uydurma bulundu.

Yazıyı oku
Sunucu modülü, sırası değişen sonuç listesi ekranı ve kart kutusu; üstte “Hibrit aramada rerank gerçekten gerekli mi?” başlığı
Test ve Ölçüm7 dk okuma

Rerank Gerçekten Gerekli mi? Hibrit Aramada Ölçtüklerimiz

Rerank, RAG'in en çok önerilen iyileştirmelerinden biri. Bizim ölçümümüzde çok dilli bir rerank modeli 59 test vakasında yalnız 1 vakayı kurtardı ve her yazılı tura 668 ms ekledi; kapattık. Rerank'in yaptığı işin bir kısmı iki mekanik düzeltmeyle geri geldi: aday havuzunu rerank'ten bağımsız 30'da tutmak ve aynı sayfanın kopyalarını ayıklamak. Ardından iki arama kolunu birleştiren RRF yerine skor ölçeğini koruyan kalibre füzyona geçtik; 101 soruda ilk sıra isabeti %81'den %86'ya çıktı. Aynı süreçte küçük setlerde ±1 vakanın gürültü olduğunu ölçtük.

Yazıyı oku
Dağınık kâğıt yığını, belge tarayıcı ve düzenli kart destesi; üstte “Site içeriği bilgi tabanına yapay zekâyla mı girmeli, ham mı?” başlığı
Test ve Ölçüm7 dk okuma

Site İçeriği Bilgi Tabanına Yapay Zekâyla mı Girmeli, Ham mı? Sadakat Kapısı ve Maliyet

Tarayıp çektiğimiz sayfayı chatbot'a olduğu gibi mi vermeli, yoksa bir dil modeline temizletip mi? İki uç da yanlış çıktı. Ham metin, ürün özelliklerinin tek bir hücreye sıkıştığı sayfalarda ve menüsü ayıklanamayan tek sayfalık kaynaklarda kötü; her sayfayı yeniden yazmak ise pahalı ve risksiz değil. Yeniden yazımı bir sadakat kapısından geçiriyoruz: sayılar, olumsuzluklar ve tablo satırları kaybolursa ham metin kalıyor. Kapının üç yanlış alarmını düzeltince uygulanan yeniden yazım 4 sayfada 1'den 4'e çıktı, maliyet %59 düştü. Sayfa başı maliyet tahminimiz ise ilk ölçümde 3 kat düşük çıktı.

Yazıyı oku