BM25와 벡터 검색은 도대체 무엇이 다른가

← 전체 목차 · 이전: 문서 QA는 왜 파일명만 봐서는 안 되나 · 다음: RAG 검색 전략은 어떻게 설계하는가 — 3층 구조

표면적으로는 검색 알고리즘을 묻지만, 실제 쟁점은 어휘 매칭(Lexical)과 의미 매칭(Semantic)의 바닥 차이다. 그리고 현장의 경험칙이 하나 붙는다 — 실제 프로젝트에서 많은 검색 실패는 모델 자체가 나빠서가 아니라 리콜 방식을 처음부터 잘못 골랐기 때문이다.

차원희소 검색(Sparse / BM25)조밀 검색(Dense / Embedding)
매칭 대상어휘 항목이 매칭되는가의미 공간에서의 유사도
의존 특징어휘 빈도(TF), 역문서빈도(IDF), 길이 정규화텍스트를 연속 벡터 공간에 매핑
표현 형태희소 어휘 벡터 / 역색인조밀 부동소수 벡터

희소 검색(BM25)의 강점과 약점

강점: 정확하고 설명 가능하며, 고유명사와 번호에 매우 민감하다.

적용 시나리오: 주문 번호, 법률 조항, 제품 모델명, 함수명 — 이런 곳에서는 BM25가 순수 벡터 검색보다 더 안정적인 경우가 많다.

시나리오예시 값
주문 번호AX-9901
법률 조항제23조
제품 모델명RTX-4090

약점: 동의어, 바꿔 쓴 표현, 다국어에 대한 의미 이해가 부족하다 — 사용자가 표현만 바꿔도 리콜되지 않을 수 있다.

예: 사용자가 **"휴대폰"**으로 검색 / 문서에는 **"이동전화"**라고 쓰여 있음 → 리콜 실패.

조밀 검색(Embedding)의 강점과 약점

강점: 깊은 의미의 근접성을 포착한다.

내용
사용자 질문"돈은 어떻게 돌려받나요" (구어체)
문서 내용"환불 절차" (표준 문서 표현)
가교Embedding이 두 표현을 가깝게 끌어당김

약점

약점설명
설명 가능성 약함왜 매칭되었는지 말하기 어렵다(구체적 매칭 로직 추적 곤란)
정확 매칭에 둔감특정 문자열·번호를 놓치기 쉽다
도메인 외 표류벡터 모델이 당신의 도메인 코퍼스를 커버하지 않으면 리콜 결과가 흔들린다

양자택일이 아니라 둘 다 쓰는 것이다.

단계내용
1BM25로 정확 어휘 매칭을 잡는다
2Embedding으로 의미 유사를 잡는다
3병합(Merge)
4중복 제거(Dedup)
5재정렬(Rerank)

수익: 고유명사도 정확히 찾고, 사용자의 더 자연스러운 표현 방식도 커버한다.

                 사용자 Query

        ┌────────────┴────────────┐
        ▼                         ▼
   BM25 희소 리콜             Embedding 조밀 리콜
   (어휘 통계: TF/IDF/         (텍스트 → 연속 벡터 공간
    길이 정규화)                → 의미 유사도)
   강점: 고유명사/번호         강점: 동의 표현/모호한 질문
        │                         │
        └────────────┬────────────┘

                 병합 (Merge)

                 중복 제거 (Dedup)

            Reranker 통일 정렬 (Rerank)

              Top-K를 LLM에 투입

         효과 평가: 리콜 적중률 + 답변 충실도

표준 답안

희소 검색은 어휘 통계에 기반해 정확 매칭·설명 가능한 검색·고유명사 시나리오에 적합하고, 조밀 검색은 의미 벡터에 기반해 동의 표현·모호한 질문·일반화 리콜에 적합하다. 실제 RAG 시스템에서는 혼합 리콜을 채택한 뒤 Reranker로 통일 정렬하고, 리콜 적중률과 답변 충실도로 효과를 평가한다.

BM25는 낙후된 기술이 아니고, Embedding도 만능열쇠가 아니다. 각자의 적용 경계를 설명할 수 있는 편이 "벡터 검색이 더 고급"이라고 말하는 것보다 훨씬 믿을 만하다.

