바쁘신 분은 이것만:
채점을 “답이 맞았냐”로만 봤더니, 정답 문서를 안 읽고도 합격하는 문제가 3주 넘게 숨어 있었습니다.
검색 성능 문제가 아니라 검색 후보를 자르는 지점이 원인이었습니다.
한 번은 엉뚱한 수정 후 점수가 올라서 “효과 있다”고 착각하기도 했습니다. 😇
문제 상황 😵
회 사 업무 문서 116개에 챗봇을 붙여 사용하고 있고, 매주 질문 102개를 자동 채점하고 있습니다.
점수는 계속 안정적이었는데 어느 날 “답변할 때 실제로 어떤 문서를 읽었나”를 확인해봤습니다.
출장비 정산 질문 하나가 10번 연속 정답 문서를 읽지 않았는데도 6번이나 합격하고 있었습니다.
이유는 채점 기준이 핵심 단어 3개 중 2개면 합격이었기 때문입니다. 엉뚱한 문서에서도 흔한 단어 두 개를 가져오면 합격할 수 있었습니다.
어떻게 찾았나 📖
Claude Code에 원인을 추측하지 말고 아래 숫자부터 보여달라고 했습니다.
검색 후보와 점수를 그대로 보여줘.
정답 문서가 몇 위인지, 후보를 몇 개에서 자르는지, 어디서 탈락하는지 숫자로 보여줘.
몇 주 동안 못 찾던 원인이 바로 나왔습니다.
정답 문서는 검색에서는 1등이었는데 최종 심사까지 올라가지 못하고 있었습니다.
앞단에서 후보를 자를 때 동점 문서가 몰려 있었고, 동점 순서를 정하는 기준이 없어 사실상 랜덤으로 잘리고 있었습니다.
그래서 문서 내용이 바뀌지 않아도 재등록으로 저장 순서가 달라지면 어떤 날은 맞고 어떤 날은 틀렸습니다.
수정한 것 🔧
두 가지만 바꿨습니다.
동점일 때 후보 순서를 고정
의미검색 상위 문서는 무조건 최종 심사에 포함
기존 후보 수는 줄이지 않았습니다. 후보를 줄이면 다른 질문의 성능이 조용히 깨질 수 있기 때문입니다.
수정 후 같은 질문에서 핵심 단어 3개를 모두 맞혔고, 정답 문서도 정상적으로 인용