Ayanami0730/arag
요약
A-RAG는 기존 Graph RAG와 Workflow RAG의 한계를 극복하기 위해 설계된 에이전트적 RAG 프레임워크입니다. 모델이 자율적으로 검색 전략을 선택하고 반복적으로 도구를 사용하여 정보를 추출할 수 있도록 지원합니다.
핵심 포인트
- 자율적 전략, 반복적 실행, 교차 도구 사용의 3대 원칙 준수
- 키워드, 문장, 청크 수준의 계층적 검색 인터페이스 제공
- 모델이 검색 결정에 직접 참여하여 에이전트적 자율성 확보
- 테스트 시간 스케일링을 통한 성능 향상 가능성 제시
저희 프로젝트가 도움이 되었다면, GitHub에서 별(star) ⭐을 눌러주세요!
# 1. 설치
git clone https://github.com/Ayanami0730/arag.git && cd arag
uv sync --extra full # 또는: pip install -e "[full]"
...
참고: 데이터셋은 HuggingFace 🤗에 호스팅되어 있으며, Zly0523/linear-rag 및 GraphRAG-Bench에서 통일된 형식으로 재구성되었습니다.
uv가 없으신가요?
설치 방법: curl -LsSf https://astral.sh/uv/install.sh | sh
[2026년 2월] 📄 arXiv에 논문 공개
[2026년 2월] 🚀 초기 코드 및 평가 스위트(evaluation suite) 공개
최첨단 언어 모델(Frontier language models)은 강력한 추론 및 장기적 도구 사용(long-horizon tool-use) 능력을 입증해 왔습니다. 하지만 기존의 RAG 시스템은 이러한 능력을 활용하지 못하고 있습니다. 기존 시스템은 여전히 다음 두 가지 패러다임에 의존합니다:
Graph RAG: 단일 샷(single shot)으로 구절(passages)을 검색하고 이를 모델의 입력값으로 연결하는 알고리즘을 설계함
Workflow RAG: 워크플로(workflow)를 미리 정의하고 모델이 이를 단계별로 실행하도록 프롬프팅함
두 패러다임 모두 모델이 검색 결정에 참여하는 것을 허용하지 않으며, 이로 인해 모델의 성능 향상에 따른 효율적인 확장이 불가능합니다.
우리는 진정한 에이전트적 자율성(agentic autonomy)을 정의하는 세 가지 핵심 원칙을 식별했습니다:
자율적 전략 (Autonomous Strategy): 에이전트가 작업 특성에 따라 검색 전략을 동적으로 선택함
반복적 실행 (Iterative Execution): 에이전트가 중간 결과에 따라 적응하며 다회차(multi-round) 실행을 지원함
교차 도구 사용 (Interleaved Tool Use): 에이전트가 ReAct와 유사한 행동(action)→관찰(observation)→추론(reasoning) 루프를 따름

세 가지 RAG 패러다임의 비교. 오직 A-RAG만이 세 가지 원칙을 모두 충족하며, 이를 통해 진정한 에이전트적 프레임워크가 됩니다.
A-RAG는 모델에 **계층적 검색 인터페이스 (hierarchical retrieval interfaces)**를 직접 노출하는 에이전트적 RAG (Agentic RAG) 프레임워크입니다. A-RAG는 keyword_search, semantic_search, chunk_read라는 세 가지 검색 도구를 제공하여, 에이전트가 다양한 입도(granularities)에 걸쳐 정보를 적응적으로 검색하고 추출할 수 있도록 합니다.

