RAG2026-5일23차시 · Modular RAG 개념8 / 18← 이전목차다음 →MetaContents

23차시. Modular RAG 개념

5. 3부에서 완성할 최종 구조

출처: 원본 PDF 23차시_ModularRAG개념.pdf 10~11쪽 · 쪽 그림 10쪽 11쪽

지금은 이해하지 않아도 됩니다. 33차시까지 이 형태로 커집니다.

출력
■ 최종 그래프 (32차시 완성형)

START
  ↓
retrieve ────────┐
  │              │ 검색 실패
  │ 검색 성공     ↓
  ↓            rewrite ──→ (재검색) ──→ retrieve
generate         ↑
  ↓              │ 재검색 필요
verify ──────────┘
  │
  ├─ pass ────→ END
  ├─ retry ───→ bump ──→ generate
  └─ giveup ──→ fallback ──→ END

📝 코드로 보면

출력
g = StateGraph(RAGState)
g.add_node("retrieve", retriever_node)    # 24차시
g.add_node("generate", generator_node)    # 25차시
g.add_node("verify",   verifier_node)     # 26차시
g.add_node("rewrite",  rewrite_node)      # 30차시
g.add_node("bump",     bump_node)         # 27차시
g.add_node("fallback", fallback_node)     # 31차시

g.add_edge(START, "retrieve")

g.add_conditional_edges("retrieve", route_after_retrieve,
    {"ok": "generate", "rewrite": "rewrite",
     "giveup": "fallback"})                # 29차시

g.add_edge("generate", "verify")

g.add_conditional_edges("verify", route_after_verify,
    {"pass": END, "retry": "bump",
     "research": "rewrite", "giveup": "fallback"})

g.add_edge("bump", "generate")             # 재생성 루프
g.add_edge("rewrite", "retrieve")          # 재검색 루프
g.add_edge("fallback", END)

💡 노드 6개, 분기 2개
이것이 실무에서 가장 널리 쓰이는 Modular RAG 형태입니다.
더 복잡하게 만들 수도 있지만,
대부분의 문제는 이 구조로 해결됩니다.

← 이전 절23차시 · 4. 모듈 간 계약 (인터페이스)다음 절 →23차시 · 6. 3부 로드맵