إنتقل إلى المحتوى الرئيسي

الفصل 1: مقاييس تقييم RAG

مجالا التقييم​

المجالما يقيسهالمقاييس الأساسية
الاسترجاعجودة الوثائق المسترجعةPrecision، Recall، MRR
التوليدجودة إجابة LLMFaithfulness، Relevance

مقاييس الاسترجاع​

Precision@K​

def precision_at_k(retrieved_ids, relevant_ids, k):
"""What % of retrieved docs are relevant?"""
retrieved_k = set(retrieved_ids[:k])
relevant = set(relevant_ids)
return len(retrieved_k & relevant) / k

# Retrieved: [A, B, C, D, E], Relevant: [A, C, F]
# Precision@5 = 2/5 = 0.4

Recall@K​

def recall_at_k(retrieved_ids, relevant_ids, k):
"""What % of relevant docs were retrieved?"""
retrieved_k = set(retrieved_ids[:k])
relevant = set(relevant_ids)
return len(retrieved_k & relevant) / len(relevant)

# Retrieved: [A, B, C, D, E], Relevant: [A, C, F]
# Recall@5 = 2/3 = 0.67

MRR (Mean Reciprocal Rank)​

def reciprocal_rank(retrieved_ids, relevant_ids):
"""How high is the first relevant doc?"""
for i, doc_id in enumerate(retrieved_ids):
if doc_id in relevant_ids:
return 1 / (i + 1)
return 0

# If first relevant at position 3: RR = 1/3 = 0.33

مقاييس التوليد​

Faithfulness​

هل تستخدم الإجابة معلومات السياق فقط؟

# High faithfulness:
# Context: "The policy allows 30 day returns"
# Answer: "You can return items within 30 days"

# Low faithfulness (hallucination):
# Context: "The policy allows 30 day returns"
# Answer: "You can return items within 60 days for a full refund"

صلة الإجابة​

هل تعالج الإجابة السؤال فعلًا؟

صلة السياق​

هل الـ chunks المسترجعة ذات صلة بالسؤال؟

ملخص المقاييس​

المقياسما يقيسهالهدف
Precision@Kصلة المسترجع>0.8
Recall@Kالتغطية>0.9
MRRجودة الترتيب>0.7
Faithfulnessبلا هلوسات>0.9
Relevanceجودة الإجابة>0.8