Retrieval-Augmented Generation (RAG), doğrulanmış dış veri kaynaklarına dayalı yanıtlar sunarak model halüsinasyonlarının kronik sorununa çözüm sunan kurumsal Büyük Dil Modelleri (LLM) uygulamaları için altın standart haline gelmiştir. Ancak, RAG'ın otomatik olarak doğruluk garantisi verdiği yönünde yaygın bir yanılgı devam etmektedir. Gerçekte, RAG boru hatları, modelin doğru gerçeklere erişimi olmasına rağmen, doğru bilgileri içeren bağlamda plausible (makul görünen) ancak hatalı bilgiler ürettiği "bağlamsal" veya "atıf" halüsinasyonları olarak bilinen benzersiz bir halüsinasyon sınıfı sunar.
Orta ve ileri düzey geliştiriciler için basit doğruluk metriklerinin ötesine geçmek esastır. Yanıtın doğru olup olmadığını değil, yanıtın alınan verilerde temellendirilip temellendirilmediğini ve retrieval (bilgi çekme) mekanizmasının kendisinin doğru çalışıp çalışmadığını değerlendirmeliyiz. Bu yazı, RAG boru hatlarında doğruluğun değerlendirilmesinin teknik inceliklerini ele almaktadır.
RAG Halüsinasyonlarının Anatomisi
Halüsinasyonları etkili bir şekilde tespit etmek için önce onları kategorize etmeliyiz. Standart bir RAG boru hattında iki temel hata modu bulunur:
- Retrieval Başarısızlıkları: Sistem ilgili belge parçasını çekmeyi başaramaz ve LLM önceden eğitilmiş verilerine (kaynak halüsinasyonu) dayanmak zorunda kalır.
- Üretim Başarısızlıkları: Doğru bağlam çekilir, ancak LLM bunu yok sayar, çelişir veya kaynakta bulunmayan detayları halüsiyon eder (üretim halüsinasyonu).
Bunları değerlendirmek çok yönlü bir yaklaşım gerektirir. Yalnızca tam eşleşme metriklerine güvenemeyiz. Bunun yerine, üretilen çıktının gerçek doğrulukla ve alınan bağlamla ne kadar yakından uyumlu olduğunu ölçmek için semantik benzerlik ve sadakat (faithfulness) skorlarını kullanırız.
Doğruluk İçin Temel Değerlendirme Metrikleri
Modern RAG değerlendirme çerçeveleri, örneğin RAGAS veya DeepEval, doğruluğu değerlendirmek için üç temel metrik kullanır:
- Sadakat (Faithfulness): Üretilen yanıtın sağlanan bağlamdan çıkarılabileceğini ölçer. Bu, üretim halüsinasyonlarına karşı birincil savunmadır.
- Bağlam İlgisi: Alınan bağlamın soruyu yanıtlamak için gereken bilgiyi gerçekten içerip içermediğini değerlendirir.
- Yanıt İlgisi: Üretilen yanıtın kullanıcının sorgusunu doğrudan yanıtlayıp yanıtlamadığını kontrol eder.
Bu metrikleri birleştirerek, bir başarısızlığın retrieval adımında mı yoksa üretim adımında mı ortaya çıktığını izole edebiliriz.
Kod ile Doğruluk Kontrollerinin Uygulanması
Sadakat için pratik bir kontrolün nasıl uygulanacağını görelim. Aşağıda, üretilen bir yanıtın alınan bağlam tarafından desteklendiğini doğrulayan bir değerlendirme betiği yapısını gösteren bir Python örneği bulunmaktadır.
from ragas import evaluate
from ragas.metrics import faithfulness, context_precision
from datasets import Dataset
# Bu değişkenlerin RAG boru hattınız tarafından doldurulduğunu varsayalım
question = "Q3'ün geliri neydi?"
retrieved_contexts = ["Şirket Q3'te 5 milyon dolar gelir bildirdi.", "Pazarlama bütçesi 10 bin dolardı."]
generated_answer = "Q3'teki gelir 5 milyon dolardı."
# Değerlendirme için veri setini oluşturun
data = Dataset.from_dict({
"question": [question],
"retrieved_contexts": [retrieved_contexts],
"answer": [generated_answer]
})
# 'sadakat' metriğine karşı değerlendirin
# Sadakat, yanıtın bağlama ne kadar dayandığını puanlar
results = evaluate(
data,
metrics=[faithfulness, context_precision],
llm=your_llm_instance,
embeddings=your_embedding_model
)
print(results)
# Çıktı, 0 ile 1 arasında bir sadakat skoru içerir
Yukarıdaki kodda, faithfulness (sadakat) metriği genellikle üretilen yanıtı iddialara ayırır ve her bir iddianın bağlam tarafından desteklendiğini kontrol eder. Model gelirin 5 milyon dolar olduğunu belirtirse, ancak bağlam 6 milyon dolar diyorsa, sadakat skoru önemli ölçüde düşer ve bir halüsinasyon işaretlenir.
Geliştiriciler İçin Pratik Öneriler
RAG'a özgü halüsinasyonları azaltmak için aşağıdaki en iyi uygulamaları göz önünde bulundurun:
- Temellendirmeyi Zorlayın: LLM istemlerinizi, modeli yalnızca sağlanan bağlamı kullanmaya açıkça yönlendirecek şekilde yapılandırın. Bağlam cevabı içermiyorsa, tahmin yapmak yerine modele "Bilmiyorum" demesini söyleyin.
- Üretim Sonrası Doğrulama: Çıktıyı alınan bağlamla doğrulamak için ikinci bir LLM çağrısı kullanın. Bu "LLM-Hakim" yaklaşımı, ince halüsinasyonları yakalamak için son derece etkilidir.
- Yeniden Sıralama: İlk vektör aramasından sonra bir çapraz-encoder yeniden sıralayıcı uygulayarak, en ilgili parçaların LLM'ye beslenmesini sağlayın; bu, retrieval başarısızlığı şansını azaltır.
Sonuç
RAG bir sihirli değnek değildir; doğruluk yükünü modelin ağırlıklarından retrieval altyapısına taşıyan bir çerçevedir. Sadakat ve bağlam ilgisini özellikle hedef alan, metrik odaklı, titiz değerlendirme boru hatları uygulayarak geliştiriciler halüsinasyonları son kullanıcılara ulaşmadan önce tespit edip önleyebilir. RAG mimarileri gelişmeye devam ettikçe, değerlendirme stratejilerimiz de basit doğruluk kontrollerinden doğruluk ve temellendirme açısından nüanslı, çok boyutlu değerlendirmelere doğru evrilmelidir.