24차시. Retriever Node 분리
4. 실패 사유를 구분하는 이유
출처: 원본 PDF 24차시_RetrieverNode분리.pdf 9쪽 · 쪽 그림 9쪽
오늘 추가한 fail_reason이 왜 중요한지 봅시다.
| fail_reason | 의미 | 적절한 처방 |
|---|---|---|
| empty_query | 질의가 비어 있음 | 사용자에게 재입력 요청 |
| search_error | 인덱스·시스템 오류 | fallback으로 안전 종료 |
| no_result | 인덱스에 아무것도 없음 | 인덱스 재생성 필요 (설정 문제) |
| low_score | 가져왔지만 점수 미달 | 질의 재작성 후 재검색 (30차시) |
| (빈 문자열) | 정상 | generate로 진행 |
🎯 low_score와 no_result는 다릅니다
no_result — 인덱스가 비어 있거나 뭔가 잘못됨
→ 질문을 바꿔도 소용없습니다
→ 시스템 설정을 확인해야 합니다
low_score — 문서는 있는데 표현이 안 맞음
→ 질문을 바꾸면 찾을 수 있습니다!
→ 30차시 rewrite의 대상입니다
이 둘을 구분하지 않으면
"인덱스가 비었는데 질문만 계속 바꾸는" 헛수고가 생깁니다.
💡 14차시의 남은 실패를 떠올려보세요
"반품하고 싶은데 언제까지?"
문서에는 "환불"이라고 적혀 있어서
점수가 0.41로 기준(0.47)에 미달했습니다.
→ fail_reason = "low_score"
→ 30차시에서 "환불 신청 기한"으로 고쳐 재검색
→ 해결됩니다
오늘 남긴 이 한 줄이 그 길을 열어줍니다.