الفصل 1: مقاييس تقييم RAG
مجالا التقييم
| المجال | ما يقيسه | المقاييس الأساسية |
|---|---|---|
| الاسترجاع | جودة الوثائق المسترجعة | Precision، Recall، MRR |
| التوليد | جودة إجابة LLM | Faithfulness، 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 |