RAG2026-5일22차시 · RAG를 Graph로 바꾸기5 / 20← 이전목차다음 →MetaContents

22차시. RAG를 Graph로 바꾸기

2. 왜 그래프로 바꾸나 — 구체적 비교

출처: 원본 PDF 22차시_RAG를Graph로바꾸기.pdf 4쪽 · 쪽 그림 4쪽

2-1) 15차시 방식에 검증을 추가한다면

출력
def ask(question):
    docs = _search(question)
    if not docs:
        return {...}
    answer = _chain.invoke(...)

    # 검증을 넣으려면...
    grade = verify(answer, docs)
    if grade == "retry":
        answer = _chain.invoke(...)      # 다시 생성
        grade = verify(answer, docs)     # 다시 검증
        if grade == "retry":
            answer = _chain.invoke(...)  # 또 다시...
                                         ← 코드가 계단처럼 쌓임
    return {...}

2-2) 그래프 방식에 검증을 추가한다면

출력
g.add_node("verify", verify_node)              # 노드 추가
g.add_edge("generate", "verify")               # 연결 하나
g.add_conditional_edges("verify", route, {...}) # 분기 하나
g.add_edge("bump", "generate")                 # 루프 하나

→ 기존 노드는 한 줄도 안 고칩니다
→ 재시도가 몇 번이든 코드 길이는 그대로입니다

🎯 결정적 차이
함수 방식 — 흐름이 코드 안에 숨어 있습니다
복잡해질수록 중첩이 깊어집니다
그래프 방식 — 흐름이 구조로 드러나 있습니다
복잡해져도 노드와 선이 늘어날 뿐입니다
그리고 그래프는 그림으로 그려볼 수 있습니다.
함수 안의 if문 중첩은 그릴 수 없습니다.

← 이전 절22차시 · 1. 오늘 할 일은 딱 하나다음 절 →22차시 · 3. 실습 ① — 코드 매핑 확인