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

24차시. Retriever Node 분리

퀴즈 1 — 점수로 검색 성공과 실패 이유 가르기

점수와 최소 점수를 비교해 retrieval_ok와 fail_reason을 반환하세요. 문서가 없으면 no_result.

빈칸 코드에서 시작합니다.

Python
def judge_retrieval(docs, top_score, min_score):
    pass
결과 보기 (예시 풀이)
Python
# 검색 결과를 보고 '쓸 만한가'와 '안 되면 왜인가'를 적어 주는 함수입니다.
# 재검색을 할지 말지는 여기서 정하지 않습니다. 재료만 남기고 판단은 분기 함수가 합니다.
def judge_retrieval(docs, top_score, min_score):
    # 1) 문서가 하나도 없으면 결과 없음
    if not docs:
        return {"retrieval_ok": False, "fail_reason": "no_result"}

    # 2) 문서는 있지만 가장 높은 점수도 기준에 못 미치면 점수 미달
    if top_score < min_score:
        return {"retrieval_ok": False, "fail_reason": "low_score"}

    # 3) 둘 다 아니면 정상. 실패 이유는 빈 문자열로 둡니다.
    return {"retrieval_ok": True, "fail_reason": ""}

MIN_SCORE = 0.47

# 확인 1: 점수가 기준 이상 → 정상
print(judge_retrieval(["조각A", "조각B"], 0.73, MIN_SCORE))

# 확인 2: 문서는 있는데 점수 미달 → low_score (질문을 고쳐 다시 찾을 대상)
print(judge_retrieval(["조각A"], 0.41, MIN_SCORE))

# 확인 3: 문서가 없음 → no_result (질문을 바꿔도 소용없는 경우)
print(judge_retrieval([], 0.0, MIN_SCORE))

실행 결과

출력
{'retrieval_ok': True, 'fail_reason': ''}
{'retrieval_ok': False, 'fail_reason': 'low_score'}
{'retrieval_ok': False, 'fail_reason': 'no_result'}

채점 기준: 재검색 여부는 이 함수가 정하지 않는다.

관련 교안: 24차시 「4. 실패 사유를 구분하는 이유」

← 이전 절24차시 · 실습 1 — Retriever Node 분리 실습 따라 하기다음 절 →24차시 · 퀴즈 2 — 빈 검색어면 검색 없이 empty_query 돌려주기