ReLink-Inc/PropRAG
요약
PropRAG는 LLM의 멀티홉 추론 능력을 강화하기 위해 설계된 새로운 RAG 프레임워크입니다. 문맥적 명제를 기본 단위로 활용하고 LLM-free 온라인 빔 서치 알고리즘을 통해 지연 시간과 비용을 줄이면서 복잡한 질의에 대한 성능을 극대화했습니다.
핵심 포인트
- 문맥적으로 풍부한 명제(Propositions)를 지식 단위로 활용
- LLM-free 온라인 빔 서치로 추론 지연 시간 및 비용 절감
- MuSiQue, HotpotQA 등 주요 벤치마크에서 SOTA 성능 입증
- Llama-3.3-70B-Instruct 기반의 명제 및 엔티티 추출 지원
PropRAG은 대규모 언어 모델 (LLMs)의 멀티홉 추론 (multi-hop reasoning) 능력을 향상시키기 위해 설계된 새로운 검색 증강 생성 (Retrieval-Augmented Generation, RAG) 프레임워크입니다. PropRAG는 다음과 같은 방식을 통해 이를 달성합니다:
- LLM을 사용하여 오프라인에서 추출된, 문맥적으로 풍부한 **명제 (propositions)**를 기본 지식 단위로 활용합니다.
- 명제 경로 (proposition paths)에 대해 효율적인 **LLM-free 온라인 빔 서치 알고리즘 (LLM-free online beam search algorithm)**을 채택하여 다단계 추론 체인을 명시적으로 탐색합니다.
이러한 접근 방식은 PropRAG가 검색 과정 중 온라인 LLM 호출과 관련된 지연 시간 (latency) 및 비용을 피하면서도 복잡한 질의에 대한 증거 검색을 개선할 수 있게 합니다. PropRAG는 MuSiQue, HotpotQA, 2WikiMultihopQA와 같은 까다로운 멀티홉 질의응답 (QA) 벤치마크에서 최첨단 (state-of-the-art) 제로샷 (zero-shot) 성능을 입증했습니다.
참고: 이 코드 저장소는 원본 HippoRAG 저장소(https://github.com/OSU-NLP-Group/HippoRAG)를 기반으로 수정되었습니다. 코드를 공개해 주신 저자분들께 감사드립니다.
이 저장소는 활발히 연구 중인 코드베이스임을 유의해 주세요.
- 버그가 있을 수 있거나 일부 구성 요소가 완전히 작동하지 않을 수 있습니다. 수정 및 개선이 진행 중입니다.
- 기여와 버그 보고를 환영합니다! 언제든지 이슈 (issue)를 생성해 주세요.
필요한 Python 패키지를 설치하세요:
pip install -r requirements.txt
PropRAG는 오프라인 명제 및 엔티티 추출 (entity extraction)을 위해 LLM을 사용하며, 엔드투엔드 (end-to-end) QA를 위한 리더 (reader)로도 잠재적으로 사용됩니다. 현재는 OpenRouter API만 지원됩니다.
OpenRouter API Key: 이 저장소의 루트 디렉토리에 openrouter_api_key.txt라는 이름의 파일을 생성하고, 그 안에 OpenRouter API 키를 붙여넣으세요.
현재 추출을 위해 지원되는 모델 (논문에서 사용됨): Llama-3.3-70B-Instruct (Nebius AI Studio 또는 호환 가능한 OpenRouter 엔드포인트를 통해 사용 가능).
출시 예정: OpenRouter를 통한 GPT-4o-mini 및 기타 모델 지원.
시간이 많이 소요될 수 있는 오프라인 명제 및 엔티티 추출 단계를 다시 실행하지 않고 논문의 결과를 재현하려면, 제공된 사전 추출된 데이터를 사용할 수 있습니다.
outputs/<dataset_name>/ 디렉토리에 위치한 openie_results_ner_meta-llama_llama-3.3-70b-instruct.json 파일들은 본 논문에서 사용된 각 데이터셋에 대해 Llama-3.3-70B-Instruct를 사용하여 추출된 명제 (propositions) 및 엔티티 (entities)를 포함하고 있습니다.
실행 과정에서 추출 (extraction) 단계를 건너뛰고자 한다면, 이 파일들이 올바른 위치에 있는지 확인하십시오.
특정 데이터셋에 대해 평가 (evaluations)를 실행하려면 다음 명령어를 사용하십시오:
python main.py --dataset <dataset_name>
<dataset_name>을 지원되는 데이터셋 식별자 중 하나(예: musique, hotpotqa, 2wikimultihopqa, popqa, nq_rear)로 교체하십시오.
예시:
python main.py --dataset musique
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기