EncouRAGe - تقييم RAG المحلي
EncouRAGe هو إطار عمل مفتوح المصدر لـ تقييم أنابيب retrieval-augmented generation (RAG) مع التركيز على التشغيل محليًا وبسرعة وموثوقية. حيث يستدعي العديد من المقيمات نماذج الحكم المُستضافة، يُصمم EncouRAGe لحساب مقاييس الاسترجاع والإنشاء على أجهزتك الخاصة، مع الحفاظ على خصوصية بيانات التقييم والنتائج قابلة للتكرار. إنه يناسب نمط 2026 حيث يُعامل جودة RAG كخاصية هندسية قابلة للقياس بدلاً من شعور.
أطر العمل التقييمية تتطور بسرعة. تعامل مع الأوامر أدناه كشكل المسار والتأكد من الأعلام الدقيقة مقابل الوثائق الحالية.
التثبيت
| الطريقة | الأمر |
|---|
| pip | pip install encourage |
| من المصدر | git clone المستودع ثم pip install -e . |
| نماذج الحكم المحلية | اسحب النماذج عبر وقت التشغيل المحلي (مثل Ollama/vLLM) |
| التحقق | python -c "import encourage; print('ok')" |
لماذا التقييم المحلي
| الفائدة | لماذا تهم |
|---|
| الخصوصية | بيانات/استعلاماتك لا تترك جهازك |
| القابلية للتكرار | نفس النموذج + البذرة → نفس الدرجات |
| التكلفة | لا توجد فواتير API لكل تقييم |
| السرعة | دفعات محلية بدون حدود معدل |
ما يتم قياسه
قسم التقييم يتقسم RAG إلى النصفين من الأنبوب.
| النصف | المقاييس |
|---|
| Retrieval | دقة السياق وتذكر السياق ومعدل الضرب و MRR/NDCG |
| Generation | الاستقامة (التأسيس) وملاءمة الإجابة والصحة |
| من النهاية إلى النهاية | ما إذا كانت الإجابة النهائية صحيحة ومدعومة |
سير العمل الأساسي
# تدفق مفاهيمي: جمع مجموعة بيانات وتشغيل RAG الخاص بك وتسجيله
import encourage
dataset = encourage.load_dataset("eval_questions.jsonl") # question, ground_truth, contexts
results = encourage.evaluate(
dataset=dataset,
metrics=["faithfulness", "answer_relevance",
"context_precision", "context_recall"],
judge_model="local/llama-3.1-8b-instruct", # يعمل محليًا
)
print(results.summary()) # درجات لكل مقياس
results.to_json("eval.json")
| الخطوة | الغرض |
|---|
| Dataset | الأسئلة + (اختياري) الحقيقة الأساسية + السياقات المسترجعة |
| Metrics | أي أبعاد استرجاع/إنشاء يجب تسجيلها |
| Judge model | نموذج LLM المحلي المستخدم لمقاييس LLM-as-judge |
| Results | درجات إجمالية + لكل مثال وقابلة للتصدير |
بناء مجموعة بيانات Eval
| الحقل | المعنى |
|---|
question | استعلام المستخدم |
contexts | الأجزاء التي أرجعها الاسترجاع |
answer | الإجابة المُنشأة من أنبوبك |
ground_truth | إجابة مرجعية (للصحة/الاستدعاء) |
اجني الأسئلة الحقيقية من آثار الإنتاج لجعل eval تمثيليًا.
تفسير النتائج
| الأعراض | السبب المحتمل |
|---|
| استدعاء سياق منخفض | لا يفقد المسترجع أجزاء ذات صلة (chunking/embedding) |
| دقة سياق منخفضة | الكثير من السياق غير الملائم (إضافة إعادة ترتيب) |
| استقامة منخفضة | النموذج يهلوس بما يتجاوز السياق |
| ملاءمة إجابة منخفضة | الإجابة تنجرف من السؤال (مشكلة prompt/query) |
ملاءمتها في CI
# بوابة تغيير RAG على درجات التقييم
python run_eval.py --dataset eval.jsonl --min-faithfulness 0.85 \
--min-context-recall 0.8 || exit 1
قم بتشغيل نفس مجموعة eval على كل تغيير استرجاع/prompt/model حتى يتم القبض على الانحدارات قبل الشحن.
EncouRAGe مقابل مقيمات RAG الأخرى
| الجانب | EncouRAGe | RAGAS | TruLens | DeepEval |
|---|
| التركيز | محلي وسريع وقابل للتكرار | مقاييس RAG الخالية من المرجع | مراقبة + تتبع OTel | عقلية اختبار الوحدة |
| Judge | نماذج محلية | قابل للتكوين | قابل للتكوين | قابل للتكوين |
| الأفضل لـ | تقييم خاص وخلفي | تسجيل RAG السريع | مراقبة الإنتاج | بوابات CI على طريقة Pytest |
يقترن مفاهيميًا مع RAGAS وTruLens وDeepEval — اختر حسب الحاجة إلى الخصوصية المحلية أو المقاييس السريعة أو المراقبة أو بوابات CI.
الموارد