18차시. State 이해
7. RAG용 State 설계하기
출처: 원본 PDF 18차시_State이해.pdf 15쪽 · 쪽 그림 15쪽
오늘의 핵심 과제입니다. 3부까지 쓸 것을 미리 고려해 설계합니다.
7-1) 어떤 키가 필요할까?
| 키 | 타입 | 역할 · 채우는 노드 |
|---|---|---|
| question | str | 사용자 원본 질문 · 입력 시 설정 |
| query | str | 실제 검색에 쓸 질문 · 재작성 노드가 수정 |
| documents | list | 검색된 조각 목록 · Retriever |
| scores | list | 각 조각의 유사도 점수 · Retriever |
| answer | str | 생성된 답변 · Generator |
| grade | str | 검증 판정 (pass/retry) · Verifier |
| reason | str | 판정 이유 · Verifier |
| retries | int | 재시도 횟수 · 무한루프 방지 |
| log | list | 실행 이력 (Reducer 적용) |
7-2) question과 query를 나누는 이유 (중요)
🔑 이 설계가 30차시에서 빛을 발합니다
사용자 질문: "반품하고 싶은데 언제까지?"
검색을 돌렸는데 결과가 나쁩니다.
문서에는 "환불"이라고 적혀 있으니까요.
그래서 질의를 고쳐서 다시 검색합니다.
query = "환불 신청 기한 규정"
그런데 question은 그대로 둡니다.
왜냐하면 답변을 만들 때는
사용자가 실제로 물은 말에 답해야 하기 때문입니다.
검색용 문장 = query (계속 바뀔 수 있음)
답변 대상 = question (절대 안 바뀜)
하나로 합쳐두면 재작성할 때 원본이 사라집니다.