ReaRAG: 반복적 검색 증강 생성(Iterative Retrieval Augmented Generation)을 통한 지식 가이드 추론 기반
요약
ReaRAG는 지식 가이드 추론을 활용하여 대규모 추론 모델(LRM)의 사실성을 높이는 반복적 검색 증강 생성 기술입니다. Wikipedia 코퍼스와 E5-base-v2 검색기를 사용하여 데이터 구축부터 SFT 학습까지의 과정을 다룹니다.
핵심 포인트
- 반복적 RAG를 통한 대규모 추론 모델의 사실성 향상
- 지식 가이드 추론 기반의 데이터 구축 및 학습 방법론
- E5-base-v2 및 Wikipedia 코퍼스를 활용한 RAG 엔진 구현
- QwQ-32b-preview 등 LRM을 활용한 데이터 생성 프로세스
ReaRAG: 지식 가이드 추론(Knowledge-guided Reasoning)을 통한 반복적 검색 증강 생성(Iterative Retrieval Augmented Generation) 기반 대규모 추론 모델(Large Reasoning Models)의 사실성 향상
- 📜 서론 (Introduction)
- ⚙️ 환경 설정 (Environment setup)
- 🔨 데이터 구축 (Data construction)
- 🏋🏻♂️ ReaRAG 학습 (ReaRAG Training)
- 🤖️ 추론 (Inference)
- 📝 인용 (Citation)
conda create --name rearag python=3.10 -y && conda activate rearag
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124
pip install vllm==0.6.5
...
여기에 제공된 RAG 엔진은 원본 논문에 기술된 구현 방식과 다르다는 점에 유의하십시오. 대중적인 사용을 용이하게 하기 위해, 본 저장소에서는 실용적이고 단순화된 버전을 제공합니다.
RAG 엔진을 설정하려면 먼저 다음 항목들을 다운로드하십시오:
-
E5-base-v2 검색기 (Retriever). 🤗 링크
-
2018 Wikipedia 코퍼스 (Corpus). 🤗 링크
-
인덱싱된 2018 Wikipedia 코퍼스 (Indexed 2018 Wikipedia Corpus). FlashRAG_Dataset/retrieval_corpus/wiki18_100w_e5_index.zip
-
다음 파일의 설정을 수정하십시오:
ReaRAG/deploy/deploy_config.sh
및 ReaRAG/deploy/retriever_config.yaml
- 배포 스크립트를 실행하고, 배포를 확인하기 위해 다음 문구가 나타나는지 확인하십시오:
'xx running on http://{host}:{port}'
# ReaRAG/deploy/ 디렉토리 내부에서
bash deploy_rag_engine.sh
시작하기 전에 rag_engine이 배포되었는지 확인하십시오 (RAG 엔진 배포 참조). 그 다음, 데이터 구축을 위해 LLM/LRM (예: QwQ-32b-preview)을 배포하려면 아래 단계를 따르십시오:
ReaRAG/deploy/deploy_async.sh의 환경 변수를 수정하십시오.- 배포 스크립트를 실행하고, 배포를 확인하기 위해 다음 문구가 나타나는지 확인하십시오:
'xx running on http://{host}:{port}'
# ReaRAG/deploy/ 디렉토리 내부에서
bash deploy_async.sh
우리는 HotpotQA, MuSiQue, NQ로부터 데이터를 구축합니다. 따라서 해당 데이터들을 다운로드하고 다음과 같은 구조로 처리했는지 확인하십시오:
{
"question": "What is the capital of ...",
"answer": "The capital of xxx is ...",
...
다음으로, ReaRAG/src_data/data_config.yaml의 설정을 수정하십시오. 그 다음, 아래 스크립트를 실행하십시오:
# ReaRAG/ 디렉토리 내부에서
bash data_construct.sh
데이터 결과는 ReaRAG/src_data/data에 conv_qwq.json이라는 이름으로 저장되며, 각 데이터는 아래와 같은 구조를 가진 대화(conversation) 리스트입니다:
{
"messages": [{"role": "user", "content": "..."},
{"role": "assistant", "reasoning": "..."},
...
SFT (Supervised Fine-Tuning) 과정에서 손실(loss)은 content 키가 아닌 reasoning 키를 포함하는 메시지에 대해서만 계산됩니다.
학습 데이터는 (🤗 huggingface)에서 찾을 수 있습니다.
이를 ShareGPT와 같은 일반적인 SFT 데이터와 혼합하여 사용할 수 있습니다. 모델 학습을 위해 Metragon-LM을 채택했습니다. 더 가벼운 구현을 원하신다면 LongAlign의 코드와 환경을 채택할 수 있습니다.
시작하기 전에 rag_engine이 배포되었는지 확인하십시오 (RAG Engine Deployment 참조). 그 다음, 아래 단계에 따라 ReaRAG를 배포하십시오:
ReaRAG/deploy/deploy_config.sh의 설정을 수정합니다.- 배포 스크립트를 실행하고, 배포를 확인하기 위해
'xx running on http://{host}:{port}'라는 문구가 나타나는지 확인합니다:
# ReaRAG/deploy/ 디렉토리 내부에서
bash deploy.sh
다음으로, ReaRAG/infer.sh의 설정을 수정합니다. 그 다음, 아래 스크립트를 실행하십시오:
# ReaRAG/ 디렉토리 내부에서
bash infer.sh
저희의 작업이 유용하다고 생각하신다면, ReaRAG를 인용해 주시기 바랍니다:
@article{lee2025rearag,
title={ReaRAG: Knowledge-guided Reasoning Enhances Factuality of Large Reasoning Models with Iterative Retrieval Augmented Generation},
author={Lee, Zhicheng and Cao, Shulin and Liu, Jinxin and Zhang, Jiajie and Liu, Weichuan and Che, Xiaoyin and Hou, Lei and Li, Juanzi},
...
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기