لقد أحدثت أنظمة التوليد المعزز بالاسترجاع (RAG) ثورة في طريقة تفاعلنا مع نماذج اللغة الكبيرة، حيث تستند الردود إلى بيانات محددة ومُسترجعة. ومع ذلك، فإن بناء خط أنابيب RAG هو نصف المعركة فقط؛ فالتأكد من عمله بشكل موثوق هو التحدي الحقيقي. على عكس مهام LLM القياسية، يتطلب تقييم RAG قياس مكونين متميزين: جودة الاسترجاع وجودة التوليد. في هذا المنشور، سنستكشف كيف نتجاوز الاختبار القصصي وننفذ أطر تقييم آلية صارمة.
تشريح تقييم RAG
المقاييس التقليدية لمعالجة اللغة الطبيعية مثل BLEU أو ROUGE غير كافية لـ RAG لأنها لا تأخذ في الاعتبار عملية الاسترجاع أو السياق المحدد المقدم لنموذج اللغة. وبدلاً من ذلك، يركز تقييم RAG الحديث على ثلاثة أبعاد أساسية:
- الأمانة (Faithfulness): هل يلتزم الإجابة المولدة بصرامة بالسياق المسترجع؟ (أي، هل هي خالية من الهلوسة؟)
- صلة الإجابة (Answer Relevance): هل الإجابة تعالج مباشرةً سؤال المستخدم؟
- دقة/استدعاء السياق (Context Precision/Recall): هل جلب المسترجع المقاطع الصحيحة والمُرتبطة، وبالترتيب الصحيح؟
تقديم RAGAS: إطار عمل لنموذج اللغة كقاضي
بينما يكون التقييم اليدوي قيمًا للحالات الحدية، إلا أنه لا يمكن توسيع نطاقه. وهنا تبرز أطر العمل مثل RAGAS (تقييم التوليد المعزز بالاسترجاع). يستخدم RAGAS نموذج لغة كقاضي، حيث يمنح الدرجات للمخرجات مقابل المعايير الذهبية أو باستخدام مقاييس بدون مرجع. يوفر طريقة قياسية لقياس أداء خط أنابيب RAG الخاص بك.
تنفيذ عملي باستخدام RAGAS
لنلقِ نظرة على كيفية تنفيذ تقييم RAGAS الأساسي باستخدام Python. أولاً، تأكد من تثبيت الحزم اللازمة:
pip install ragas langchain-ollama langchain-chroma
فيما يلي مثال مبسط على كيفية هيكلة بيانات التقييم وحساب المقاييس. لاحظ أنك بحاجة إلى مجموعة بيانات تحتوي على `question` (السؤال)، و`ground_truth` (الإجابة المثالية)، و`retrieved_contexts` (المقاطع التي جلبتها قاعدة البيانات المتجهة)، و`answer` (مخرجات نموذج اللغة).
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from datasets import Dataset
import json
# Example: Define your evaluation set
# In a real scenario, this would come from a test set or production logs
eval_data = {
"question": ["What is the capital of France?"],
"ground_truth": ["Paris is the capital of France."],
"retrieved_contexts": [["Paris is a city in France. It is the capital."]],
"answer": ["The capital of France is Paris."]
}
# Convert to a Hugging Face Dataset object
dataset = Dataset.from_dict(eval_data)
# Define the metrics you want to measure
metrics = {
"faithfulness": faithfulness,
"answer_relevancy": answer_relevancy,
"context_precision": context_precision
}
# Run the evaluation
# Note: This requires an LLM to be configured for the judge role
score = evaluate(
dataset,
metrics=metrics
)
# Print the results
print(score)
تفسير الدرجات
- أمانة عالية (0.8+): نموذج اللغة الخاص بك لا يخترع الأشياء. إذا كانت هذه الدرجة منخفضة، فقد يكون هندسة الأوامر (Prompt Engineering) الخاصة بك معيبة، أو أن النموذج يتجاهل السياق.
- دقة سياق عالية: البحث المتجهي الخاص بك يجد المستندات الصحيحة. إذا كانت هذه الدرجة منخفضة، فقد تحتاج إلى ضبط نموذج التضمين (Embedding Model)، أو استراتيجية التقطيع (Chunking)، أو المُرتب (Re-ranker).
- صلة إجابة عالية: الإجابة موجزة وتعالج الاستعلام المحدد. الدرجات المنخفضة هنا تشير غالبًا إلى أن نموذج اللغة يوفر تفاصيل غير ضرورية أو غير ذات صلة.
ما وراء المقاييس: بناء حلقة تغذية راجعة
المقاييس الآلية رائعة، لكنها ليست القصة الكاملة. الأنظمة الأكثر متانة لـ RAG تدمج استراتيجية البشر في الحلقة (Human-in-the-loop). استخدم RAGAS لتحديد الاستعلامات ذات الأداء المنخفض، ثم اطلب من المقيمين البشر مراجعة تلك الحالات المحددة. تشمل أوضاع الفشل الشائعة التي يجب البحث عنها يدويًا ما يلي:
- مشاكل التقطيع (Chunking Issues): المعلومات ذات الصلة مقسمة عبر مقطعين، لذا يفوتها المسترجع.
- انحراف التضمين (Embedding Drift): نموذج التضمين لا يفهم المصطلحات التقنية المتخصصة في المجال.
- غموض الأوامر (Prompt Ambiguity): استعلام المستخدم غامض جدًا، فيخمن نموذج اللغة بدلاً من طلب التوضيح.
خاتمة
تقييم أنظمة RAG هو عملية تكرارية. ابدأ بمقاييس آلية مثل RAGAS للحصول على خط أساس، ثم تعمق في البيانات للعثور على أنماط فشل محددة. من خلال الجمع بين الدرجات الكمية والمراجعة البشرية النوعية، يمكنك تحسين خطوط أنابيب الاسترجاع والتوليد الخاصة بك باستمرار، مما يضمن أن نظام RAG الخاص بك ليس مثيرًا للإعجاب فحسب، بل موثوق أيضًا.