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문 중첩은 그릴 수 없습니다.