Evaluation

RAG Hakkındaki Zor Gerçek: Gerçekten Nasıl Değerlendirilir?

Bir Geriye Dönük Artırılmış Üretim (RAG) hattı oluşturmak, büyük dil modelleri (LLM'ler) ile kurumsal bir uygulamayı modernleştirmenin ilk adımıdır. Ancak, çalışan bir prototipten üretim kalitesinde bir sisteme geçiş süreci, çoğu ekibin takıldığı yerdir. Temel zorluk sistemi kurmak değil, kalitesini ölçmektir. Geleneksel yazılımda belirleyici birim testlerimiz olduğu halde, RAG sistemleri her aşamada (geriye arama, bağlam parçalama ve üretim) olasılıksal unsurlar sunar. Bu durum, değerlendirmeyi önemli ölçüde daha karmaşık hale getirir. Bu yazıda, basit doğruluk metriklerinin ötesine geçerek sağlam ve otomatik çerçevelere doğru RAG değerlendirmesinin mimarisini inceleyeceğiz.

Neden Standart Metrikler Başarısız Olur?

Yıllar boyunca metin üretimini değerlendirmek için BLEU veya ROUGE gibi metriklere güvenirdik. Bu metrikler, referans metinle n-gram örtüşmesine dayanır. Bir RAG bağlamında bu yaklaşım temelden yanlıştır. Bir sistem doğru belgeyi geriye arasa bile, cevabı referans metinden farklı bir şekilde ifade ederse, cevap gerçekte doğru olsa bile BLEU bunu ağır bir şekilde cezalandırır. Ayrıca BLEU, geriye arama bileşeni hakkında bize hiçbir şey söylemez. Bir sistem tamamen alakasız belgeleri geriye arasa bile, temele dayanan gerçekle yüzeysel olarak benzerlik gösteren ancak kullanıcı için işlevsiz olan bir cevap uydurabilir.

RAG'ı düzgün bir şekilde değerlendirmek için problemi iki ayrı aşamaya ayırmalıyız: Geriye Arama Değerlendirmesi ve Üretim Değerlendirmesi. Her aşama, kendine özgü başarısızlık modlarını ele alan belirli metrikler gerektirir.

Geriye Arama Performansını Ölçme

LLM'nin ne ürettiğine bakmadan önce, bağlam penceresinin ilgili bilgilerle beslendiğinden emin olmalıyız. Bunun için iki temel metrik Recall@K ve MRR (Ortalama Ters Sıra)'dir. Recall@K, ilk K sonuç arasında geriye aranan ilgili belgelerin oranını ölçer. Eğer temel gerçek cevaplarınız [101, 102] belge kimliklerinde bulunuyorsa ve geriye arama sisteminiz [101, 50, 99] döndürüyorsa, Recall@2 değeriniz 0,5 (%50) olur.

Bununla birlikte, üretim ortamında her sorgu için temel gerçek etiketlerine her zaman erişemeyiz. İşte burada Hit Rate (Vuruş Oranı) pratik hale gelir. Cevabın bilgi tabanında var olduğunu biliyorsak, geriye arama sistemi bu cevabı içeren parçayı çekti mi? Ayrıca, etiketli verinin kısıtlı olduğu durumlarda, gömme modelleri kullanarak semantik benzerlik skorları, ilgililik için bir sezgisel yöntem sağlayabilir.

LLM-Hakemi ile Üretimi Değerlendirme

Üretim adımını değerlendirmek daha zordur çünkü nadiren tek bir "doğru" cevap vardır. LLM-Hakemi paradigmasının yükselişi bu alanı dönüştürmüştür. Uygulamanızın LLM'sinin çıktısını eleştirmek için daha güçlü bir LLM (GPT-4 veya Claude 3 gibi) kullanarak değerlendirme sürecini otomatikleştirebiliriz.

Burada temel metrikler şunlardır:

  • Doğruluk (Faithfulness): Üretilen cevap yalnızca sağlanan bağlama mı dayanıyor? Model, geriye aranan parçalarda bulunmayan harici bilgi ekler veya uydurursa bu metriği geçemez.
  • Cevap İlgisi: Üretilen cevap gerçekten de kullanıcının sorusunu mu yanıtlıyor?

Bunu uygulamak için hakem modelinden kaynaklanan önyargıyı en aza indirmek amacıyla dikkatli bir prompt mühendisliği gerektirir. Aşağıda, standart bir değerlendirme kütüphanesi yapısı kullanılarak hazırlanmış kavramsal bir Python örneği bulunmaktadır:

from ragas import evaluate
from datasets import Dataset

# Test verisetinizi tanımlayın
data_samples = {
    'question': ["Fransa'nın başkenti nedir?", "Hamlet'i kim yazdı?"],
    'answer': ["Paris, Fransa'nın başkentidir.", "William Shakespeare Hamlet'i yazdı."],
    'contexts': [["Paris, Fransa'nın başkent şehridir.", "Eyfel Kulesi Paris'tedir."], ["William Shakespeare İngiliz bir oyun yazarıydı.", "Hamlet, Shakespeare tarafından yazılmış bir trajedidir."]],
    'ground_truth': ["Paris", "William Shakespeare"]
}

# Varsayılan metrikler (doğruluk, cevap_ilgisi, bağlam_özelliği) kullanılarak değerlendirin
result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevance, context_precision]
)

print(result)

Pratik Araçlar: RAGAS ve TruLens

Bu değerlendirmeleri sıfırdan oluşturmak sıkıcıdır. RAGAS (Retrieval Augmented Generation Assessment System) ve TruLens gibi kütüphaneler bu sorunu çözmek için ortaya çıkmıştır. RAGAS özellikle popülerdir çünkü yalnızca bağlama dayalı değerlendirmeye olanak tanır; bu da üretim aşaması için her zaman temel gerçek cevaplara ihtiyacınız olmadığı, bunun yerine yalnızca geriye arama aşaması için ihtiyaç duyulduğu anlamına gelir. RAGAS, doğruluk, bağlam özelliği ve cevap ilgisini dengeleyen bileşik bir RAGAS skoru hesaplar ve zaman içindeki iyileştirmeleri takip etmeniz için tek bir sayı sunar.

Sonuç

RAG sistemlerini değerlendirmek tek seferlik bir görev değil, sürekli bir süreçtir. Bilgi tabanınız büyüdükçe ve sorgularınız daha karmaşık hale geldikçe, statik referanslar sisteminizin performansındaki nüansları yakalamakta yetersiz kalacaktır. Belirleyici geriye arama metriklerini olasılıksal, LLM tabanlı üretim hakemleriyle birleştirerek sağlam bir geri bildirim döngüsü oluşturabilirsiniz. Recall ile başlayın, ardından doğruluk kontrollerini ekleyin ve son olarak RAG sisteminizin sorumlu bir şekilde gelişmesini sağlamak için CI/CD hattınıza otomatik regresyon testleri uygulayın.

Share: