هذا المستودع هو الرفيق لورقة ICML 2024 التقييم الآلي لنماذج اللغة المعززة للاسترجاع مع إنشاء اختبارات خاصة بالمهمة (مدونة)
الهدف : بالنسبة لمجموعة معرفية معينة:
الشيء الوحيد الذي تحتاجه لتجربة هذا الرمز هو ملف json
يحتوي على مجموعة معرفتك بالتنسيق الموضح أدناه.
Data
: تحتوي كل حالة استخدام على:ExamGenerator
: رمز لإنشاء ومعالجة اختبار الاختيار المتعدد باستخدام مجموعة المعرفة ومولد (مولدات) LLM.ExamEvaluator
: كود لتقييم الامتحان باستخدام مزيج من (Retrieval System, LLM, ExamCorpus)
، بالاعتماد على مكتبة lm-harness
.LLMServer
: نقاط نهاية LLM موحدة لإنشاء الاختبار.RetrievalSystems
: فئات نظام الاسترجاع الموحد (مثل DPR، BM25، تشابه التضمين...). نوضح منهجيتنا في 4 مهام محل اهتمام: استكشاف أخطاء AWS DevOPS وإصلاحها، وStackExchange Q&A، وSec Filings Q&A، وArxiv Q&A. ثم نعرض كيفية تكييف المنهجية مع أي مهمة.
قم بتشغيل الأوامر أدناه، حيث question-date
هو البيانات مع إنشاء البيانات الأولية. أضف --save-exam
إذا كنت تريد حفظ الاختبار وقم بإزالته إذا كنت مهتمًا بالتحليلات فقط.
cd auto-rag-eval
rm -rf Data/StackExchange/KnowledgeCorpus/main/ *
python3 -m Data.StackExchange.preprocessor
python3 -m ExamGenerator.question_generator --task-domain StackExchange
python3 -m ExamGenerator.multi_choice_exam --task-domain StackExchange --question-date " question-date " --save-exam
cd auto-rag-eval
rm -rf Data/Arxiv/KnowledgeCorpus/main/ *
python3 -m Data.Arxiv.preprocessor
python3 -m ExamGenerator.question_generator --task-domain Arxiv
python3 -m ExamGenerator.multi_choice_exam --task-domain Arxiv --question-date " question-date " --save-exam
cd auto-rag-eval
rm -rf Data/SecFilings/KnowledgeCorpus/main/ *
python3 -m Data.SecFilings.preprocessor
python3 -m ExamGenerator.question_generator --task-domain SecFilings
python3 -m ExamGenerator.multi_choice_exam --task-domain SecFilings --question-date " question-date " --save-exam
cd src/llm_automated_exam_evaluation/Data/
mkdir MyOwnTask
mkdir MyOwnTask/KnowledgeCorpus
mkdir MyOwnTask/KnowledgeCorpus/main
mkdir MyOwnTask/RetrievalIndex
mkdir MyOwnTask/RetrievalIndex/main
mkdir MyOwnTask/ExamData
mkdir MyOwnTask/RawExamData
قم بتخزين ملف json
في MyOwnTask/KnowledgeCorpus/main
، والذي يحتوي على قائمة بالوثائق، كل منها بالتنسيق أدناه. راجع DevOps/html_parser.py
أو DevOps/preprocessor.py
أو StackExchange/preprocessor.py
للحصول على بعض الأمثلة.
{ ' source ' : ' my_own_source ' ,
' docs_id ' : ' Doc1022 ' ,
' title ' : ' Dev Desktop Set Up ' ,
' section ' : ' How to [...] ' ,
' text ' : " Documentation Text, should be long enough to make informative questions but shorter enough to fit into context " ,
' start_character ' : ' N/A ' ,
' end_character ' : ' N/A ' ,
' date ' : ' N/A ' ,
}
قم أولاً بإنشاء الاختبار الأولي وفهرس الاسترجاع. لاحظ أنك قد تحتاج إلى إضافة دعم لمرحلة LLM الخاصة بك، المزيد حول هذا أدناه. قد ترغب في تعديل الموجه المستخدم لإنشاء الاختبار في فئة LLMExamGenerator
في ExamGenerator/question_generator.py
.
python3 -m ExamGenerator.question_generator --task-domain MyOwnTask
بمجرد الانتهاء من ذلك (قد يستغرق بضع ساعات اعتمادًا على حجم التوثيق)، قم بإنشاء الاختبار المعالج. للقيام بذلك، تحقق من MyRawExamDate في RawExamData (على سبيل المثال 2023091223) وقم بتشغيل:
python3 -m ExamGenerator.multi_choice_exam --task-domain MyOwnTask --question-date MyRawExamDate --save-exam
نحن ندعم حاليًا نقاط النهاية لـ Bedrock (Claude) في ملف LLMServer
. الشيء الوحيد المطلوب إحضاره معك هو الفصل الدراسي، مع وظيفة inference
التي تأخذ مطالبة في الإدخال والإخراج لكل من النص الموجه والمكتمل. قم بتعديل فئة LLMExamGenerator
في ExamGenerator/question_generator.py
لدمجها. تولد LLM المختلفة أنواعًا مختلفة من الأسئلة. وبالتالي، قد ترغب في تعديل تحليل الاختبار الأولي في ExamGenerator/multi_choice_questions.py
. يمكنك تجربة استخدام failed_questions.ipynb
Notebook من ExamGenerator
.
نحن نستخدم حزمة lm-harness لتقييم نظام (LLM&Retrieval) في الاختبار الذي تم إنشاؤه. للقيام بذلك، اتبع الخطوات التالية:
قم بإنشاء مجلد معياري لمهمتك، هنا DevOpsExam
، راجع ExamEvaluator/DevOpsExam
للحصول على القالب. يحتوي على ملف تعليمات برمجية preprocess_exam,py لقوالب المطالبة والأهم من ذلك، مجموعة من المهام لتقييم النماذج على:
DevOpsExam
على المهام المرتبطة بـ ClosedBook (وليس الاسترجاع) وOpenBook (Oracle Retrieval).DevOpsRagExam
على المهام المرتبطة بمتغيرات الاسترجاع (DPR/Embeddings/BM25...). يوضح البرنامج النصي task_evaluation.sh
المقدم تقييم Llamav2:Chat:13B
و Llamav2:Chat:70B
في المهمة، باستخدام التعلم داخل السياق (ICL) مع عينات 0 و1 و2 على التوالي.
للاستشهاد بهذا العمل، يرجى استخدام
@misc{autorageval2024,
title={Automated Evaluation of Retrieval-Augmented Language Models with Task-Specific Exam Generation},
author={Gauthier Guinet and Behrooz Omidvar-Tehrani and Anoop Deoras and Laurent Callot},
year={2024},
eprint={2405.13622},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
انظر المساهمة لمزيد من المعلومات.
تم ترخيص هذا المشروع بموجب ترخيص Apache-2.0.