GN⁺: BM25 전체 텍스트 검색 알고리즘 이해
(emschwartz.me)-
BM25 알고리듬 이해하기
- BM25는 Lucene/Elasticsearch와 SQLite 등에서 기본적으로 사용되는 널리 사용되는 전체 텍스트 검색 알고리듬임.
- 최근에는 전체 텍스트 검색과 벡터 유사성 검색을 결합하여 "하이브리드 검색"을 구현하는 것이 일반적임.
- BM25 점수를 여러 쿼리 간에 비교할 수 있는지에 대한 질문에서 시작됨.
-
문서 순위 매기기
- 전체 텍스트 검색 알고리듬의 기본 목표는 쿼리에 가장 관련 있는 문서를 찾는 것임.
- BM25는 문서가 쿼리에 관련될 확률을 기반으로 문서를 순위 매김.
-
BM25의 구성 요소
- 쿼리 용어: 여러 용어로 구성된 쿼리의 경우, 각 용어에 대해 별도의 점수를 계산하고 합산함.
- 역문서빈도(IDF): 전체 문서 컬렉션에서 특정 검색 용어의 희귀성을 계산함.
- 문서 내 용어 빈도: 특정 문서에서 검색 용어가 나타나는 빈도를 계산함.
- 문서 길이 정규화: 문서의 길이를 다른 문서와 비교하여 정규화함.
-
BM25의 수학적 표현
- BM25 알고리듬은 수학적으로 복잡해 보일 수 있지만, 각 구성 요소를 이해하면 쉽게 이해할 수 있음.
- 주요 수식은 각 쿼리 용어의 점수를 합산하여 계산됨.
-
BM25의 독창성
- 확률 계산 없이 확률에 기반한 순위 매기기: BM25는 확률적 관련성 프레임워크에 기반하여 문서의 순위를 매김.
- 대부분의 문서가 관련이 없다고 가정: BM25는 대부분의 문서가 쿼리와 관련이 없다고 가정하여 관련성 정보를 사용하지 않고도 유용하게 만듦.
-
결론
- BM25 점수는 동일한 컬렉션 내에서 쿼리 간에 비교할 수 있음.
- BM25는 문서의 관련성을 추정하는 것이 아니라, 쿼리에 대한 관련성 순위를 매기는 데 중점을 둠.
- 동일한 컬렉션 내에서 동일한 문서의 BM25 점수를 비교할 수 있음.
-
추가 읽을거리
- BM25의 이론과 역사에 대해 더 알고 싶다면 Elastic 엔지니어 Britta Weber의 2016년 강연과 Stephen Robertson과 Hugo Zaragoza의 "The Probabilistic Relevance Framework: BM25 and Beyond"를 추천함.