พื้นที่เก็บข้อมูลนี้เป็นส่วนร่วมของรายงาน ICML 2024 การประเมินอัตโนมัติของแบบจำลองภาษาที่ดึงข้อมูลมาเสริมด้วยการสร้างการสอบเฉพาะงาน (บล็อก)
เป้าหมาย : สำหรับคลังความรู้ที่กำหนด:
สิ่งเดียวที่คุณต้องทดลองกับโค้ดนี้คือไฟล์ json
ที่คลังความรู้ของคุณในรูปแบบที่อธิบายไว้ด้านล่างนี้
Data
: สำหรับแต่ละกรณีการใช้งานประกอบด้วย:ExamGenerator
: โค้ดเพื่อสร้างและประมวลผลการสอบแบบปรนัยโดยใช้คลังความรู้และเครื่องกำเนิด LLMExamEvaluator
: โค้ดเพื่อประเมินการสอบโดยใช้การผสมผสาน (Retrieval System, LLM, ExamCorpus)
โดยอาศัยไลบรารี lm-harness
LLMServer
: จุดสิ้นสุด LLM แบบรวมเพื่อสร้างการสอบRetrievalSystems
: คลาส Unified Retrieval System (เช่น DPR, BM25, Embeddingคล้ายคลึงกัน...) เราแสดงวิธีการของเราในงาน 4 ที่น่าสนใจ: การแก้ไขปัญหา AWS DevOPS, ถามและตอบ StackExchange, ถามตอบ Sec Filings และถามตอบ Arxiv จากนั้นเราจะแสดงวิธีปรับวิธีการให้เข้ากับงานต่างๆ
รันคำสั่งด้านล่าง โดยที่ 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
จาก 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
ในงาน โดยใช้ In-Context-Learning (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