الفصل 2: إطار RAGAS
ما هو RAGAS؟
RAGAS (Retrieval Augmented Generation Assessment) إطار لتقييم خطوط أنابيب RAG تلقائيًا باستخدام نماذج LLM.
التثبيت
pip install ragas
الاستخدام الأساسي
from ragas import evaluate
from ragas.metrics import (
faithfulness,
answer_relevancy,
context_precision,
context_recall
)
from datasets import Dataset
# Prepare evaluation data
data = {
"question": ["What is RAG?"],
"answer": ["RAG combines retrieval with generation..."],
"contexts": [["RAG is a technique that...", "It retrieves..."]],
"ground_truth": ["RAG is Retrieval Augmented Generation..."]
}
dataset = Dataset.from_dict(data)
# Evaluate
results = evaluate(
dataset,
metrics=[
faithfulness,
answer_relevancy,
context_precision,
context_recall
]
)
print(results)
مقاييس RAGAS
| المقياس | الوصف | النطاق |
|---|---|---|
| faithfulness | الإجابة مثبتة في السياق | 0-1 |
| answer_relevancy | الإجابة تعالج السؤال | 0-1 |
| context_precision | الوثائق المسترجعة ذات صلة | 0-1 |
| context_recall | اُسترجعت كل المعلومات اللازمة | 0-1 |
إنشاء مجموعة بيانات اختبار
def create_eval_dataset(qa_pairs, rag_system):
"""Generate evaluation dataset from Q&A pairs"""
data = {"question": [], "answer": [], "contexts": [], "ground_truth": []}
for qa in qa_pairs:
question = qa["question"]
ground_truth = qa["expected_answer"]
# Get RAG response
response = rag_system.query(question)
data["question"].append(question)
data["answer"].append(response["answer"])
data["contexts"].append(response["contexts"])
data["ground_truth"].append(ground_truth)
return Dataset.from_dict(data)
تفسير النتائج
| الدرجة | التفسير |
|---|---|
| >0.9 | ممتاز |
| 0.7-0.9 | جيد، مجال للتحسين |
| 0.5-0.7 | يحتاج عملًا |
| <0.5 | مشكلات جوهرية |
التقييم المستمر
# Weekly evaluation pipeline
def weekly_eval(rag_system, test_questions):
dataset = create_eval_dataset(test_questions, rag_system)
results = evaluate(dataset, metrics=[...])
# Store results
save_metrics_to_db(results, timestamp=datetime.now())
# Alert if degradation
if results["faithfulness"] < 0.8:
send_alert("Faithfulness dropped below threshold!")