Akasha 검색 평가, 18개를 모두 찾고도 탈락한 이유

목차

검색 결과 다섯 개 안에 정답이 있으면 검색기를 채택해도 될까. 에이전트 기억 도구 Akasha의 다국어 실험에서는 18개 질문 모두에서 정답을 찾은 모델도 통과시키지 않았다. 비슷한 오답을 정답보다 먼저 내놓은 질문이 있었기 때문이다. 정답을 포함하는 능력과 먼저 고르는 능력을 나누면 이 판단을 설명할 수 있다.

다섯 개를 찾았다는 말에서 빠진 순서

다음은 원리를 설명하기 위한 가상 검색 결과다. 질문은 “청구 내보내기 파일의 구분자는 무엇인가”이고, 정답은 청구 파일 안내에 있다. 감사 파일 안내는 같은 내보내기 기능을 설명하지만 질문의 답은 아니다.

순위결과 A결과 B
1청구 파일 안내, 정답감사 파일 안내, 유사 오답
2감사 파일 안내, 유사 오답청구 파일 안내, 정답

상위 다섯 개에 정답이 들어 있는지만 보면 두 결과는 같다. 그러나 첫 결과를 사용하거나 상위 결과에 더 많은 문맥을 배정하는 호출자에게는 결과 B가 불리하다. 생성 모델이 뒤의 정답을 보고 바로잡을 가능성은 있지만, 검색 평가만으로 그 보정을 보장할 수는 없다.

recall@5는 관련 문서 전체 중 상위 다섯 개에 들어온 문서의 비율이다. 질문마다 정답 문서가 하나인 이 실험에서는 정답이 있으면 1, 없으면 0이다. 여러 질문의 값을 평균하면 정답을 찾은 질문의 비율과 같아진다. 정답 문서가 여러 개인 평가에서는 이 둘이 같지 않다.

MRR@5는 첫 정답의 순위를 함께 본다. 정답이 1위면 1, 2위면 1/2, 5위면 1/5이고 상위 다섯 개에 없으면 0이다. 이 값을 질문별로 평균한다. A는 1, B는 0.5다. 정답 포함 여부가 같아도 순위를 바꾸면 점수가 달라진다.

그래도 평균 순위 점수 하나로는 부족할 수 있다. 잘못 적용하면 다른 결정을 내리게 되는 문서를 유사 오답, 검색 평가 용어로 hard negative로 지정하고, 그것이 정답보다 앞서는지 별도로 확인할 수 있다. 관계없는 문서보다 청구 안내와 감사 안내를 구별하는 쪽이 실제 선택의 어려움에 가깝다.

18개 중 한 질문이 평균에 묻히는 계산

Akasha의 2026년 10월 28일 평가 기록은 한국어·일본어·중국어의 같은 언어 검색과 영어와의 양방향 검색을 합쳐 아홉 방향을 검사한다. 방향마다 질문은 두 개다. 아래는 그 기록에서 세 모델을 골라 옮긴 결과이며, 이번 글에서 모델 추론을 재실행한 수치는 아니다.

ONNX 모델정답을 상위 5개에서 찾은 질문MRR@5유사 오답보다 정답이 앞선 비율엄격 기준
all-MiniLM-L6-v2, 기본 모델9/180.3814810.500000탈락
paraphrase-multilingual-MiniLM-L12-v218/180.9444440.888889탈락
paraphrase-multilingual-mpnet-base-v218/180.9722220.944444탈락

평가 환경은 Qdrant와 로컬 Transformers 임베딩 공급자다. 이 표는 전체 제품 성능이나 모든 언어의 품질을 뜻하지 않는다. 새로 추가한 18개 질문에 대한 결과다. 모델별 실행 근거와 채택하지 않은 다른 후보는 고정된 평가 기록에 남아 있다.

MPNet은 17개 질문에서 정답을 1위에 놓았다. 남은 한 질문에서는 중국어로 청구 내보내기 형식을 물었는데, 영어 감사 안내가 영어 청구 안내보다 앞섰다. 따라서 전체 MRR은 다음과 같다.

(17 × 1 + 1 × 1/2) / 18 = 0.972222…

아주 높은 평균이지만, 정답과 유사 오답의 상대 순서 조건은 17/18인 약 0.944444다. 평가 전에 정한 통과 기준은 각 언어 방향에서 recall@5가 1, MRR@5가 0.75 이상이며, 지정한 유사 오답이 정답보다 앞서는 질문이 없어야 한다는 것이었다. 조직이나 요청 범위를 벗어난 기록의 반환도 별도로 없어야 한다.

실패가 있는 중국어 질문·영어 기록 방향만 떼어 보면 두 질문의 정답 순위는 2위와 1위다. recall은 1이고 MRR도 (1/2 + 1) / 2 = 0.75로 기준을 만족한다. 이 방향의 탈락 이유는 MRR 미달이 아니라 유사 오답의 선행이다. 서로 다른 조건을 함께 검사해야 실패 이유까지 정확히 남는다.

위 계산은 모델 없이도 확인할 수 있다. 다음은 전체 계산 예제의 핵심이며, ranks의 각 숫자는 한 질문에서 첫 정답이 나온 순위다.

