該儲存庫是 ICML 2024 論文《自動評估檢索增強語言模型與特定任務考試生成》的配套文件(部落格)
目標:對於給定的知識庫:
您唯一需要試驗此程式碼的是一個json
文件,其中包含您的知識庫,格式如下所述。
Data
:對於每個用例,包含:ExamGenerator
:使用知識庫和 LLM 產生器產生和處理多項選擇考試的程式碼。ExamEvaluator
:使用組合(Retrieval System, LLM, ExamCorpus)
評估考試的程式碼,依賴lm-harness
庫。LLMServer
:統一 LLM 端點來產生考試。RetrievalSystems
:統一檢索系統類別(例如 DPR、BM25、嵌入相似度...)。 我們在 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
在MyOwnTask/KnowledgeCorpus/main
中儲存一個json
文件,其中包含文檔列表,每個文檔的格式如下。有關一些範例,請參閱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 ' ,
}
首先產生原始檢查和檢索索引。請注意,您可能需要添加對您自己的法學碩士的支持,更多資訊如下。您可能想要修改ExamGenerator/question_generator.py
中的LLMExamGenerator
類別中用於考試產生的提示。
python3 -m ExamGenerator.question_generator --task-domain MyOwnTask
完成此操作後(可能需要幾個小時,具體取決於文件大小),產生已處理的檢查。為此,請檢查 RawExamData 中的 MyRawExamDate(例如 2023091223)並執行:
python3 -m ExamGenerator.multi_choice_exam --task-domain MyOwnTask --question-date MyRawExamDate --save-exam
我們目前支援LLMServer
檔案中 Bedrock (Claude) 的端點。您自己需要的唯一東西是一個類,它具有一個inference
函數,可以在輸入中接受提示並輸出提示和完整的文本。修改ExamGenerator/question_generator.py
中的LLMExamGenerator
類別以合併它。不同的法學碩士會產生不同類型的問題。因此,您可能需要修改ExamGenerator/multi_choice_questions.py
中的原始考試解析。您可以使用ExamGenerator
中的failed_questions.ipynb
筆記本進行實驗。
我們利用 lm-harness 套件在產生的考試中評估(LLM&Retrieval)系統。為此,請按照以下步驟操作:
為您的任務建立一個基準資料夾,此處為DevOpsExam
,請參閱ExamEvaluator/DevOpsExam
了解範本。它包含一個用於提示模板的程式碼檔案 preprocess_exam,py ,更重要的是,一組用於評估模型的任務:
DevOpsExam
包含與 ClosedBook(非檢索)和 OpenBook(Oracle 檢索)相關的任務。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 許可證獲得許可。