핵심 통찰

  1. 검색 방식 선택이 RAG의 "첫 원인 오류"다 — "많은 검색 실패는 모델 자체가 나빠서가 아니라 리콜 방식을 처음부터 잘못 골랐기 때문"이다. RAG 효과가 나쁠 때는 먼저 리콜 경로를 의심하고 그다음에 모델과 프롬프트를 의심할 것. 리콜되지 않은 내용은 이후 어떤 고리로도 되살릴 수 없다.
  2. 희소와 조밀의 차이는 본질적으로 "글자 vs 의미"이지 "구식 vs 신식"이 아니다 — BM25가 매칭하는 것은 어휘 기호이고 Embedding이 매칭하는 것은 의미 좌표다. 기술 세대(구/신)로 이해하면 잘못된 선택을 하고, 능력 차원(정확/일반화)으로 이해해야 올바로 조합할 수 있다.
  3. 둘의 강점과 약점이 정확히 상보적이므로 혼합은 필연이지 절충이 아니다 — BM25는 고유명사·번호에 강하고 동의 표현에 약하며, Embedding은 정반대다. 상보형 능력 조합의 올바른 자세는 병렬(둘 다 돌린 뒤 융합)이지 양자택일도, 타협해서 중간을 취하는 것도 아니다.
  4. "사용자가 표현만 바꾸면 리콜되지 않는다"가 순수 BM25 시스템의 전형적인 장애 서명이다 — 이 증상을 기억해 두면 프로덕션에서 "어떤 유형의 질문은 늘 답을 못 하는데 단어를 바꾸면 된다"를 만났을 때 의미 리콜 결손으로 특정할 수 있다. 반대로 "주문 번호/모델명을 정확히 못 찾는다"는 순수 벡터 시스템의 서명이다.
  5. Embedding의 도메인 외 표류는 과소평가된 함정이다 — 범용 Embedding 모델은 수직 도메인(법률, 의료, 사내 은어)에서 벡터 분포가 신뢰할 수 없으며, 이때 BM25가 오히려 더 안정적인 백스톱이지 "낙후된 방안"이 아니다.
  6. 재정렬(Rerank)은 혼합 검색의 필수 부품이지 선택적 최적화가 아니다 — BM25 점수와 벡터 유사도는 차원이 달라 직접 비교할 수 없으므로, 병합 후 반드시 통일된 정렬기가 비교 가능한 관련성 점수를 내야 한다. 그렇지 않으면 융합 결과는 뒤죽박죽이다.
  7. 평가는 리콜 측과 생성 측 두 지표를 함께 봐야 한다 — 「리콜 적중률」은 검색이 충분히 좋은지를, 「답변 충실도」는 생성이 증거에 기반했는지를 잰다. 하나만 최적화하면 왜곡된다 — 리콜률은 높은데 답이 빗나가거나, 답은 안정적인데 커버리지가 극도로 낮거나.
  8. 채점 포인트는 "새 단어의 양"이 아니라 "경계 감각"이다 — 적용 경계를 말할 수 있다는 것(어떤 시나리오에 어느 것을 왜)은 실제 실무 경험이 있다는 뜻이고, "벡터 검색이 더 고급"만 말하는 것은 개념만 읽었다는 뜻이다. 어떤 기술 선택 문제에도 통용된다.

엔지니어링 실전 Tips

  • 먼저 코퍼스를 보고 리콜을 고를 것: 코퍼스에 번호, 모델명, 조항 번호, 함수명, SKU가 대량으로 존재한다면 BM25 채널은 필수이지 생략 대상이 아니다.
  • 먼저 query 분포를 보고 가중치를 정할 것: 사용자 query가 구어체·긴 문장 쪽이면 조밀 채널의 기여가 크고, 키워드·정확 ID 쪽이면 희소 채널의 기여가 크다.
  • 병합 전에 반드시 점수를 정규화할 것: BM25는 상한이 없는 통계 점수이고 벡터 유사도는 보통 -1, 1 또는 0, 1이므로 그냥 더하는 것은 의미가 없다. 각자 Top-K를 뽑아 Reranker에 넘기거나 점수 정규화/순위 융합을 할 것.
  • 중복 제거를 텍스트 완전 일치로만 하지 말 것: 두 경로가 같은 문서의 다른 chunk를 반환하는 경우가 흔하므로 문서 ID + chunk 구간으로 중복 제거해야 Top-K 자리 잠식을 막는다.
  • Reranker는 정밀 정렬이고 비용이 높다: 거친 리콜은 넉넉히(양쪽에서 각각 수십 건), 정밀 정렬은 병합된 후보 집합에만 점수를 매겨 수용 가능한 지연과 비용 안에서 통제할 것.
  • 수직 도메인은 Embedding 파인튜닝 또는 BM25 가중치 상향을 우선 고려할 것: 도메인 외 표류 문제는 top-k를 조정해서는 해결되지 않는다.
  • 회귀 가능한 평가셋을 구축할 것: 최소 두 종류의 query — 정확형(번호/고유명사 포함)과 의미형(구어체 바꿔 쓰기) — 을 두고 각각 두 경로의 적중 상황을 봐야 어느 채널이 발목을 잡는지 특정할 수 있다.
  • 더 파고들 방향: 점수 융합 알고리즘(RRF vs 가중 선형 융합), Reranker 선택(Cross-Encoder vs LLM-as-Reranker의 정밀도/지연/비용 삼각), 학습형 희소 검색(SPLADE, uniCOIL 등 "희소"와 "의미"를 결합한 제3의 길), 도메인 Embedding 파인튜닝, 쿼리 재작성/HyDE.