본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 10. 04:00

LevelRAG: 다중 홉 논리 계획을 통한 재작성 증강 검색기 기반의 검색 증강 생성 향상

요약

LevelRAG는 다중 홉 논리 계획과 하이브리드 검색을 결합한 RAG 프레임워크입니다. 이 시스템은 사용자의 복잡한 질의를 원자적 하위 질의로 분해하고, 각 하위 질의에 대해 여러 저수준 검색기를 활용하여 정확성과 완전성을 높여 답변을 생성합니다.

핵심 포인트

  • 다중 홉 논리 계획으로 RAG의 정확성 및 완전성 향상
  • 질의를 원자적 하위 질의로 분해하는 고수준 검색기 사용
  • Dense, Elastic, Web 등 다양한 리트리버와 LLM을 활용한 구조
  • FlexRAG 기반이며 Qwen2-7B 등의 생성기 배포가 필요함

LevelRAG: Multi-hop Logic Planning over Rewriting Augmented Searchers를 활용한 검색 증강 생성(RAG) 개선

논문 LevelRAG: Enhancing Retrieval-Augmented Generation with Multi-hop Logic Planning over Rewriting Augmented Searchers의 소스 코드입니다.

LevelRAG는 다중 홉 논리 계획(multi-hop logic planning)과 하이브리드 검색(hybrid retrieval)을 통합하여 검색 과정의 완전성(completeness)과 정확성을 모두 향상시키는 2단계 검색 증강 생성(RAG) 프레임워크입니다. 첫 번째 단계에서는 사용자의 질의를 원자적(atomic) 하위 질의로 분해하는 고수준 검색기(high-level searcher)가 작동합니다. 두 번째 단계에서는 각 하위 질의에 대해 가장 관련성 높은 문서를 검색하기 위해 여러 개의 저수준 검색기(low-level searchers)를 활용하며, 이 문서들을 사용하여 최종 답변을 생성합니다. 각 저수준 검색기 내에서는 대규모 언어 모델(LLMs)이 사용되어 원자적 질의를 해당 리트리버에 더 잘 맞도록 정제합니다.

저희 코드는 FlexRAG 프로젝트를 기반으로 합니다. FlexRAG 설치 지침을 따라주세요:

pip install flexrag==0.2.0

이 프로젝트의 소스 코드를 다운로드하세요:

git clone https://github.com/ictnlp/LevelRAG

LevelRAG를 더 간단한 방식으로 실행하고 싶다면, 'Running the Simple LevelRAG' 섹션을 참조해 주세요.

LevelRAG를 실행하기 전에 리트리버(retriever) 준비가 필요합니다. LevelRAG는 총 세 가지 종류의 리트리버인 DenseRetriever, ElasticRetriever, 그리고 WebRetriever를 사용합니다. WebRetriever는 인덱스 구축이 필요하지 않지만, DenseRetrieverElasticRetriever 모두 먼저 인덱스를 준비해야 합니다. 저희 실험에서는 Atlas가 제공하는 wikipedia 코퍼스를 사용합니다. 다음 명령을 실행하여 코퍼스를 다운로드할 수 있습니다:

wget https://dl.fbaipublicfiles.com/atlas/corpora/wiki/enwiki-dec2021/text-list-100-sec.jsonl
wget https://dl.fbaipublicfiles.com/atlas/corpora/wiki/enwiki-dec2021/infobox.jsonl

코퍼스를 다운로드한 후, 다음 명령을 실행하여 DenseRetriever를 구축할 수 있습니다:

마찬가지로, 다음 명령을 실행하여 ElasticRetriever를 구축할 수 있습니다:

python -m flexrag.entrypoints.prepare_index \
retriever_type=elastic \
file_paths=[text-list-100-sec.jsonl,infobox.jsonl] \
...

참고: ElasticRetriever를 구축하기 전에 elasticsearch 서버를 설정해야 합니다. 여기에서 elasticsearch 서버 설치 지침을 따르십시오.

WebRetriever는 인덱스 구축이 필요하지 않습니다. 다만, 사전에 Bing Search API_KEY를 준비해야 합니다. Bing Search API 웹사이트를 방문하여 API_KEY를 얻을 수 있습니다.

LevelRAG는 생성기(generator)로 Qwen2-7B-Instruct를 사용합니다. 다음 명령을 실행하여 vllm을 통해 생성기를 배포할 수 있습니다:

python -m vllm.entrypoints.openai.api_server \
--model Qwen2-7B-Instruct \
--gpu-memory-utilization 0.95 \
...

이 명령은 4개의 GPU를 사용하여 Qwen2-7B-Instruct를 배포합니다. --tensor-parallel-size--gpu-memory-utilization는 사용자의 GPU 구성에 따라 조정할 수 있습니다.

리트리버(retriever) 준비가 완료되면, scripts 폴더의 스크립트를 실행하여 LevelRAG를 실행할 수 있습니다. 스크립트를 실행하기 전에, 스크립트에 있는 플레이스홀더 변수들을 올바른 값으로 대체했는지 확인하십시오.

  • LEVELRAG_PATH: LevelRAG 저장소의 경로입니다.
  • DENSE_PATH: DenseRetriever의 경로입니다. - BING_KEY: Bing Search API_KEY입니다.

또한 LevelRAG용 GUI 데모도 제공합니다. scripts 폴더에서 run_highlevel_gui.sh 스크립트를 실행하여 GUI 데모를 실행할 수 있습니다. GUI에서는 쿼리를 입력하고 LevelRAG의 출력을 확인할 수 있습니다.

리트리버 구축이 너무 복잡하다고 생각되면, scripts 폴더에서 run_simple.sh 스크립트를 실행하여 LevelRAG의 간단한 버전을 실행할 수 있습니다. LevelRAG의 간단한 버전은 DenseRetriever만 사용하며 WebRetriever는 필요하지 않습니다.

그리고 ElasticRetriever입니다.

뛰어난 다중 홉(multi-hop) 문제 분해와 서브쿼리 적응성 최적화 덕분에, LevelRAG는 단일 리트리버만으로도 좋은 성능을 달성할 수 있으며 실행 속도가 더 빠릅니다. 또한 run_simple_gui.sh 스크립트를 실행하여 LevelRAG의 간단한 버전 GUI 애플리케이션을 시작할 수도 있습니다.

참고

run_simple.sh 스크립트에서 API_KEY를 사용자의 OpenAI API_KEY로 변경했는지 확인하십시오.

저희는 여러 단일 홉(single-hop) 및 다중 홉(multi-hop) 지식 집약형 질의응답 데이터셋으로 실험을 수행했습니다. 실험 결과에 따르면, LevelRAG는 베이스라인 방법과 비교하여 상당한 성능 향상을 달성합니다. 실험 결과는 아래 표를 참조하십시오.

본 프로젝트는 MIT 라이선스 하에 배포되며, 자세한 내용은 LICENSE 파일을 참고하십시오.

저희의 작업이 유용하다고 생각되시면, 논문 인용을 고려해 주십시오:

@misc{zhang2025levelragenhancingretrievalaugmentedgeneration,
title={LevelRAG: Enhancing Retrieval-Augmented Generation with Multi-hop Logic Planning over Rewriting Augmented Searchers},
author={Zhuocheng Zhang and Yang Feng and Min Zhang},
... 

질문이 있으시면 GitHub에 이슈를 생성하거나 이메일(zhangzhuocheng20z@ict.acn.cn)로 연락 주십시오.

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0