← AI 용어집

AI 용어집 · 심화 · 전통 ML·추천·검색 · 언어 모델

BM25 키워드 검색 순위 함수

BM25는 검색어에 들어 있는 단어가 문서에 얼마나 자주, 얼마나 드물게 나오는지를 따져 문서마다 점수를 매기는 키워드 검색 순위 함수다. 오래전부터 검색 엔진의 기본 방식으로 쓰였고, 지금도 RAG의 핵심 부품으로 쓰인다.

쉽게 말하면 도서관 사서가 질문 속 단어에 형광펜을 긋고, 그 단어가 많이 나오는 책을 앞에 꺼내 주되 '그리고'처럼 어디에나 나오는 단어는 무시하고, 두꺼운 책이 단어 수만 많아서 유리해지지 않게 감안하는 것과 같다. 단, 사서와 달리 BM25는 뜻이 같은 다른 단어(동의어)는 알아보지 못한다.

어떻게 작동하나

BM25는 검색어의 단어마다 세 가지를 따져 점수를 더한다. 첫째, 그 단어가 문서에 자주 나올수록 점수가 오르지만, 너무 많이 나오면 점수 증가가 점점 둔해진다(같은 단어 반복으로 순위를 올리기 어렵게). 둘째, 전체 문서 중 그 단어가 나오는 문서가 적을수록, 즉 드문 단어일수록 가중치가 커진다. 셋째, 문서 길이를 평균과 비교해 긴 문서가 단어 수만으로 유리해지지 않도록 보정한다. 이 계산은 미리 만들어 둔 역색인(단어별로 어느 문서에 나오는지 적어 둔 목록) 덕분에 매우 빠르게 이뤄진다.

BM25 점수를 정하는 세 요소검색어 단어 → 문서 안 빈도; 검색어 단어 → 단어의 희귀함; 검색어 단어 → 문서 길이 보정; 문서 안 빈도 → 단어별 점수 합; 단어의 희귀함 → 단어별 점수 합; 문서 길이 보정 → 단어별 점수 합; 단어별 점수 합 → 문서 순위검색어 단어문서 안 빈도많을수록↑, 점점 둔해짐단어의 희귀함드문 단어일수록↑문서 길이 보정긴 문서 유리함 줄이기단어별 점수 합문서 순위
BM25 점수를 정하는 세 요소 검색어 단어마다 세 요소를 따져 점수를 내고, 단어별 점수를 더해 문서 순위를 정한다.

왜 중요한가

BM25는 별도 학습 없이 바로 쓸 수 있고, 빠르며, 왜 그 문서가 나왔는지 설명하기 쉽다. 특히 제품 코드, 사람 이름, 오류 메시지, 법 조항 번호처럼 정확한 단어가 중요한 검색에서 강하다. 의미를 기준으로 찾는 임베딩 기반 시맨틱 검색은 이런 고유한 표현을 놓치기 쉬워서, 요즘 RAG 시스템은 BM25와 시맨틱 검색을 함께 쓰는 하이브리드 검색을 많이 쓴다. 새로운 검색 방법을 평가할 때 비교 기준으로도 자주 등장한다.

BM25와 시맨틱 검색

BM25단어 일치로 찾기

  • 학습 없이 바로 사용
  • 제품 코드·이름 검색에 강함
  • 동의어·다른 표현은 놓침

시맨틱 검색의미로 찾기

  • 임베딩 모델이 필요
  • 표현이 달라도 뜻으로 찾음
  • 고유한 단어 일치엔 약할 수 있음

공통 RAG에서 질문과 관련된 문서를 먼저 찾아 오는 검색 단계

두 방식은 잘 찾는 질문이 서로 달라서 하이브리드 검색으로 함께 쓰는 경우가 많다.

알아 둘 점

BM25는 글자 그대로의 단어 일치만 보기 때문에 '자동차'로 검색하면 '차량'만 나오는 문서를 놓칠 수 있다. 한국어처럼 조사가 붙는 언어는 형태소 분석 같은 전처리 품질에 따라 결과가 크게 달라진다. 단어 빈도에 대한 민감도와 문서 길이 보정 정도를 조절하는 설정 값이 있어서 데이터에 맞게 손볼 수 있다. 첫 단계에서 BM25로 후보를 넉넉히 뽑고 리랭커로 다시 순서를 정하는 구성이 흔하다.

예시

Elasticsearch·OpenSearch 같은 검색 엔진은 BM25를 기본 점수 방식으로 쓴다. 사내 문서 챗봇을 RAG로 만들 때도 질문을 BM25 검색과 벡터 DB 검색에 동시에 보내 두 결과를 합친 뒤, 리랭커로 상위 문서를 골라 LLM에 넘기는 구성이 널리 쓰인다.

함께 보면 좋은 용어