Files
2nd/10_Wiki/Topics/AI_and_ML/Adaptive RAG.md
T
Antigravity Agent 0441f6e2a2 feat(wiki): implement P-Reinforce v3.0 standard & integrate 26+ new knowledge artifacts
- Formalized automatic record migration protocol in System Manual.
- Integrated high-density knowledge for RAG, AI, Business Strategy, and Leadership.
- Enhanced graph connectivity across core strategic hubs.
- Archived raw data and updated timeline records.
2026-05-04 22:40:32 +09:00

65 lines
3.4 KiB
Markdown

---
id: [[P-Reinforce|P-Reinforce]]-AUTO-ADR-001
category: AI_and_ML
confidence_score: 1.00
tags: [auto-reinforced, adaptive-rag, rag, query-routing, search-optimization]
last_reinforced: 2026-05-04
---
# [[Adaptive RAG|Adaptive RAG]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> "질문의 무게에 따른 맞춤형 검색: 단순한 질문은 LLM의 지식으로 처리하고, 복잡한 질문은 정밀한 검색 파이프라인을 가동하여 리소스 낭비를 줄이고 응답 품질을 최적화하는 동적 검색 아키텍처."
## 📖 구조화된 지식 (Synthesized Content)
적응형 RAG(Adaptive RAG)는 사용자의 쿼리 복잡도를 사전에 분석하여 가장 적합한 검색 전략을 동적으로 선택하는 고도화된 RAG 프레임워크입니다.
1. **동적 쿼리 라우팅 (Dynamic Query Routing)**:
* **Level 1 (단순)**: LLM이 이미 학습한 지식으로 충분히 답변 가능한 질문. 검색 없이 즉시 응답하여 지연 시간과 비용을 최소화합니다.
* **Level 2 (중간)**: 단일 문서나 제한된 출처 확인이 필요한 질문. 표준 [[Retrieval-Augmented Generation (RAG)|RAG]] 프로세스를 가동합니다.
* **Level 3 (복잡)**: 여러 문서 간의 교차 검증이나 추론이 필요한 다중 홉([[Multi-hop Reasoning|Multi-hop]]) 질문. [[Agentic RAG|Agentic RAG]]나 [[GraphRAG|GraphRAG]]를 가동하여 심층 리서치를 수행합니다.
2. **핵심 메커니즘**:
* **쿼리 분류기 (Query Classifier)**: 질문의 의도, 구체성, 최신성 필요 여부 등을 판단합니다.
* **검색 전략 최적화**: 매번 같은 방식으로 검색하는 것이 아니라, 필요에 따라 키워드, 벡터, 또는 웹 검색을 조합합니다.
## ⚖️ Trade-offs & Caveats
* **분류 오류의 리스크**: 쿼리 분류기가 질문의 복잡도를 과소평가하면 검색 없이 잘못된 답변(환각)을 내놓을 수 있고, 과대평가하면 불필요한 검색 비용과 시간이 발생합니다.
* **시스템 복잡성**: 여러 갈래의 검색 파이프라인을 유지 관리해야 하므로 전체 아키텍처의 복잡도가 증가합니다.
## 💻 실전 구현 코드 (Boilerplate)
쿼리 복잡도에 따라 검색 여부를 결정하는 라우터의 개념적 예시입니다.
```python
def adaptive_rag_router(query):
# 1. 쿼리 복잡도 분석 (간단한 예시: 길이 및 특정 키워드 기반)
complexity_score = analyze_complexity(query)
if complexity_score < 0.3:
# LLM 직접 응답
return llm.generate(f"지식 기반 답변: {query}")
elif complexity_score < 0.7:
# 표준 RAG 가동
context = vector_db.search(query)
return llm.generate_with_context(query, context)
else:
# 에이전틱 리서치 모드 가동
return agent_engine.run_mission(query)
def analyze_complexity(query):
# 실제로는 소형 모델이나 프롬프트를 통해 판단
if "비교해줘" in query or "분석해줘" in query:
return 0.9
return 0.2
```
## 🔗 지식 연결 (Graph)
* **기반 기술**: [[Retrieval-Augmented Generation (RAG)|RAG]], [[Semantic Search|Semantic Search]]
* **고도화 모델**: [[Agentic RAG|Agentic RAG]], [[GraphRAG|GraphRAG]]
* **평가 지표**: [[Cost per Query|쿼리당 비용]], [[Latency|지연 시간]]
---
*Last updated: 2026-05-04*