BM25 (BM25 (Best Matching 25))
쉽게 풀면
단어가 얼마나 자주 나오는지, 얼마나 드문 단어인지, 문서 길이가 얼마나 긴지를 함께 따져서 검색 점수를 매기는 공식이다.
왜 중요한가
BM25는 단순한 계산으로 안정적인 검색 성능을 내기 때문에 검색엔진과 데이터베이스의 기본 순위화 함수로 널리 내장되어 있고, 신경망 검색 모형의 성능을 비교하는 기준선으로도 거의 표준처럼 쓰입니다.
오늘날 상용 검색엔진과 오픈소스 검색엔진(Elasticsearch, Lucene 등) 대다수가 기본 순위화 함수로 BM25 계열을 채택하고 있다. 오랜 기간 다양한 컬렉션에서 검증된 경험적 성능 덕분에, 새로운 신경망 기반 순위화 모형과 비교하는 표준 기준선으로도 자주 쓰인다.
계산과 범위
BM25는 질의 Q에 들어 있는 각 단어 q가 문서 D에서 얼마나 중요한지를 계산해 모두 더한 점수입니다. 널리 쓰이는 형태는 다음과 같습니다.
score(D, Q) = Σ IDF(q) · f(q, D)·(k1 + 1) / ( f(q, D) + k1·(1 − b + b·|D| / avgdl) )
- f(q, D): 문서 D 안에서 단어 q가 나온 횟수, |D|: 문서 길이(단어 수), avgdl: 컬렉션의 평균 문서 길이입니다.
- IDF(q): 드문 단어일수록 큰 값입니다. 문서 수를 N, q가 들어 있는 문서 수를 n이라 할 때 Lucene 계열 구현은 ln(1 + (N − n + 0.5) / (n + 0.5))를 씁니다. 구현마다 IDF 식이 조금씩 달라서 같은 BM25라도 점수의 절대값은 일치하지 않을 수 있습니다.
- k1은 단어 빈도가 점수에 미치는 영향이 얼마나 빨리 한계에 닿는지(포화), b(0~1)는 긴 문서에 불이익을 주는 정도입니다. Lucene과 Elasticsearch의 기본값은 k1 = 1.2, b = 0.75입니다.
작은 예(가상의 컬렉션, 코드로 계산). 문서가 N = 1,000개이고 평균 길이 avgdl = 120단어, k1 = 1.2, b = 0.75라고 합시다. 단어가 10개 문서에만 나오면 IDF ≈ 4.56, 500개 문서에 나오면 IDF ≈ 0.69입니다. 길이가 평균과 같은 문서에서 단어 빈도에 따른 빈도 항 f·(k1+1)/(f + k1)은 아래처럼 한계(k1 + 1 = 2.2)에 가까워집니다.
| 단어 빈도 f | 1 | 2 | 3 | 5 | 10 | 50 |
|---|---|---|---|---|---|---|
| 빈도 항 | 1.00 | 1.38 | 1.57 | 1.77 | 1.96 | 2.15 |
같은 빈도 f = 3이라도 문서 길이가 60단어면 1.76, 120단어면 1.57, 240단어면 1.29로 줄어듭니다(b = 0.75). 위의 희귀 단어(IDF ≈ 4.56)가 f = 3, 길이 100단어인 문서에 나오면 그 단어가 더하는 점수는 약 7.43입니다.
해석 기준
BM25 점수는 한 질의 안에서 문서의 순서를 매기는 값입니다. 점수가 7.4라는 사실 자체에는 의미가 없고, 같은 질의에서 다른 문서보다 높다는 점이 중요합니다. 따라서 서로 다른 질의의 점수를 비교하거나 “점수 10 이상이면 관련 문서” 같은 절대 기준을 두는 것은 적절하지 않습니다. 점수는 N, n, avgdl 같은 컬렉션 통계에 의존하므로 컬렉션이 바뀌면 같은 문서의 점수도 달라집니다.
- k1이 클수록 단어를 여러 번 반복한 문서가 더 유리해지고, 작을수록 “한 번이라도 나오면 충분하다”에 가까워집니다.
- b = 0이면 길이 보정이 사라지고(위 예에서 b = 0으로 계산하면 길이와 무관하게 1.57), b = 1이면 길이 보정이 가장 강합니다.
- k1, b의 기본값은 관례적 출발점이며, 최적값은 컬렉션과 평가 지표에 따라 다릅니다. 그래서 검증용 질의 집합으로 조정하는 연구가 많습니다.
- 어휘가 일치해야 점수가 생기므로 동의어나 의미 유사 관계는 반영하지 못합니다.
보고 방법
실험 재현을 위해 최소한 다음을 밝힙니다.
- 구현체와 버전(예: Lucene 기반 검색엔진, 파이썬 라이브러리), IDF 식의 종류
- k1과 b의 값, 그 값을 기본값으로 두었는지 조정했는지(조정했다면 조정에 쓴 자료와 범위)
- 토큰화·형태소 분석·불용어 처리·어간 추출 방식(한국어는 형태소 분석기 종류가 결과에 크게 영향)
- 평가 자료와 지표(MAP, nDCG@10 등)
기준선으로 BM25(Lucene 구현, k1 = 1.2, b = 0.75)를 사용하였다.처럼 값을 함께 적으면 다른 연구자가 같은 기준선을 다시 만들 수 있습니다.
논문에서는 이렇게 쓰입니다
실제 논문에서
이 용어를 직접 쓴 국내 논문 문장을 아직 수집하지 못했습니다. 수집되는 대로 출처와 함께 싣겠습니다.
예시 문장
아래는 용어의 쓰임을 보여 주려고 만든 예시로, 실제 논문에서 가져온 문장이 아닙니다.
BM25가 정보검색 실험에서 비교 기준(baseline)으로 흔히 채택된다는 점을 보여주는 문장이다.
실험을 통해 순위화 성능 개선을 확인한 연구이다.
조금 더 깊게 보면
BM25는 확률적 검색모형에서 도출되었지만 문서 길이 정규화 파라미터(k1, b)의 값에 따라 성능이 달라지므로 컬렉션별 조정이 필요합니다. 용어의 문서 내 빈도가 어느 수준 이상이면 점수가 포화된다는 점이 단순 TF-IDF와 구별되는 핵심입니다.
BM25는 용어빈도에 상한을 두는 포화 함수와 문서 길이를 정규화하는 항을 결합해, 지나치게 긴 문서가 단순히 용어를 많이 포함한다는 이유만으로 높은 순위를 받는 문제를 완화한다. 확률적 순위화 원리에서 출발했지만, 실제로는 경험적으로 조정 가능한 매개변수를 지닌 실용적 함수로 널리 채택되었다.
문서 길이 정규화 매개변수 b를 0으로 두면 사실상 길이 보정이 사라져 원시 용어빈도에 가까운 순위화가 된다.
주의할 점
BM25는 어휘 일치에 기반하므로 질의어와 문헌이 동일한 표현을 쓰지 않는 의미적 유사 관계는 포착하지 못한다는 한계가 있다.
매개변수(k1, b)의 값에 따라 순위 결과가 달라지므로, 특정 컬렉션에 맞는 최적값은 실험적으로 조정해야 한다는 점에 유의해야 한다.
헷갈리기 쉬운 용어
BM25는 이름이 따로 있는 모형이 아니라 순위화 함수여서, 상위 이론이나 비슷한 가중치 방식과 자주 섞어 부릅니다.
| 용어 | 무엇인가 | BM25와의 차이 |
|---|---|---|
| TF-IDF | 단어 빈도와 역문서 빈도를 곱한 가중치 | 원형은 빈도가 늘수록 점수가 계속 오릅니다. BM25는 빈도 항이 포화하고 문서 길이 보정이 식에 들어 있습니다. |
| 확률적 검색모형 | 관련 문서일 확률로 순위를 매기는 이론 틀 | BM25는 이 틀에서 나온 실용적 근사식이며, 모형 이름이 아니라 함수 이름입니다. |
| 벡터공간모형 | 문서와 질의를 벡터로 보고 코사인 유사도 등으로 비교 | BM25는 벡터 사이의 각도가 아니라 단어별 기여를 합산하는 점수입니다. |
참고 문헌
- Robertson, S., & Zaragoza, H. (2009). The probabilistic relevance framework: BM25 and beyond. Foundations and Trends in Information Retrieval, 3(4), 333–389.
- Robertson, S. E., Walker, S., Jones, S., Hancock-Beaulieu, M. M., & Gatford, M. (1994). Okapi at TREC-3. In Proceedings of the Third Text REtrieval Conference (TREC-3). National Institute of Standards and Technology.
- Spärck Jones, K., Walker, S., & Robertson, S. E. (2000). A probabilistic model of information retrieval: Development and comparative experiments. Part 1. Information Processing & Management, 36(6), 779–808.
- Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press.
표의 기준값은 위 문헌에 근거한 관례이며, 분야·학술지마다 다른 기준을 쓸 수 있습니다.