--- id: [[P-Reinforce|P-Reinforce]]-AUTO-AGR-001 category: AI_and_ML confidence_score: 1.00 tags: [auto-reinforced, agentic-rag, self-rag, multi-hop-reasoning, autonomous-agent, rag] last_reinforced: 2026-05-04 --- # [[Agentic RAG|Agentic RAG]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "슀슀둜 μƒκ°ν•˜κ³  κ²€μƒ‰ν•˜λŠ” μžμœ¨ν˜• AI: κ³ μ •λœ νŒŒμ΄ν”„λΌμΈμ„ λ”°λ₯΄μ§€ μ•Šκ³ , AI μ—μ΄μ „νŠΈκ°€ 문제 해결을 μœ„ν•΄ 슀슀둜 검색 μ „λž΅μ„ μˆ˜λ¦½ν•˜κ³ , κ²°κ³Όλ₯Ό λΉ„νŒμ μœΌλ‘œ λΆ„μ„ν•˜λ©°, ν•„μš”μ‹œ μΆ”κ°€ 정보λ₯Ό λŠ₯λ™μ μœΌλ‘œ μˆ˜μ§‘ν•˜λŠ” μ§€λŠ₯ν˜• 검색 체계." ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) 에이전틱 RAG(Agentic RAG)λŠ” AI μ—μ΄μ „νŠΈκ°€ 도ꡬ(Tool)λ₯Ό ν™œμš©ν•˜μ—¬ 지식 μˆ˜μ§‘ 및 생성 과정을 자율적으둜 μ œμ–΄ν•˜λŠ” κ³ κΈ‰ RAG μ•„ν‚€ν…μ²˜μž…λ‹ˆλ‹€. 1. **자율적 μ›Œν¬ν”Œλ‘œμš° (Autonomous Workflow)**: * **κ³„νš 수립 (Planning)**: μ§ˆλ¬Έμ„ λΆ„μ„ν•˜μ—¬ μ–΄λ–€ 정보λ₯Ό μ–΄λ””μ„œ 검색할지 κ²°μ •ν•©λ‹ˆλ‹€. * **도ꡬ ν™œμš© (Tool Use)**: [[Vector Database|벑터 DB]], μ›Ή 검색, API 등을 상황에 맞게 ν˜ΈμΆœν•©λ‹ˆλ‹€. * **자기 λ°˜μ„± ([[Self-Reflection|Self-Reflection]])**: κ²€μƒ‰λœ 정보가 μΆ©λΆ„ν•œμ§€, μƒμ„±λœ 닡변에 λͺ¨μˆœμ΄ μ—†λŠ”μ§€ 슀슀둜 κ²€ν† (Self-Critique)ν•©λ‹ˆλ‹€. * **반볡 κ°œμ„  (Iteration)**: 정보가 λΆ€μ‘±ν•˜λ‹€κ³  νŒλ‹¨λ˜λ©΄ μƒˆλ‘œμš΄ 검색 쿼리λ₯Ό μƒμ„±ν•˜μ—¬ 과정을 λ°˜λ³΅ν•©λ‹ˆλ‹€. 2. **핡심 기법**: * **[[Multi-hop Reasoning|Multi-hop Reasoning]]**: 흩어져 μžˆλŠ” μ—¬λŸ¬ 정보λ₯Ό μ—°κ²°ν•˜μ—¬ λ³΅μž‘ν•œ 인과관계λ₯Ό μΆ”λ‘ ν•©λ‹ˆλ‹€. * **Corrective RAG (CRAG)**: 검색 결과의 ν’ˆμ§ˆμ„ ν‰κ°€ν•˜κ³ , λΆ€μ μ ˆν•  경우 λŒ€μ²΄ 검색원(예: μ›Ή)을 κ°€λ™ν•˜μ—¬ 였λ₯˜λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€. * **Self-RAG**: μƒμ„±λœ ν…μŠ€νŠΈμ˜ 각 ꡬ절이 μΆœμ²˜μ— κΈ°λ°˜ν•˜λŠ”μ§€ μ‹€μ‹œκ°„μœΌλ‘œ κ²€μ¦ν•©λ‹ˆλ‹€. 3. **μ§€μ‹μ˜ 고도화**: * λ‹¨μˆœ 검색을 λ„˜μ–΄, 정보λ₯Ό λΉ„νŒμ μœΌλ‘œ μˆ˜μš©ν•˜κ³  [[Knowledge Graph|Knowledge Graph]]와 κ²°ν•©ν•˜μ—¬ κ³ λ°€λ„μ˜ 지식 μ•„ν‚€ν…μ²˜λ₯Ό κ΅¬μΆ•ν•˜λŠ” 데 κΈ°μ—¬ν•©λ‹ˆλ‹€. ## βš–οΈ Trade-offs & Caveats * **λ¬΄ν•œ 루프 리슀크**: μ—μ΄μ „νŠΈκ°€ λͺ…ν™•ν•œ 결둠에 λ„λ‹¬ν•˜μ§€ λͺ»ν•˜κ³  μœ μ‚¬ν•œ 검색을 λ°˜λ³΅ν•˜λŠ” λ¬΄ν•œ 루프에 빠질 수 μžˆμŠ΅λ‹ˆλ‹€. (검색 μ˜ˆμ‚° 및 νƒ€μž„μ•„μ›ƒ μ„€μ • ν•„μˆ˜) * **μ§€μ—° μ‹œκ°„ 및 λΉ„μš©**: 닀단계 μΆ”λ‘ κ³Ό 반볡적 LLM 호좜둜 인해 응닡 속도가 λŠλ €μ§€κ³  운영 λΉ„μš©μ΄ 크게 μ¦κ°€ν•©λ‹ˆλ‹€. * **뢈투λͺ…ν•œ μ˜μ‚¬κ²°μ •**: μ—μ΄μ „νŠΈκ°€ μ™œ νŠΉμ • 정보λ₯Ό κ²€μƒ‰ν•˜κΈ°λ‘œ κ²°μ •ν–ˆλŠ”μ§€ μΆ”λ‘  κ³Όμ •(Chain of Thought)을 λͺ¨λ‹ˆν„°λ§ν•˜κΈ° μœ„ν•œ κ°€μ‹œμ„±([[Production Observability|Observability]]) 도ꡬ가 λ°˜λ“œμ‹œ λ™λ°˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. ## πŸ’» μ‹€μ „ κ΅¬ν˜„ μ½”λ“œ (Boilerplate) μ—μ΄μ „νŠΈκ°€ 슀슀둜 검색 ν•„μš”μ„±μ„ νŒλ‹¨ν•˜κ³  도ꡬλ₯Ό ν˜ΈμΆœν•˜λŠ” `LangGraph` μŠ€νƒ€μΌμ˜ κ°œλ… κ΅¬μ‘°μž…λ‹ˆλ‹€. ```python from langgraph.graph import StateGraph, END # 1. μ—μ΄μ „νŠΈ μƒνƒœ μ •μ˜ class AgentState: query: str context: list answer: str steps: int # 2. λ…Έλ“œ μ •μ˜: 검색이 ν•„μš”ν•œμ§€ νŒλ‹¨ def judge_retrieval(state): if "λͺ¨λ₯΄κ² μ–΄" in state.answer or not state.context: return "retrieve" return "finalize" # 3. λ…Έλ“œ μ •μ˜: μžκ°€ λ°˜μ„± 및 루프 μ œμ–΄ def self_reflect(state): if state.steps > 3: return END # λ‹΅λ³€ ν’ˆμ§ˆ 검증 둜직... return "improve" # 4. κ·Έλž˜ν”„ ꡬ성 workflow = StateGraph(AgentState) workflow.add_node("retrieve", search_tool) workflow.add_node("generate", llm_generate) # ... 쑰건뢀 μ—£μ§€ 및 루프 μ„€μ • ``` ## πŸ”— 지식 μ—°κ²° (Graph) * **기반 기술**: [[Retrieval-Augmented Generation (RAG)|Advanced RAG]], [[Self-Reflection|Self-Reflection]] * **핡심 μ•„ν‚€ν…μ²˜**: [[Multi-hop Reasoning|Multi-hop Reasoning]], [[Adaptive RAG|Adaptive RAG]] * **운영 체계**: [[Production Observability|Observability]], [[Chain of Thought|CoT (Chain of Thought)]] --- *Last updated: 2026-05-04*