본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 09. 21:47

amazon-science/auto-rag-eval

요약

이 리포지토리는 ICML 2024 논문의 보조 자료로, RAG 시스템을 평가하기 위한 자동화된 프레임워크를 제공합니다. 이 도구는 주어진 지식 코퍼스 기반으로 LLM을 활용하여 작업별 객관식 시험을 생성하고, 이를 통해 다양한 RaG 변형들을 체계적으로 평가하며 개선하는 방법을 제시합니다.

핵심 포인트

  • LLM을 이용해 작업 특화 객관식 시험 자동 생성 가능
  • 지식 코퍼스 전처리부터 시험 평가까지의 전체 파이프라인 제공
  • AWS DevOPS, StackExchange 등 4가지 관심 분야에 적용된 방법론 설명
  • 자체적인 지식 코퍼스를 추가하여 프레임워크 확장 용이

이 리포지토리는 ICML 2024 논문인 Automated Evaluation of Retrieval-Augmented Language Models with Task-Specific Exam Generation (Blog)의 보조 자료입니다.

목표: 주어진 지식 코퍼스(knowledge corpus)에 대해:

  • 관심 있는 작업(task)과 관련된 객관식 시험을 LLM을 활용하여 생성합니다.
  • 이 시험으로 RaG 시스템의 다양한 변형들을 평가합니다.
  • 시험을 평가하고 반복적으로 개선합니다.

이 코드를 실험하기 위해 필요한 유일한 것은 아래에 설명된 형식으로 작성된 지식 코퍼스(json) 파일뿐입니다.

Data:
각 사용 사례(use case)별로 다음을 포함합니다:

  • 전처리 코드 (Preprocessing Code)
  • 지식 코퍼스 데이터 (Knowledge Corpus Data)
  • 시험 데이터 (Exam Data) (원시 및 처리됨)
  • 검색 인덱스 (Retrieval Index)

ExamGenerator:
지식 코퍼스와 LLM 생성기(LLM generator)를 사용하여 객관식 시험을 생성하고 처리하는 코드입니다.

ExamEvaluator:
lm-harness 라이브러리에 의존하여 (검색 시스템, LLM, 시험 코퍼스)의 조합으로 시험을 평가하는 코드입니다.

LLMServer:
시험 생성을 위한 통합된 LLM 엔드포인트입니다.

RetrievalSystems:
통합 검색 시스템 클래스들 (예: DPR, BM25, 임베딩 유사도(Embedding Similarity)...).

저희는 AWS DevOPS Troubleshooting, StackExchange Q&A, Sec Filings Q&A, Arxiv Q&A의 4가지 관심 작업에 대해 방법론을 설명합니다. 그런 다음 이 방법론을 모든 작업에 맞게 조정하는 방법을 보여줍니다.

아래 명령어를 실행하십시오. 여기서 question-date는 원시 데이터 생성(raw data generation)이 포함된 데이터입니다. 시험을 저장하고 싶은 경우 --save-exam을 추가하고, 분석만 관심 있다면 이 플래그를 제거하십시오.

cd auto-rag-eval
rm -rf Data/StackExchange/KnowledgeCorpus/main/*
python3 -m Data.StackExchange.preprocessor
...
cd auto-rag-eval
rm -rf Data/Arxiv/KnowledgeCorpus/main/*
python3 -m Data.Arxiv.preprocessor
...
cd auto-rag-eval
rm -rf Data/SecFilings/KnowledgeCorpus/main/*
python3 -m Data.SecFilings.preprocessor
...
cd auto-rag-eval
rm -rf Data/
mkdir MyOwnTask
mkdir MyOwnTask/KnowledgeCorpus
...

MyOwnTask/KnowledgeCorpus/mainjson 파일을 저장하십시오.

파일에는 아래 형식을 가진 문서 목록이 포함되어 있습니다. DevOps/html_parser.py, DevOps/preprocessor.py, 또는 StackExchange/preprocessor.py를 참조하여 몇 가지 예시를 확인하십시오.

{'source': 'my_own_source',
'docs_id': 'Doc1022',
'title': 'Dev Desktop Set Up',
...

먼저 원본 시험과 검색 인덱스를 생성합니다. 참고로, 자체 LLM에 대한 지원을 추가해야 할 수도 있습니다. 자세한 내용은 아래를 참조하십시오. 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.pyLLMExamGenerator 클래스를 수정하십시오.

서로 다른 LLM은 서로 다른 유형의 질문을 생성합니다. 따라서, ExamGenerator/multi_choice_questions.py에서 원본 시험 파싱을 수정해야 할 수도 있습니다.

ExamGeneratorfailed_questions.ipynb 노트북을 사용하여 실험해 볼 수 있습니다.

우리는 lm-harness 패키지를 활용하여 생성된 시험에 대해 (LLM 및 검색) 시스템을 평가합니다. 이를 위해 다음 단계를 따르십시오:

  1. 작업용 벤치마크 폴더를 만드세요. 여기서는 DevOpsExam입니다.
  2. 템플릿은 ExamEvaluator/DevOpsExam을 참조하십시오.
    이곳에는 프롬프트 템플릿을 위한 코드 파일 preprocess_exam.py와, 모델 평가를 위한 일련의 작업들이 포함되어 있습니다:
  • DevOpsExam: 폐쇄형 책(검색 없음) 및 개방형 책(Oracle Retrieval)에 관련된 작업을 포함합니다.
  • DevOpsRagExam

이 스크립트는 검색 증강 생성(Retrieval-Augmented) 변형(DPR/임베딩(Embeddings)/BM25 등)과 관련된 작업을 포함합니다.

제공된 task_evaluation.sh 스크립트는 In-Context-Learning (ICL)을 사용하여 각각 0, 1, 2개의 샘플로 Llamav2:Chat:13BLlamav2:Chat:70B 모델의 성능을 해당 작업에서 평가하는 것을 보여줍니다.

이 작업을 인용하려면 다음 형식을 사용하십시오:

@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},
... 

더 많은 정보는 CONTRIBUTING을 참조하십시오.

이 프로젝트는 Apache-2.0 라이선스에 따라 라이선스가 부여되었습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0