ToWow / 연구 기록

이번에는 BM25를 유지했다

여러 검색 경로를 결합하자 Recall@100은 0.5384에서 0.5750으로 올랐지만 상위 열 개의 순위 품질은 떨어졌다. 이 결과는 발견 방법을 조합하는 방식을 바꾸었다.

Discovery Front의 M1 진단을 마친 뒤, 우리는 미리 정해 둔 다섯 경로의 검색 결합안을 선택하지 않았다. BM25를 유지했고, 가능성이 있는 몇몇 검색 경로도 후보로 남겼다.

쉬운 결정은 아니었다. 다섯 경로를 결합하면 상위 백 개에서 관련 후보를 더 많이 찾았다. 평균 재현율만 보면 BM25보다 좋았다. 하지만 상위 열 개의 순위는 더 나빴고, 재현율 개선이 사례 구성에 좌우되는 정도도 방식을 바꿀 근거로 삼기에는 컸다.

원래 조합의 목적은 각 방법의 장점을 활용하는 것이었다. 키워드는 명확한 용어를 잡고, 벡터는 다른 표현을 찾으며, 모델 간 표현은 다른 좌표계를 잇는다. 이번 결과는 이들이 합류하는 지점을 다시 살펴보게 했다.

두 범위에서 서로 다른 변화가 보였다

이 실험은 공개 자료로 정리한 요청과 후보 정보, 그리고 완료된 진단용 판정을 사용했다. 전체 44개 사례 중 5개는 선택에, 39개는 평가에 썼다. 평가 사례 39개 가운데 2개에는 양성 라벨이 없어서 재현율과 nDCG 평균은 나머지 37개로 계산했다. 상위 열 개의 음성 후보 수에는 39개 전체를 썼다. 이 라벨은 자료 사이의 관련성을 판단한 것이며, 당사자의 협력 의사를 뜻하지 않는다.

우선 세 버전을 살폈다. BM25 키워드 기준선, 다섯 검색 경로의 고정 결합, 결합 뒤에 순위 단계를 하나 더 둔 버전이다.

방법 Recall@100 ↑ nDCG@10 ↑ 상위 열 개의 음성 수 ↓
BM25 0.5384 0.1551 8.769
다섯 경로 결합 0.5750 0.1283 8.974
결합 후 재순위화 0.5728 0.1327 8.795

사례별로 계산한 뒤 평균했다. Recall@100은 관련 후보 중 상위 백 개에 들어온 비율을, nDCG@10은 관련 항목이 상위 열 개에서 얼마나 앞에 놓이는지를 측정한다. 음성 수는 라벨에 따른 통계이며, 그만큼 초대를 보냈다는 뜻이 아니다. 데이터는 M1 원본 평가 보고서에서 가져왔다.

다섯 경로 결합의 재현율 점추정치는 BM25보다 약 3.67퍼센트포인트 높았다. 동시에 상위 열 개의 순위 지표는 내려갔고 음성 수는 평균적으로 늘었다. 후속 순위화는 앞쪽 품질을 일부 회복했지만, 이 평균값들에서는 BM25를 넘지 못했다.

세 열은 서로를 대신할 수 없다. 후보 생성은 후속 과정에 충분한 기회를 남겨야 하고, 앞쪽 순위는 제한된 주의를 어디에 먼저 쓸지 결정한다. 집합을 넓히는 일과 그 집합을 잘 정렬하는 일은 따로 풀어야 한다.

결합은 실제로 무엇을 했나

이번 다섯 경로는 키워드, 하이브리드 검색, 동일 모델 벡터, 공통 참조, 선형 매핑이었다. 결합에는 RRF를 썼다. 척도가 다른 원점수를 직접 더하지 않고 각 목록에서 후보가 차지한 순위에 따라 기여도를 합산한다. RRF는 기존 순위 결합 방법이며, 2009년에 관련 연구가 있었다.원 논문

서로 다른 검색기를 비교적 단순하게 합칠 수 있지만, 지금 요청에 어느 경로가 더 적합한지 저절로 알게 되지는 않는다.

설명용 예를 생각해 보자. 키워드 방법은 제약에 정확히 맞는 후보를 2위에 놓고, 다른 몇 경로는 주제는 비슷하나 핵심 조건이 없는 후보를 5위에 놓는다. 여러 경로의 지지가 후자를 앞으로 밀어 올릴 수 있다. 결합 규칙이 보는 것은 순위다. 핵심 조건의 차이는 여전히 어떤 입력이나 판단 과정에서 표현해야 한다.

이것은 가능한 실패 방식을 설명하는 예일 뿐이다. 현재 집계 보고서만으로는 어떤 유형의 사례가 이번 하락을 주로 일으켰는지 입증할 수 없다. 직접 관찰한 것은 더 많은 경로를 고정적으로 합쳐도 높은 재현율과 더 나은 앞쪽 순위를 함께 얻지는 못했다는 점이다. 경로를 더 늘리기 전에 각각이 어떤 요청에서 추가 가치를 주는지 물어야 한다.

평균적으로 더 찾았다는 사실만으로 교체할 수는 없다

