핵심 아이디어
기존 RAG 아키텍처들은 각각 고유한 구조를 제안하지만, 분해해 보면 공통된 모듈의 조합으로 표현할 수 있습니다. Modular RAG는 이 관점에서 6개의 핵심 모듈을 정의하고, 이들의 조합 방식(플로우 패턴)을 체계화합니다.6개 핵심 모듈
| 모듈 | 역할 | 주요 연산자 |
|---|---|---|
| Indexing | 문서 분할, 임베딩, 인덱스 저장 | Chunk, Embed, Index |
| Pre-Retrieval | 쿼리 변환, 확장, 분해 | Rewrite, HyDE, Decompose |
| Retrieval | 벡터/키워드/하이브리드 검색 | Similarity Search, BM25, Hybrid |
| Post-Retrieval | 재순위화, 압축, 필터링 | Rerank, Compress, Filter |
| Generation | 프롬프트 구성, LLM 생성 | Prompt Template, LLM Call |
| Orchestration | 플로우 제어, 라우팅, 판단 | Route, Judge, Loop Control |
각 모듈의 연산자 상세
각 모듈의 연산자 상세
Indexing 모듈: 문서를 처리 가능한 단위로 변환합니다.
Chunk: 문서를 고정 크기 또는 의미 단위로 분할Embed: 청크를 벡터로 변환 (OpenAI, BGE, E5 등)Index: 벡터 데이터베이스에 저장 (Chroma, Qdrant, Milvus 등)
Rewrite: 쿼리를 검색에 적합한 형태로 변환HyDE: 가상 답변을 생성하여 검색 쿼리로 사용Decompose: 복잡한 질문을 하위 질문으로 분해
Similarity Search: 벡터 코사인 유사도 기반 검색BM25: 전통적인 키워드 기반 검색Hybrid: 벡터 검색과 키워드 검색을 결합
Rerank: Cross-encoder로 관련도 순서 재정렬Compress: 불필요한 내용 제거, 핵심 정보 추출Filter: 관련성 임계값 이하 문서 제거
Prompt Template: 컨텍스트와 질문을 프롬프트로 구성LLM Call: 프롬프트를 LLM에 전달하여 답변 생성
Route: 쿼리 특성에 따라 경로 결정Judge: 중간 결과 품질 평가 및 판정Loop Control: 반복 종료 조건 관리
플로우 패턴
모듈 간 연결 방식을 정의하는 패턴입니다.아래 4가지 패턴(Linear, Conditional, Branching, Loop)은 Gao et al. (2024) 원 논문에서 주로 강조하는 핵심 패턴입니다. Tuning 패턴은 추론 구조가 아닌 학습 단계의 최적화로, 실무 확장 관점에서 함께 다룹니다.
1. Linear (선형)
가장 기본적인 순차 처리입니다. Naive RAG가 이 패턴에 해당합니다.2. Conditional (조건부)
평가 결과에 따라 경로를 선택합니다. CRAG가 이 패턴을 사용합니다.3. Branching (분기)
하나의 입력에 대해 여러 경로로 분기하여 병렬 처리합니다. 다중 검색 소스를 사용하는 경우입니다.4. Loop (루프)
생성 결과가 기준을 충족할 때까지 반복합니다. Self-RAG가 이 패턴을 사용합니다.5. Tuning (튜닝) — 실무 확장 관점
검색기(Retriever)나 생성기(Generator)를 파인튜닝하여 RAG 성능을 향상시킵니다.- Retriever FT: 도메인 데이터로 임베딩 모델을 파인튜닝하여 검색 정확도 향상
- Generator FT: 검색 결과를 효과적으로 활용하도록 LLM을 파인튜닝 (Self-RAG의 Reflection Token 학습 등)
- Dual FT: 검색기와 생성기를 동시에 최적화하여 전체 파이프라인 성능 향상
LangGraph에서의 모듈 구성
LangGraph의 StateGraph는 Modular RAG의 모듈을 노드로, 플로우 패턴을 엣지로 직접 대응할 수 있습니다.- Conditional 패턴
- Branching 패턴
- Loop 패턴
기존 아키텍처와의 관계
Modular RAG 관점에서 각 RAG 아키텍처를 모듈 조합으로 표현할 수 있습니다.| 아키텍처 | 사용 모듈 | 플로우 패턴 |
|---|---|---|
| Naive RAG | Retrieval + Generation | Linear |
| Advanced RAG | Pre-Retrieval + Retrieval + Post-Retrieval + Generation | Linear |
| Self-RAG | Retrieval + Generation + Orchestration(자기 평가) | Loop |
| CRAG | Retrieval + Post-Retrieval(평가) + Generation | Conditional |
| Adaptive RAG | Orchestration(라우팅) + Retrieval + Generation | Conditional + Loop |
| Agentic RAG | Orchestration(에이전트) + 모든 모듈 | Conditional + Loop |
Modular RAG는 특정 구현이 아니라 RAG 시스템을 이해하고 설계하는 프레임워크입니다. 이후의 Self-RAG, CRAG, Adaptive RAG, Agentic RAG 문서에서 각 아키텍처의 구체적인 구현을 확인할 수 있습니다.
참고 논문
| 논문 | 링크 |
|---|---|
| Modular RAG: Transforming RAG Systems into LEGO-like Reconfigurable Frameworks (Gao et al., 2024) | arXiv 2407.21059 |
| Retrieval-Augmented Generation for Large Language Models: A Survey (Gao et al., 2023) | arXiv 2312.10997 |