ranks = [1] * 16 + [2, 1]
recall = sum(0 < rank <= 5 for rank in ranks) / len(ranks)
mrr = sum(1 / rank if 0 < rank <= 5 else 0 for rank in ranks) / len(ranks)
print(f"recall@5={recall:.6f}, MRR@5={mrr:.6f}")

Python 3.14.5에서 전체 예제의 자체 검사와 계산을 실행했다. 출력은 recall@5=1.000000, MRR@5=0.972222다. 이 계산은 기록된 순위와 평균의 관계를 확인한다. 검색 결과 자체를 다시 측정하는 실험은 아니다.

다국어 벤치마크도 언어별 행을 읽어야 한다

이 질문을 넓혀 볼 때 참고할 만한 논문이 Xinyu Zhang 등의 MIRACL이다. 2023년 TACL에 발표된 이 연구는 18개 언어의 Wikipedia 검색 자료와 원어민의 관련성 판정을 제공한다. 여기서 다국어는 여러 언어를 평가한다는 뜻이다. 개별 검색은 한국어 질문으로 한국어 문서를 찾는 식으로 질문과 문서의 언어가 같다. Akasha의 중국어 질문·영어 기록 검색과는 과제가 다르다.

MIRACL의 개발 세트 결과에서도 평균과 개별 언어는 다른 선택을 지지할 수 있다. 아래는 원문 표 5에서 nDCG@10의 세 방법과 일부 행만 발췌한 표다. nDCG@10은 상위 열 개의 관련 문서에 순위가 낮을수록 작은 가중치를 주고, 이상적인 정렬의 점수로 나눈 값이다. 질문별 점수를 평균하므로 이 값을 정답률로 읽으면 안 된다.

평가 범위BM25mDPRBM25 + mDPR
18개 언어 평균0.3850.4180.566
한국어0.4190.4190.609
중국어0.1800.5120.526
인도네시아어0.4490.2720.443

출처는 MIRACL의 개발 세트 baseline 비교다. ©2023 Association for Computational Linguistics. CC BY 4.0에 따라 원문 표 5의 행과 열을 생략하고 한국어 설명으로 다시 구성했다. 값은 저자 측정값이며, 평균 행은 남겨 둔 세 언어만의 평균이 아니다.

BM25는 단어 일치를 이용하고 mDPR은 질문과 문서를 벡터로 만들어 비교한다. 이 실험의 mDPR은 영어 MS MARCO로 미세 조정한 다국어 모델을 사용한다. 결합 방법은 두 검색 점수를 각각 0에서 1 사이로 정규화한 뒤 같은 비중으로 합친다. 평균과 한국어에서는 결합이 좋지만, 인도네시아어에서는 BM25 단독보다 조금 낮다. 그래서 전체 평균의 개선을 모든 언어의 개선으로 옮길 수 없다.

이 표가 특정 최신 모델을 선택해 주지는 않는다. 당시 모델·Wikipedia 자료·개발 세트의 비교다. 대신 채택 판단에 필요한 집단별 결과를 평균 옆에 남겨야 한다는 근거로 읽을 수 있다. 교차 언어 검색까지 제공하려면 질문과 문서의 언어가 다른 평가를 별도로 만들어야 한다.

작은 평가가 통과하더라도 남는 질문

Akasha의 18개 질문은 아홉 방향을 빠르게 점검하는 작은 표본이다. 방향마다 두 질문뿐이고 여덟 개의 정답 사실을 번역해 재사용한다. 같은 질문을 세 번 실행한 54회 관측은 실행의 반복성을 보는 자료이며, 54개의 독립된 질문은 아니다. 전부 통과해도 지원 언어 전체를 인증한 결과로 확대할 수 없다.

후보 수 역시 점수의 의미를 바꾼다. 검색 가능한 문서가 세 개뿐인데 다섯 개까지 반환한다면, 세 문서를 전부 돌려주는 검색기도 정답 포함 검사를 통과한다. 어려운 평가를 만들겠다고 무조건 문서를 늘릴 필요는 없지만, 실제로 혼동하는 문서를 같은 검색 범위 안에 두어야 선택 능력을 볼 수 있다. 다른 조직의 문서를 유사 오답으로 넣으면 정상적인 범위 필터가 그것을 제거한 일을 순위 개선으로 착각할 수 있다.

또한 테스트 프로세스의 성공과 새 기능의 채택 기준은 각각 확인해야 한다. Akasha는 기존 52개 질문의 회귀와 범위 유출 검사를 유지하면서, 다국어 방향별 결과를 별도의 RED 또는 GREEN으로 출력한다. EVAL_REQUIRE_MULTILINGUAL=1로 실행할 때 그 엄격 기준을 테스트 실패에도 연결한다. CI가 초록이라는 사실만으로 다국어 기준까지 통과했다고 읽을 수 없다.

다음에 검색 모델을 바꾼다면 정답이 들어왔는지와 함께 어떤 질문에서 무엇이 먼저 나왔는지를 보자. 모든 정답을 1위에서 5위로 옮겼을 때 recall은 그대로지만 MRR은 1에서 0.2로 떨어진다. 그 차이가 호출자의 결과를 바꾸는 제품이라면 정답 포함률만을 채택 기준으로 삼기 어렵다.