
RUC-NLPIR/RAG-Critic
요약
ACL 2025에 채택된 RAG-Critic은 RAG 시스템의 오류를 분류하고 비평하는 3단계 파이프라인을 제안합니다. RAG-Critic-3B 모델과 10만 개의 데이터셋을 공개하여 RAG 성능 평가의 정밀도를 높였습니다.
핵심 포인트
- ACL 2025 메인 컨퍼런스 논문 채택
- RAG 오류 분류를 위한 3단계 파이프라인 도입
- RAG-Critic-3B 모델 및 100K 데이터셋 공개
- 7개 1차 레이블부터 2,000개 이상의 3차 레이블 보유
Guanting Dong,
Jiajie Jin,
Xiaoxi Li,
Yutao Zhu,
Zhicheng Dou ✉;
Ji-rong Wen
중국 인민대학교 (Renmin University of China), Gaoling 인공지능 대학 (Gaoling School of Artificial Intelligence).
✉ 교신 저자 (Corresponding Author)
[05/2025] 저희의 논문이 ACL 2025 메인 컨퍼런스 (Main conference)에 채택되었습니다!
[03/2025] RAG-Critic의 효율적인 비평 (Critic) 능력을 보여주기 위한 데모를 공개합니다. demo.ipynb를 시도해 보세요.
!
[03/2025] Hugging Face 데이터셋 🤗RAG-Error-Critic-100K와 비평 모델 (Critic model) 🤗RAG-Critic-3B를 공개합니다.
[03/2025] 코드와 논문은 공개되어 있습니다.
- Python 3.10.13
- PyTorch (현재 버전 2.5.1+cu124에서 테스트됨)
- Transformers (버전 4.47.1, 이 버전 미만에서는 작동하지 않을 가능성이 높음)
- vLLM (버전 0.6.6.post1)
pip install -r requirements.txt
비평 에이전트 (Critic Agent)는 FlashRAG 프레임워크 (framework)를 기반으로 구축되었으므로, 먼저 FlashRAG를 설치해야 합니다.
# install flashrag
pip install flashrag-dev[full] --pre
# install faiss
...
9개의 RAG 관련 데이터셋에 대해 E5-base-v2를 사용하여 가장 관련성이 높은 Wikipedia 구절 (passages)을 검색하였으며, 이는 ./dataset_pool_retrieved_top10/${name} 디렉토리에 저장되어 있습니다. 상위 5개의 검색된 구절이 포함된 전처리된 데이터셋의 train/dev/test 세트는 여기서 찾을 수 있습니다. 다음 예시 명령에서는 9개의 데이터셋 ['nq', 'triviaqa', 'hotpotqa', '2wikimultihopqa', 'wikiasp', 'eli5', 'asqa', 'fever', 'wow']에 대해 ${dataset}를 지정합니다.
저희는 RAG 오류 분류 시스템 (error categorization system)과 오류 응답 주석 달기 (error response annotation)를 위한 3단계 파이프라인 (pipeline)을 소개합니다.
아래 이미지에 표시된 바와 같이, 총 7개의 1차 레이블 (first-tier labels), 19개의 2차 레이블 (second-tier labels), 그리고 2,000개 이상의 3차 레이블 (third-tier labels)이 있습니다. 세부 사항은 다음과 같습니다:

🔍 클릭하세요! 저희의 RAG 오류 응답 마이닝 (mining) 및 주석 달기 (annotation)를 재현하고 싶다면.

