벡터 검색만으로 일부 쿼리를 놓치는 이유
임베딩은 의미에는 강하지만 토큰의 정확한 형태에는 평범해. 'ERR_CONNECTION_REFUSED'라는 오류 코드가 그대로 들어 있는 청크를, 같은 개념을 다른 말로 설명한 청크보다 항상 위에 놓지는 못해. 제품 이름, SKU, 버전 번호, 희귀 기술 용어는 글자 자체가 중요하고, 바로 그 검색을 위해 1994년에 나온 확률적 키워드 점수기 BM25가 만들어졌어.
BM25가 실제로 계산하는 것
BM25는 쿼리의 각 단어를 문서 안의 출현 빈도, 전체 문서에서의 희귀도, 문서 길이로 평가해. 정확히 일치하는 표현을 높게 보고 불필요하게 긴 문서는 낮게 보지만 의미 자체는 이해하지 못해. 벡터 검색과 실패 방식이 정반대인 셈이야.
가장 저렴한 하이브리드 구성
- 벡터 검색에서 상위 N개 후보를 받아.
- BM25에서도 상위 N개 후보를 받아.
- ID를 합쳐 중복을 제거하고, 결합 점수나 cross-encoder로 다시 순위를 매겨.
검색기 두 개와 병합 단계 하나만 더해도 사실 확인형 쿼리에서 벡터 검색만 쓸 때보다 10–20% 나아지는 경우가 흔해.