A-RAG 프레임워크의 개요. 에이전트는 계층적 검색 도구(hierarchical retrieval tools)를 반복적으로 사용하여 코퍼스(corpus)로부터 정보를 수집하며, 최종 답변을 제공할 시점을 자율적으로 결정합니다.
- 🔍
계층적 검색 (Hierarchical Retrieval): 키워드 수준, 문장 수준, 그리고 청크(chunk) 수준의 정보 접근 - 🤖
진정한 에이전트 자율성 (True Agentic Autonomy): 자율적 전략, 반복적 실행, 그리고 도구 사용의 교차 수행 (interleaved tool use) - 📈
테스트 시간 스케일링 (Test-Time Scaling): 컴퓨팅 자원이 증가함에 따라 성능이 향상됨 - ⚡
컨텍스트 효율성 (Context Efficient): 유사하거나 더 적은 검색 토큰(retrieved tokens)으로 우수한 정확도 달성
벤치마크 데이터셋에서 베이스라인(baselines)과 A-RAG의 LLM 평가 정확도 (LLM-Evaluation Accuracy, LLM-Acc) 및 포함-일치 정확도 (Contain-Match Accuracy, Cont-Acc) 측면의 결과 (%). 가장 좋은 결과는 굵게, 두 번째로 좋은 결과는 밑줄로 표시되었습니다.
| 방법 (Method) | MuSiQue | HotpotQA | 2Wiki | Med. | Novel | |||
|---|---|---|---|---|---|---|---|---|
| Cont | LLM | Cont | LLM | Cont | LLM | LLM | ||
| Vanilla Baselines | ||||||||
| Direct Answer | 18.3 | 13.9 | 45.4 | 40.7 | 30.3 | 49.7 | 68.6 | 45.3 |
| Naive RAG | 38.6 | 36.1 | 74.5 | 72.9 | 42.6 | 59.0 | 75.3 | 68.5 |
| Graph-RAG & Workflow RAG | ||||||||
| GraphRAG | 26.4 | 20.8 | 33.2 | 33.3 | 18.4 | 47.2 | 51.3 | 28.8 |
| HippoRAG2 | 40.6 | 38.4 | 80.7 | 69.7 | 64.7 | 68.5 | 72.0 | 70.1 |
| LinearRAG | 34.8 | 26.3 | 72.0 | 60.5 | 62.9 | 62.3 | 53.1 | 45.4 |
| FaithfulRAG | 28.8 | 22.6 | 60.5 | 52.5 | 38.8 | 38.1 | 42.5 | 33.3 |
| ... | A-RAG (Ours) | |||||||
| A-RAG (Naive) | 43.8 | 38.5 | 76.6 | 70.7 | 52.3 | 62.4 | 79.0 | 70.0 |
| A-RAG (Full) | 46.1 | 39.6 | 77.1 | 74.0 | 60.2 | 63.7 | 79.4 | 72.7 |
| Method | MuSiQue | HotpotQA | 2Wiki | Med. | Novel | |||
|---|---|---|---|---|---|---|---|---|
| LLM | Cont | LLM | Cont | LLM | Cont | LLM | LLM | |
| Vanilla Baselines | ||||||||
| Direct Answer | 35.8 | 26.5 | 63.6 | 53.5 | 51.3 | 54.0 | 90.5 | 45.1 |
| Naive RAG | 52.8 | 48.7 | 81.2 | 79.5 | 50.2 | 66.5 | 86.1 | 70.6 |
| Graph-RAG & Workflow RAG | ||||||||
| GraphRAG | 48.3 | 39.1 | 82.5 | 74.9 | 66.5 | 70.7 | 87.3 | 77.1 |
| HippoRAG2 | 61.7 | 52.5 | 84.8 | 75.0 | 82.0 | 79.7 | 78.2 | 54.3 |
| ... | A-RAG (Ours) | |||||||
| A-RAG (Naive) | 66.2 | 59.7 | 90.8 | 85.3 | 70.6 | 76.9 | 92.7 | 80.4 |
| A-RAG (Full) | 74.1 | 65.3 | 94.5 | 88.0 | 89.7 | 88.9 | 93.1 | 85.3 |
arag/
├── src/arag/ # 메인 패키지 (Main package)
│ ├── core/ # 핵심 모듈 (Core modules)
...
A-RAG는 서로 다른 세분화 수준(granularity)에서 작동하는 세 가지 검색 도구를 제공합니다:
Method: 정확한 어휘 일치(Exact lexical matching) (대소문자 구분 안 함)최적의 용도: 알려진 개체명, 이름, 기술 용어점수 (Score): Score(chunk, keywords) = Σ count(k, chunk) × |k|
사전 인덱싱 불필요 (No pre-indexing required)
Method: 문장 수준 임베딩을 사용한 밀집 검색(Dense retrieval)최적의 용도: 개념적 질의, 정확한 단어 표현이 알려지지 않은 경우점수 (Score): 질의와 문장 임베딩 간의 코사인 유사도 (Cosine similarity between query and sentence embeddings)사전 구축된 인덱스 필요 (Requires pre-built index)
Method: 지정된 청크 전체 내용 검색전략 (Strategy): 검색을 통해 식별된 유망한 청크를 읽고, 문맥 확보를 위해 인접한 청크(±1)를 읽음문맥 추적기 (Context Tracker): 이미 접근한 청크의 중복 읽기를 방지합니다.
| Dataset | Description | Source |
|---|---|---|
| MuSiQue | 다단계 QA (Multi-hop QA) (2~4 단계) | HuggingFace |
| ... | ||
| 준비할 자체 코퍼스는 JSON 파일 형식으로 작성하세요: |
`[
export ARAG_API_KEY="your-api-key"
export ARAG_BASE_URL="https://api.openai.com/v1"
export ARAG_MODEL="gpt-5-mini"
...
from arag import LLMClient, BaseAgent, ToolRegistry
from arag.tools.keyword_search import KeywordSearchTool
from arag.tools.semantic_search import SemanticSearchTool
...
Baseline Scripts (베이스라인 스크립트): 모든 베이스라인 방법론(GraphRAG, HippoRAG2, LinearRAG 등)과 호환되는 스크립트
Ablation Interfaces (어블레이션 인터페이스): 어블레이션 연구(Ablation studies)를 위한 완전한 인터페이스 (키워드 검색 제외, 시맨틱 검색 제외, 청크 읽기 제외 등)
Multi-Provider Support (멀티 프로바이더 지원): Anthropic Claude 및 Google Gemini에 대한 네이티브 API 지원 (현재는 OpenAI 호환 API만 지원)
Additional Benchmarks (추가 벤치마크): HotpotQA, 2WikiMQA, 그리고 GraphRAG-Bench 평가를 위한 스크립트
Visualization Tools (시각화 도구): 궤적 (Trajectory) 시각화 및 분석 도구
기여와 피드백은 언제나 환영합니다!
연구에 A-RAG를 사용하신다면, 저희 논문을 인용해 주세요:
@misc{du2026aragscalingagenticretrievalaugmented,
title={A-RAG: Scaling Agentic Retrieval-Augmented Generation via Hierarchical Retrieval Interfaces},
author={Mingxuan Du and Benfeng Xu and Chiwei Zhu and Shaohan Wang and Pengyu Wang and Xiaorui Wang and Zhendong Mao},
...
MIT License
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기