Ten Is Not a Hundred
Bir bankanın müşteri hizmetleri sohbet uygulamasında RAG (Retrieval-Augmented Generation) sistemi kullanılıyor. Bir kullanıcı, bir fatura hakkında soru soruyor. Sistem tarafından getirilen belge, toplam tutarın 10.000 dolar olduğunu belirtiyor. Ancak chatbot, müşteriye toplam tutarın 1.000 dolar olduğunu söylüyor.
Eğer dikkatlice incelerseniz (ve siz de bir LLM değilseniz), bu hatayı hemen fark edersiniz ve finans alanında uzman olmanıza gerek yoktur. Bankanın, tam olarak böyle durumlar için bir inceleme süreci bulunmaktadır. Bu süreçte hem kurallar kullanılıyor hem de bir LLM modeli (judge) devreye sokuluyor. Model, cevabı parçalara ayırıyor ve her bir parçanın bağlamdan ne kadar çıkarılabileceğini değerlendiriyor. Anlamın bulunduğu yerlerde, “toplam 1.000 dolar” ifadesi ile “toplam 10.000 dolar” ifadesi neredeyse aynı anlama geliyor.
Bir hafta boyunca, mevcut olan standart halüsinasyon tespit araçlarının bu sorunu nasıl ele aldığına dair bir çalışma yaptım. Ardından, bu çalışmanın altında yatan ikinci bir soruya odaklandım: Bu araçların, gerçek bir üretim sisteminin çalıştığı hızda çalışıp çalışmadığını anlamak.
Bu ikinci haftanın kısa özeti şu: Cevap hayır. Ne eğitilmiş tespit modelleri, ne LLM judge’u, ne de entailment modelleri ve hatta benim geliştirdiğim çözüm bile bu hızda çalışmıyor. Aşağıda, tüm sonuçları (başarısız olduğum hücreleri de dahil) detaylı olarak sunacağım.
Uygulamalı Yaklaşım
RAGTruth [1], yani gerçek RAG cevaplarından oluşan bir veri kümesi kullandım ve basit bir test seti oluşturdum: Yüz uzun, kaynak belgedekiyle eşleşen cevap ve her birinin aynısı, ancak tek bir rakamın değiştirildiği kopyası. 1.000 yerine 10.000 veya 35 yerine 53 gibi. Yukarıdaki hatanın iki yüz örneği. Bu seti kendim oluşturdum ve daha sonraki bölümlerde, sayıları kontrol etmenin önemini vurgulayan bir yöntem tanıtacağım.
Beş farklı yaklaşıma sahip beş adet tespit aracını kullandım.
Sonuçlar neredeyse tamamen aynı yönde çıktı.
Bu araçlardan dördü sorunu tespit edemedi. Sadece MinCheck hafif bir uyarı sinyali verdi.
Neden Başarısız Oluyorlar?
Çünkü bu araçların hepsi farklı sorulara cevap veriyor.
Mevcut yöntemler genellikle cevabı bir vektöre dönüştürüyor ve bu vektörün bağlamla olan uzaklığını ölçüyor. Altmış kelimelik bir cevapta, tek bir rakamın değişmesiyle oluşan hata, doğru cevabın vektörüyle neredeyse aynı değerlere sahip oluyor. Örneğin, kosinüs benzerliği değeri yaklaşık 0.99 olarak hesaplanıyor. Ancak model tarafından verilen cevap hatalı. Hata, bir damla mürekkebin havuzda çözünmesi gibi yok oluyor.
Cümle kodlayıcıları, “aynı anlama gelen ifadelerin aynı yerde bulunması” şeklinde bir amaçla eğitiliyor. Bu amaç, geri getirmenin çalışmasını sağlıyor ve büyüklük (magnitude) ilk ortadan kaybolan şey bu.
Kodlayıcılar, metni kelime dağarcığına, konuya ve yapıya göre düzenler. Ancak doğruluğa göre değil.
LLM judge’unun farklı bir başarısızlık nedeni var. Kontrolü yapan modelin de aynı kör noktası var: Bu model, verilen cevabın ne kadar olası olduğuna bakıyor. “Toplam 1.000 dolar” ifadesi, tamamen olası bir fatura açıklamasıdır. Cevapta, rakamları karşılaştırmasını zorunlu kılan hiçbir şey yoktur.
Eğitilmiş tespit modeli, eğitim verilerindeki halüsinasyonları öğrenmiştir ve tek haneli sayısal değişiklikler bu etiketlerde nadirdir. Bu konuya daha sonra geri döneceğiz.
Bilgisayarın En Eski Fikri
Tartıştığımız sorunu çözebilecek fikir, bilgisayar biliminin en eski fikirlerinden biri olabilir. Cevabı manuel olarak kontrol ettiğimizde, hem cevabı hem de kaynağı özetleyip karşılaştırmıyoruz. Her bir parçayı ayrı ayrı alıp arıyoruz. “Fatura” – orada. “Toplam” – orada. “1.000” yok. Kaynakta 10.000 yazıyor.
Karşılaştırma, hatanın oluştuğu çözünürlükte yapılıyor. Kelimeler anlamla karşılaştırılırken, sayılar değer olarak karşılaştırılıyor. Sayıların benzerliği değerlendirilmiyor. 1.010, hatalı olduğu gibi 10.000 de kabul edilemez.
Bu yaklaşım, küçük ve açık kaynaklı bir kütüphane olarak paketlenmiş durumda: groundlens. Herhangi bir eğitim veya API çağrısı gerektirmiyor; sadece mevcut olan bir kodlayıcının tek bir çalıştırması ve düzenli bir ifade kullanılıyor. Yaklaşık 70 milisaniyede bir cevap veriyor.
Beş Alan
Her şeyi beş farklı veri kümesinde test ettim: Yukarıda bahsedilen hatalı sayı içeren veri seti, RAGTruth QA (span detector’un ana benchmark’ı), HaluEval QA ve finans [10] ve tıbbi [11] alanlarına ait HaluBench alt kümeleri.
Sonuçlar
Tüm deneylerde AUROC (Area Under the Receiver Operating Characteristic curve) metriği kullanıldı. AUROC, iyi bir cevabın ve kötü bir cevabın karşılaştırılmasıyla elde edilir.
Tablodaki diyagonal boyunca okunduğunda, her yöntemin kendi oluşturduğu veri setlerinde başarılı olduğu, ancak diğer yerlerde başarısız olduğu görülüyor. Başka bir deyişle, çoğu halüsinasyon tespit modeli, belirli bir korpusa göre oluşturulmuştur ve bu nedenle o korpusla ilgili testlerde iyi sonuçlar verir. Span detector, kendi benchmark’ında en iyi sonucu veriyor. MinCheck, paraphrase veri setinde en iyi sonucu veriyor. LLM judge ise tıbbi veri setinde en iyi sonucu veriyor çünkü bu veri setindeki hatalar, yanlış çıkarımlar üzerine kurulu ve LLM bu tür hataları doğru tespit ediyor. Benim önerdiğim yöntem ise hatalı sayı içeren veri setinde en iyi sonucu veriyor.
Şekil 2, evrensel bir halüsinasyon tespit aracının olmadığını gösteriyor. Her araç, belirli alanlarda uzmanlaşmıştır ve hesaplanan değerlerin yanlış olduğu durumlarda (örneğin, finans veri seti) hiçbir araç çalışmamaktadır.
AUROC metriği kullanılarak elde edilen sonuçlar, sıralama metriğidir. Ancak gerçek dünyadaki uygulamalarda, sıralamalar yerine belirli bir eşik değeri kullanılır. Örneğin, “yanlış cevapların %95’ini yakalamalıyız” gibi bir hedef belirlenir. Bu durumda, doğru cevapların kaç tanesinin yanlışlıkla işaretlendiği (false positive) önemlidir.
Tüm veri kümelerinde en iyi sonuç veren yöntem, doğru cevapların %69.5’inin yanlışlıkla işaretlenmesine neden oluyor. Bu değer, kabul edilebilir bir eşik olarak değerlendirilmelidir.
En dikkat çekici nokta, eğitilmiş span detector’un performansı: AUROC değeri 0.817 ve bu değer, diğer tüm yöntemlere göre en yüksek değerdir. Ancak, bu yöntemin yanlış pozitif oranı (%99) çok yüksektir.
Öneriler
Halüsinasyon tespit araçları, “bu cevap yanlıştır” şeklinde kesin bir yargı yerine, “bu kelimeler kaynakla en az desteklenenlerdir ve kaynağın bu kelimelere en yakın olan kısmı şudur” şeklinde bir geri bildirim sağlamalıdır. Bu şekilde, kullanıcılar hem sorunun yerini tespit edebilirler hem de yanlış pozitif oranını azaltabilirler.
İletişim
Herhangi bir yorum, öneri veya eleştiri için [email protected] adresinden iletişime geçebilirsiniz. Aşağıda, açık kaynaklı kütüphane hakkında daha fazla bilgi bulabilirsiniz.
[1] Niu, C., Wu, Y., Zhu, J., Xu, S., Shum, K., Zhong, R., … & Zhang, T. (2024, August). Ragtruth: A hallucination corpus for developing trustworthy retrieval-augmented language models. In
Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)
(pp. 10862-10878). [2] Es, S., James, J., Anke, L. E., & Schockaert, S. (2024, March). Ragas: Automated evaluation of retrieval augmented generation. In
Proceedings of the 18th conference of the european chapter of the association for computational linguistics: system demonstrations
(pp. 150-158). [8] Tang, L., Laban, P., & Durrett, G. (2024, November). Minicheck: Efficient fact-checking of llms on grounding documents. In
Proceedings of the 2024 Conference on Empirical Methods in Natural Language Processing
(pp. 8818-8847). [10] Marín, J. (2025). Semantic grounding index: Geometric bounds on context engagement in RAG systems.
arXiv preprint arXiv:2512.13771
. [12] Marín, J. (2026). A Geometric Taxonomy of Hallucinations in LLMs.
arXiv preprint arXiv:2602.13224
ile bu yaklaşımı uygulayabilirsiniz: pip install “groundlens[encoder]”.
Bu Gelişmeyi Toplulukta Değerlendirin
Haber hakkındaki düşüncelerinizi, donanım deneyimlerinizi ve teknik sorularınızı topluluk üyeleriyle anlık olarak tartışın.
Bir yanıt yazın