تخطَّ إلى المحتوى

EncouRAGe - تقييم RAG المحلي

EncouRAGe - تقييم RAG المحلي

EncouRAGe هو إطار عمل مفتوح المصدر لـ تقييم أنابيب retrieval-augmented generation (RAG) مع التركيز على التشغيل محليًا وبسرعة وموثوقية. حيث يستدعي العديد من المقيمات نماذج الحكم المُستضافة، يُصمم EncouRAGe لحساب مقاييس الاسترجاع والإنشاء على أجهزتك الخاصة، مع الحفاظ على خصوصية بيانات التقييم والنتائج قابلة للتكرار. إنه يناسب نمط 2026 حيث يُعامل جودة RAG كخاصية هندسية قابلة للقياس بدلاً من شعور.

أطر العمل التقييمية تتطور بسرعة. تعامل مع الأوامر أدناه كشكل المسار والتأكد من الأعلام الدقيقة مقابل الوثائق الحالية.

التثبيت

الطريقةالأمر
pippip 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 الأخرى

الجانبEncouRAGeRAGASTruLensDeepEval
التركيزمحلي وسريع وقابل للتكرارمقاييس RAG الخالية من المرجعمراقبة + تتبع OTelعقلية اختبار الوحدة
Judgeنماذج محليةقابل للتكوينقابل للتكوينقابل للتكوين
الأفضل لـتقييم خاص وخلفيتسجيل RAG السريعمراقبة الإنتاجبوابات CI على طريقة Pytest

يقترن مفاهيميًا مع RAGAS وTruLens وDeepEval — اختر حسب الحاجة إلى الخصوصية المحلية أو المقاييس السريعة أو المراقبة أو بوابات CI.

الموارد