본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 15. 10:26

PlanRAG: 의사 결정자로서의 생성형 거대 언어 모델(LLM)을 위한 계획 후 검색 증강 생성 (Plan-then-Retrieval

요약

NAACL 2024에 채택된 PlanRAG는 LLM이 의사 결정자로서 먼저 계획을 세운 뒤 검색을 수행하는 'Plan-then-Retrieval' 방식을 제안합니다. 관계형 및 그래프 데이터베이스 환경에서 기존 RAG 방식보다 향상된 성능을 목표로 합니다.

핵심 포인트

  • Plan-then-Retrieval 구조를 통한 의사 결정 최적화
  • Neo4j 및 MySQL 기반의 다양한 데이터 시나리오 지원
  • DQA 벤치마크를 활용한 성능 검증 및 구현 가이드 제공
  • GPT-4 등 고성능 모델 활용 권장

PlanRAG: 의사 결정자로서의 생성형 거대 언어 모델 (Generative Large Language Models)을 위한 계획 후 검색 증강 생성 (Plan-then-Retrieval Augmented Generation)

NAACL 2024 Main 채택: https://aclanthology.org/2024.naacl-long.364/

우리의 RAG 기반 의사 결정자들은 DQA 벤치마크의 레이블된 속성 그래프 (Labeled Property Graph, LPG) 데이터에 접근하기 위한 도구로 Neo4j를 사용합니다. 따라서 다음 명령어와 지침에 따라 Neo4j를 준비해야 합니다:

# Ubuntu
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
...

DQA 벤치마크의 관계형 데이터 (Relational data)를 위해, 다음 명령어와 지침에 따라 MySQL을 준비해야 합니다:

# Ubuntu
wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb
...

"config.json" 파일의 값들을 데이터베이스 연결 정보와 사용하고자 하는 API 키로 채워주세요.

참고: 논문에서의 의사 결정자들은 생성형 언어 모델 (Generative LM)로 OpenAI의 GPT-4.0을 사용합니다. 성능을 위해 OpenAI의 GPT-4.0 사용을 강력히 권장합니다.

{
"OPENAI_API_KEY": "Your OpenAI API key",
"HUGGINGFACEHUB_API_TOKEN": "Your Hugging Face Hub API key",
...
conda create -n planRAG -y python=3.8 && conda activate planRAG
pip install -r requirements.txt
  • PlanRAG (본 연구)

관계형 데이터베이스를 이용한 위치 찾기 (locating) 시나리오

python src/main.py \ --technique PlanRAG \ --scenario locating \ --database relational \ --question_num 1 \ --model gpt-4 \ --model_method openai

그래프 데이터베이스를 이용한 구축 (building) 시나리오

python src/main.py \ --technique PlanRAG \ --scenario building \ --database graph \ --question_num 1 \ --model gpt-4 \ --model_method openai

  • 반복적 RAG (Iterative RAG)
    python src/main.py \ --technique IterRAG \ --scenario locating \ --database relational \ --question_num 1 \ --model gpt-4 \ --model_method openai

  • 단일 턴 RAG (Single-turn RAG)
    python src/main.py \ --technique SingleRAG \ --scenario locating \ --database relational \ --question_num 1 \ --model gpt-4 \ --model_method openai

python src/main.py \
--technique PlanRAG \
--scenario locating \
...

참고: DQA는 질문이 상대적으로 길기 때문에, GPT-4 또는 GPT-3.5를 사용하여 one-shot 실행만 하는 것을 권장합니다.

본 실험에서 오픈 모델 (open models)을 사용하려면, 환경(예: conda 환경)에 vllm 라이브러리를 설치해야 합니다. 다음 명령어를 통해 설치할 수 있습니다.

pip install vllm

여기에서 공식 문서를 확인할 수도 있습니다.

다음 코드는 meta-llama/Llama-2-70b-chat-hf 모델을 사용하여 코드를 실행하는 예시입니다.

# 먼저, vllm을 통해 모델을 서버로 배포해야 합니다.
python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-2-70b-chat-hf
# 이제, 오픈 모델 실험을 시도할 수 있습니다.
...

Huggingface 라이브러리를 사용할 수도 있습니다. 다음 코드는 meta-llama/Llama-2-13b-chat-hf를 실행하고 Huggingface 파이프라인 (pipeline) 함수를 통해 실험을 수행하기 위한 것입니다.

python src/main.py \
--technique IterRAG \
--scenario locating \
...

참고: 이 코드는 vllm 방식보다 상대적으로 느리기 때문에, 실행을 권장하지 않습니다.

locating 시나리오를 위한 질문을 생성하려면 Europa Universalis IV 게임 세이브 파일이 필요합니다. 데이터 생성을 위해 /data/locating/raw/ 경로에 raw1445.eu4, raw1618.eu4, raw1701.eu4 세 개의 원본 파일을 제공합니다.

다음 코드를 순차적으로 실행하여 /data/locating/questions/simulated_question.json을 생성할 수 있습니다.

export PYTHONPATH=.
python ./src/data_parsers/locating/queries_gen/simulator.py
python ./src/data_parsers/locating/example_gen/main.py

참고: Locating 시뮬레이터를 실행하는 데는 보통 약 30분이 소요됩니다.

building 시나리오를 위한 질문을 생성하려면 Victoria 3 게임 세이브 파일이 필요합니다. 데이터 생성을 위해 /data/building/raw/ 경로에 raw1836.v3raw1849.v3 두 개의 원본 파일을 제공합니다.

다음 코드를 순차적으로 실행하여 /data/building/questions/simulated_questions.json을 생성할 수 있습니다:

export PYTHONPATH=.
python ./src/data_parsers/building/queries_gen/simulator.py
python ./src/data_parsers/building/example_gen/main.py

참고: Building 시뮬레이터를 실행하는 데는 보통 약 1시간 정도 소요됩니다.

Locating 시나리오에서 "upstream" 및 "downstream"이라는 이름의 컬럼은 본 논문에서 각각 "source"와 "destination"을 의미합니다 (즉, 비즈니스 로직은 동일합니다). 또한, "base_trading_power"와 "calculated_trading_power"는 모두 본 논문에서 "TP_country"를 의미합니다.

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0