점추정치는 이 사례군의 평균 변화를 알려 준다. 그 변화가 사례 구성에 얼마나 민감한지는 알려 주지 않는다.

사전에 정한 방법으로 사례 단위의 쌍체 bootstrap을 10,000번 실시했다. 다섯 경로 결합과 BM25의 Recall@100 차이는 0.0367이었고, 95% 구간은 −0.0332에서 0.1150이었다. 구간이 0을 지나므로 이번 진단은 “재현율 개선 구간의 하한이 0보다 크다”라는 선택 조건을 충족하지 못했다.

여기서 두 판단을 서두르기 쉽다. “평균이 높으니 교체하자”는 불확실성을 무시한다. “선택 조건을 못 넘었으니 모든 구성 방법이 쓸모없다”는 방법 간 차이를 버린다. 예를 들어 동일 모델 B 경로 하나의 재현율 점추정치는 이 평가 사례군에서 0.6066으로, 고정 결합보다 높았다. 추적할 만한 관찰이지만 결과를 본 뒤 바로 최종 승자로 선언할 수도 없다.

이번에는 BM25와 유망한 후보 경로를 유지하고 고정 결합을 더 큰 평가로 넘기지 않기로 했다. 연구는 9월 1일에 멈췄다. 이후 다른 배치의 점수는 생성되어 있지만 완전한 품질 결과는 없다. 본문은 기존 결과를 다시 읽은 것이며 추가 실행은 하지 않았다.

순위 단계 하나가 왜 후보까지 잃게 하나

두 번째 단계는 고정된 0.7/0.3 가중치로 결합 점수와 설명 가능한 순위 점수를 섞었다. 결합 버전에 비해 상위 열 개의 음성 수가 평균 0.1795개 줄었다. 쌍체 구간은 −0.3333에서 −0.0256으로, 이 개선은 이번 판정 기준을 통과했다.

그러나 재현율 유지 구간의 하한은 −0.02325로, 미리 정한 −0.02보다 조금 낮았다. 재현율 손실을 허용 범위 안에 묶었다고 인정할 근거는 아직 부족했다.

구조적 이유는 어렵지 않다. 두 번째 단계가 더 큰 후보 풀을 다시 채점한 다음 상위 백 개를 자르면, 집합의 구성원도 바뀔 수 있다. “재순위화”가 실제로는 두 번째 선택까지 하는 셈이다.

여기서 바로 구현할 수 있는 변경이 나온다. 생성기의 상위 백 개를 먼저 고정한 뒤 그 안에서만 순서를 조정한다. 그러면 두 번째 단계는 상위 열 개에 영향을 주면서도 생성 단계가 찾은 관련 항목을 백 개 밖으로 밀어내지 않는다. 대가도 명확하다. 첫 단계의 백 개 밖에서 놓친 항목은 구할 수 없다. 이 구조는 후속 설계에 들어갔지만 실제 순위 이득은 새 평가가 필요하다.

더 필요한 것은 경로를 선택하는 판단이다

이번 실험은 막연한 “결합 검색”을 세 문제로 나누었다. 어떤 요청에 추가 검색이 필요한가, 추가 검색이 어떤 새 구성원을 가져오는가, 이미 선택한 구성원을 어떻게 배열할 것인가.

키워드 결과가 이미 충분히 좋은 요청이라면 추가 경로는 계산과 경쟁만 늘릴 수 있다. 키워드가 다른 표현을 놓쳤을 때는 벡터 경로가 중요한 보완을 할 수 있다. 모든 요청에 같은 조합 비용을 지우려면 “방법이 많다”보다 강한 이유가 필요하다.

그래서 다음 질문을 바꾸었다. 라벨을 보기 전의 검색 동작으로 추가 계산할 만한 요청을 식별할 수 있는가. 추가 계산 뒤 정말 더 많은 관련 항목을 찾는가. 구성원을 고정한 순위화가 앞쪽 잡음을 줄이는가. 세 가지를 따로 평가해야 개선이 어디에서 왔는지 알 수 있다.

독자가 바로 점검할 수 있는 인터페이스는 이것이다. 두 번째 단계는 순서만 바꾸는가, 구성원도 바꾸는가. 이 차이를 구현과 측정에 명시하면 검색기를 하나 더 붙이는 것보다 시스템이 좋아지거나 나빠지는 이유를 잘 설명할 때가 많다.

데이터와 방법 기록

본문은 2026년 9월 1일에 저장한 M1 evaluation-v3/report.json, decision-v1/M1_DECISION.json, 조합 manifest를 사용한다. 세 방법의 매크로 평균은 간추린 사례별 데이터로 다시 계산할 수 있다. 쌍체 구간은 당시 결정 기록에서 가져왔으며 방법 설명에 자세히 적었다. 공개 자료에 대한 진단 실험으로 실제 협력 수락률을 측정하지 않았고, 운영 중인 순위도 바꾸지 않았다.

Next step

If your team is putting agents into real work and wants to talk about Flowness or enterprise AI deployment, email us your industry and the problem you want to solve. hi@towow.ai