22차시. RAG를 Graph로 바꾸기
5. 실습 ③ — 단계별로 붙이기
출처: 원본 PDF 22차시_RAG를Graph로바꾸기.pdf 8쪽 · 쪽 그림 8쪽
한 번에 다 만들지 말고 노드를 하나씩 붙이며 확인합니다.
5-1) 1단계 — retrieve만
g = StateGraph(RAGState)
g.add_node("retrieve", retrieve_node)
g.add_edge(START, "retrieve")
g.add_edge("retrieve", END) # 일단 바로 종료
app = g.compile()
r = app.invoke(init_state("환불은 며칠 이내인가요?"))
print("검색 결과:", len(r["documents"]), "건")
print("점수:", r["scores"])
✓ 검색 결과: 3 건
✓ 점수: [0.73, 0.639, 0.489]5-2) 2단계 — generate 추가
g.add_node("generate", generate_node)
g.add_edge("retrieve", "generate") # END 대신 generate로
g.add_edge("generate", END)
r = app.invoke(init_state("환불은 며칠 이내인가요?"))
print(r["answer"])실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)
환불은 상품 수령 후 7일 이내에 신청하실 수 있습니다 [1]. 단순 변심의 경우 왕복 배송비는 고객 부담입니다 [1].5-3) 3단계 — 분기와 fallback 추가
g.add_node("fallback", fallback_node)
g.add_conditional_edges("retrieve", route_after_retrieve,
{"ok": "generate", "empty": "fallback"})
g.add_edge("fallback", END)
r = app.invoke(init_state("대표이사가 누구인가요?"))
print(r["answer"]) # fallback 메시지가 나와야 함실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)
관련 자료를 찾지 못했습니다.
질문을 조금 더 구체적으로 바꿔 다시 물어봐 주세요.💡 단계별로 붙이는 이유
3단계를 한 번에 만들었다가 에러가 나면
어디가 문제인지 알 수 없습니다.
하나씩 붙이면 방금 붙인 것이 원인입니다.
5분 더 걸리지만 30분을 아낍니다.