먼저, Hugging Face에서 샘플링 모델 (sampling models)을 다운로드하고 (부록 표 9 -- 15개 모델 참조), 이 모델 이름들을 models 파라미터 (parameter)에 넣으세요. 그런 다음, 9개의 RAG 관련 데이터셋에 대해 포괄적인 응답 샘플링 (response sampling)을 수행합니다:
cd ./error_system_construction/
bash sample.sh
출력 데이터는 error_sampling_results/responses_${model}_${dataset}_train_1w.json에 저장됩니다.
.
Critical Annotation (비판적 주석 달기)
Chain of Thought (CoT) 응답을 포함하는 샘플링된 데이터에 대해 강력한 지도 학습 모델 (Strong Supervision Model, Qwen2.5-72B)을 사용하여 오류 원인을 분석합니다. 먼저 Hugging Face에서 샘플링 모델을 다운로드한 후 (부록 표 9 -- 15개 모델 참조), 9개의 RAG 관련 데이터셋에 대해 포괄적인 응답 샘플링을 수행합니다:
cd ./error_system_construction/ bash critic.sh
소스 데이터와 오류 분석 결과는 다음 위치에 저장됩니다:
error_critic_results/critic_${model}_${dataset}_train_1w.json
. -
Tagging (태깅)
Instag 프롬프트 템플릿에서 영감을 받아, RAG 오류 분석 결과에 세밀한(fine-grained) 오픈셋(open-set) 레이블을 추가로 주석 처리합니다:
cd ./error_system_construction/ bash error_tag.sh
샘플링된 오픈셋 태그는 다음 위치에 저장됩니다:
error_critic_results/critic_${model}_${dataset}_train_1w.json
.
먼저, 문서의 방법에 따라 태그 세트의 중복을 제거하고 정규화(normalize)하십시오. 그런 다음, cluster.ipynb에 상세히 설명된 계층적 클러스터링 (Hierarchical Clustering) 방법을 참조하여 RAG 오류 클러스터를 집계하십시오.
나아가, 오류 클러스터의 상위 수준 레이블 요약을 위해 GPT-4o와 사람을 사용합니다.
저희는 RAG Error-Critic SFT 데이터셋, 모델 가중치 및 데모를 공개합니다:
SFT 데이터셋: 9개의 RAG 관련 데이터셋에 걸친 15개 모델의 응답을 세밀한 오류 레이블과 결합하여, 최초의 세밀한 오류 식별 데이터셋인 🤗RAG-Error-Critic-100K를 합성하였습니다. -
모델 가중치: 저희의 RAG 오류 식별 모델인 🤗RAG-Critic-3B를 공개하였습니다. -
데모: 저희의 RAG-Critic 모델에 대한 Hugging Face 추론 데모를 이곳에 공개합니다.
다음은 상세한 훈련 절차입니다:
SFT bash:
### model
model_name_or_path: /path/to/model_zoo/model_name
### method
...
DPO 데이터를 위해서는 이전 버전의 LlaMA-Factory를 사용하여, 저희의 SFT 데이터셋과 오류 시스템 설정(섹션 3.2)을 기반으로 데이터를 구축하십시오.
Coarse-to-Fine DPO bash:
deepspeed --num_gpus 8 train_bash.py \
--deepspeed $deepspeed_zero3_config_path \
--stage dpo \
...
🔍 저희의 테스트 세트 구축 파이프라인을 재현하려면 여기를 클릭하십시오.
먼저, Critic 에이전트 (critic agent)를 사용하여 필요한 수정 경로 (correction path)를 얻습니다.
1단계: 필수 프레임워크 설치
Critic 에이전트는 FlashRAG 프레임워크를 기반으로 구축되었으므로, 먼저 FlashRAG를 설치해야 합니다.
# install flashrag
pip install flashrag-dev[full] --pre
# install faiss
...
2단계: 데이터 준비
Critic의 동작에는 다음 데이터가 필요합니다:
- 검색된 문서 (Retrieved Documents): 테스트 세트의 각 쿼리에 대한 검색 결과가 포함되어 있습니다 (원래 답변의 검색 결과를 생성하는 데 사용됨). 저장 경로는 다음과 같습니다:
{retrieval_data_dir}/{dataset_name}/{split}.json
형식은 다음과 같습니다:
[
{
"question": "who sings does he love me with reba",
...
-
모델에 의해 생성된 원본 답변 (raw answers) 파일, 저장 위치:
{previous_answer_data_dir}/responses_{model_name}_{dataset_name}_{split}_100.json -
Critic 모델에 의해 주석이 달린 오류 분석 (error analysis) 파일, 저장 위치:
error_data_dir/errordata_{dataset_name}_{model_name}_{split}.json
마지막 두 파일의 생성은 모델 원본 답변 생성 및 Critic 실행 단계를 참조할 수 있습니다.
3단계: 검색기 (Retriever) 준비
에이전트가 실행 중에 검색을 수행해야 하므로, 검색 코퍼스 (retrieval Corpus)와 그에 해당하는 인덱스 (Index)를 다운로드해야 합니다. 실험에서는 FlashRAG에서 제공하는 Wiki-dpr-100w 파일과 그에 상응하는 E5 인덱스를 사용합니다. 다운로드 링크는 다음과 같습니다:
- https://www.modelscope.cn/datasets/hhjinjiajie/FlashRAG_Dataset/resolve/master/retrieval_corpus/wiki18_100w_e5_index.zip
- https://www.modelscope.cn/datasets/hhjinjiajie/FlashRAG_Dataset/resolve/master/retrieval_corpus/wiki18_100w.jsonl
4단계: 설정 파일 작성
필요한 파일들을 다운로드한 후, FlashRAG에 필요한 설정 파일(myconfig.yaml)에 파일 경로를 작성해야 합니다.
). 채워야 할 필드는 다음과 같으며, 나머지 필드는 프로그램 실행 중에 채워집니다:
- method2index
- corpus_path
plan_agent.py와 execute_agent.py는 각각 Critic의 계획(planning)과 실행(execution)을 제공합니다. 실행 스크립트는 run_exp.sh에 있습니다.
실행 후, 평가 결과와 중간 변수들은 save_dir 아래의 해당 폴더에 저장됩니다.
다음 명령어를 직접 실행하여 Critic Agent를 구동할 수 있습니다:
cd ./critic_agent/
python run_exp.sh
우리는 예측 판단 및 세밀한 오류 인식(fine-grained error recognition)을 목표로 하는 RAG-Error 벤치마크를 소개합니다.
Key-Value 소개:
입력(Input): 사용자 질의(User query) + Top-K 문서(Top-K Document) + LLM의 예측(LLM's prediction) + 1단계 오류 태그 세트(1st-tier error tag set) + 2단계 오류 태그 세트(2nd-tier error tag set)출력(Output): 판단(Judgement) + 1단계 오류 태그 세트(선택됨) + 2단계 오류 태그 세트(선택됨)
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기