RAG2026-5일24차시 · Retriever Node 분리9 / 18← 이전목차다음 →MetaContents

24차시. Retriever Node 분리

6. 실습 ③ — 점진적 확대 전략

출처: 원본 PDF 24차시_RetrieverNode분리.pdf 13~14쪽 · 쪽 그림 13쪽 14쪽

재검색할 때 같은 조건으로 다시 찾으면 당연히 같은 결과입니다. 조건을 바꿔야 합니다.

6-1) 재시도 횟수에 따라 넓히기

Python
def retriever_node(state) -> dict:
    retries = state.get("retries", 0)

    # 재시도할수록 넓고 관대하게 찾는다
    k     = state.get("top_k") or (config.TOP_K + retries * 3)
    floor = state.get("min_score")
    if floor is None:
        floor = max(0.30, config.MIN_SCORE - retries * 0.05)

    ...
재시도kmin_score의도
0회 (최초)50.47정확한 것만
1회80.42조금 넓게
2회110.37더 넓게
3회 이상—0.30 (하한)더는 내리지 않음

⚠️ 하한을 반드시 두세요
max(0.30, ...)
이 하한이 없으면 재시도가 반복될수록
임계값이 0에 가까워집니다.
그러면 아무 문서나 통과하게 되고,
결국 관련 없는 근거로 답을 만듭니다.
"찾을 때까지 기준을 낮춘다"는 위험한 전략입니다.
차라리 "못 찾았습니다"가 낫습니다.

💡 이 전략의 트레이드오프
얻는 것 — 표현 차이로 놓친 문서를 잡아냅니다
잃는 것 — 노이즈가 섞일 위험이 커집니다
그래서 26차시 Verifier가 함께 있어야 안전합니다.
넓게 찾되, 결과를 검증하는 구조입니다.

← 이전 절24차시 · 5. 실습 ② — 단독 테스트다음 절 →24차시 · 7. 실습 ④ — 그래프에 연결