맞았는데 틀린 챗봇 개선기

바쁘신 분은 이것만:

  • 채점을 “답이 맞았냐”로만 봤더니, 정답 문서를 안 읽고도 합격하는 문제가 3주 넘게 숨어 있었습니다.

  • 검색 성능 문제가 아니라 검색 후보를 자르는 지점이 원인이었습니다.

  • 한 번은 엉뚱한 수정 후 점수가 올라서 “효과 있다”고 착각하기도 했습니다. 😇

문제 상황 😵

회사 업무 문서 116개에 챗봇을 붙여 사용하고 있고, 매주 질문 102개를 자동 채점하고 있습니다.

점수는 계속 안정적이었는데 어느 날 “답변할 때 실제로 어떤 문서를 읽었나”를 확인해봤습니다.

출장비 정산 질문 하나가 10번 연속 정답 문서를 읽지 않았는데도 6번이나 합격하고 있었습니다.

이유는 채점 기준이 핵심 단어 3개 중 2개면 합격이었기 때문입니다. 엉뚱한 문서에서도 흔한 단어 두 개를 가져오면 합격할 수 있었습니다.

어떻게 찾았나 📖

Claude Code에 원인을 추측하지 말고 아래 숫자부터 보여달라고 했습니다.

검색 후보와 점수를 그대로 보여줘.
정답 문서가 몇 위인지, 후보를 몇 개에서 자르는지, 어디서 탈락하는지 숫자로 보여줘.

몇 주 동안 못 찾던 원인이 바로 나왔습니다.

정답 문서는 검색에서는 1등이었는데 최종 심사까지 올라가지 못하고 있었습니다.

앞단에서 후보를 자를 때 동점 문서가 몰려 있었고, 동점 순서를 정하는 기준이 없어 사실상 랜덤으로 잘리고 있었습니다.

그래서 문서 내용이 바뀌지 않아도 재등록으로 저장 순서가 달라지면 어떤 날은 맞고 어떤 날은 틀렸습니다.

수정한 것 🔧

두 가지만 바꿨습니다.

  1. 동점일 때 후보 순서를 고정

  2. 의미검색 상위 문서는 무조건 최종 심사에 포함

기존 후보 수는 줄이지 않았습니다. 후보를 줄이면 다른 질문의 성능이 조용히 깨질 수 있기 때문입니다.

수정 후 같은 질문에서 핵심 단어 3개를 모두 맞혔고, 정답 문서도 정상적으로 인용​했습니다.

삽질했던 부분 ⚠️

3주 전에는 이 문제를 “검색이 안 된다”고 판단해서 문서에 키워드를 추가했습니다.

점수가 0% → 33%로 올라서 해결된 줄 알았는데, 이번에 확인해보니 그 수정은 원리적으로 효과가 없었습니다.

그날 우연히 후보 추첨이 잘 된 것이었습니다.

또 하나 발견한 것은 최종 심사가 4초 안에 끝나지 않으면 에러 없이 심사를 건너뛰고 기존 순서를 사용하고 있었다는 점입니다.

답변 자체는 계속 나오기 때문에 겉으로는 정상처럼 보였습니다.

배운 점 💡

1. “답이 맞았나”와 “정답 문서를 보고 맞았나”는 따로 봐야 합니다.
RAG 챗봇이라면 정답률뿐 아니라 실제 참조 문서도 같이 평가해야 합니다.

2. 부분점수 기준은 생각보다 위험합니다.
“3개 중 2개”처럼 평가하면 흔한 단어만 조합해도 합격할 수 있습니다.

3. AI에게 원인을 물을 때는 설명보다 숫자를 먼저 요구하는 게 좋았습니다.
검색 순위, 점수, 후보 개수, 컷오프 위치를 먼저 보면 추측을 크게 줄일 수 있습니다.

4. 실패했는데도 정상 결과를 내는 fallback을 확인해야 합니다.
에러가 없다고 정상 동작하는 것은 아니었습니다.

아직 전체 102문항을 다 확인한 것은 아닙니다.

그래도 이번에 가장 크게 바뀐 것은 성능보다 “왜 못 찾았는지를 숫자로 볼 수 있게 된 것”​입니다.

다음에는 직원들이 실제로 많이 묻는 “이거 어느 메뉴에서 하나요?” 같은 질문군도 평가셋에 추가​해볼 생각입니다.

2개의 답글
밀어주고 끌어주는

온·오프라인 AI 스터디

AI로 어디까지 할 수 있는지
직접 확인하실 분만 신청하세요.