24차시. Retriever Node 분리
퀴즈 1 — 점수로 검색 성공과 실패 이유 가르기
점수와 최소 점수를 비교해 retrieval_ok와 fail_reason을 반환하세요. 문서가 없으면 no_result.
빈칸 코드에서 시작합니다.
def judge_retrieval(docs, top_score, min_score):
pass결과 보기 (예시 풀이)
# 검색 결과를 보고 '쓸 만한가'와 '안 되면 왜인가'를 적어 주는 함수입니다.
# 재검색을 할지 말지는 여기서 정하지 않습니다. 재료만 남기고 판단은 분기 함수가 합니다.
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. 실패 사유를 구분하는 이유」