테스트 설정 방식
저자는 두 개의 결제 규칙 문서(payment-rulebook documents)를 기반으로 소규모 검색 증강 생성(RAG) 시스템을 구축하고 두 가지 점검을 수행했습니다.
- 재현율(Recall) 테스트 – 상위 5개 결과 중 올바른 페이지가 포함되었는가? 결과: 60%.
- 답변(Answer) 테스트 – 생성기가 도출한 최종 답변이 정확했는가? 결과: 90%.
40%의 격차는 불가능해 보였습니다. 검색기(retriever)가 10번 중 4번이나 올바른 페이지를 놓쳤는데, 어떻게 모델은 10번 중 9번이나 정답을 맞힐 수 있었을까요?
검색기를 "수정"하려는 첫 번째 시도들
개발자는 두 가지 일반적인 기법을 시도했습니다.
- 하이브리드 검색(Hybrid search) – 어휘(lexical) 신호와 벡터(vector) 신호를 혼합합니다. 재현율은 그대로였습니다.
- 리랭커(Reranker) – 가져온 5개 페이지의 순서를 재정렬합니다. 재현율은 70%로 상승했지만, 90%의 답변 정확도에는 여전히 크게 못 미쳤습니다.
두 도구 모두 이미 가져온 결과의 순서만 바꿀 뿐, 후보군(candidate set)에 포함되지 않은 페이지를 마법처럼 불러올 수는 없습니다. 문제는 다른 곳에 있었습니다.
모델이 아니라 지표(metric)가 잘못되었습니다
저자는 페이지 라벨로 성공 여부를 판단하는 대신, 검색된 청크(chunk) 내의 실제 사실(fact)을 조사했습니다. 4번의 "실패" 중 3번의 경우, 올바른 사실이 존재했지만 테스트 스크립트가 예상한 페이지가 아닌 다른 페이지에 있었습니다. 즉, 평가 방식이 예상치 못한 페이지에서 정답을 찾아낸 검색기에게 벌점을 준 셈입니다.
지표를 "검색된 청크 중 요구되는 사실을 포함하는 것이 있는가?"로 변경하자, 재현율은 답변 정확도와 일치하는 90%로 급증했습니다. 검색기는 제대로 작동하고 있었고, 평가 프레임워크가 잘못되었던 것입니다.
전통적인 재현율이 오해를 불러일으킬 수 있는 이유
- 페이지 단위 라벨링은 가짜 실패(phantom failures)를 만듭니다. 하나의 사실이 여러 페이지에 나타날 수 있습니다. 단 하나의 페이지에만 정답(ground truth) 태그를 달면, 다른 모든 올바른 검색 결과도 오류로 처리됩니다.
- 작은 코퍼스(corpus)는 이 효과를 증폭시킵니다. 문서 수가 적을 경우, 단 하나의 잘못 라벨링된 페이지가 답변 정확도는 유지하면서도 재현율을 급격히 떨어뜨릴 수 있습니다.
- 임베딩 노이즈가 사실을 가립니다. 벡터는 페이지 전체를 점수화합니다. 주변의 법률적 또는 기술적 텍스트가 대상 문장의 관련성 신호를 희석시켜, 사실이 포함되어 있음에도 불구하고 해당 페이지의 순위를 뒤로 밀어낼 수 있습니다.
RAG 실무자를 위한 실질적인 시사점
- 순위 지정(ranking)과 검색 실패(retrieval failures)를 구분하십시오. 리랭커는 전자의 문제만 해결할 수 있습니다. 올바른 청크가 후보군에 포함되지 않는다면 순서를 재정렬하는 것은 아무런 도움이 되지 않습니다.
- 테스트 데이터를 사실(fact) 단위로 라벨링하십시오. 각 쿼리를 단일 문서 식별자가 아닌, 필요한 구체적인 정보와 연결하십시오.
- 작은 데이터셋에 대규모 벤치마크를 신뢰하지 마십시오. 작고 도메인 특화된 코퍼스는 다르게 작동하며, 일반적인 재현율 점수는 기만적일 수 있습니다.
- 임베딩의 입도(granularity)를 주의 깊게 살피십시오. 페이지 크기의 청크에는 많은 단어가 포함되어 있으며, 주변의 법률 텍스트가 찾고자 하는 사실의 순위를 낮출 수 있습니다.
핵심 요약: 평가 방식이 작업과 일치하지 않으면 높은 답변 정확도 점수와 낮은 전통적 재현율 수치가 공존할 수 있습니다. 모델이 아닌 지표를 수정하는 것이 시간을 절약하고, 오보(false alarms)를 줄이며, 더욱 신뢰할 수 있는 RAG 배포를 가능하게 합니다.
