KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

BM25

연결된 노트와 함께 읽기

BM25

2026년 8월 28일

BM25

BM25는 키워드 검색에서 문서와 질의의 관련도를 계산하는 전통적인 랭킹 알고리즘이다.

임베딩(Embedding) 기반 검색이 의미 유사도를 잡는다면, BM25는 사용자가 정확히 말한 단어가 문서에 얼마나 잘 등장하는지 본다.

언제 강한가

  • 도구 ID나 문서 ID 같은 정확한 문자열: BLOCK_042, TOOL_SEARCH
  • 옵션명: xVar, depVar, maxdepth
  • 도메인 키워드: 산점도, 결측치, 랜덤포레스트
  • 짧고 명확한 질의

벡터 검색과 차이

방식잘하는 것약한 것
BM25정확 키워드 매칭동의어, 의미 추론
Vector Search의미 유사도정확한 코드/옵션명

그래서 실무 RAG에서는 둘을 섞는 Hybrid RAG Search가 자주 쓰인다.

구현 관점

실무에서는 검색 대상의 ID, 이름, 설명, 카테고리, 옵션 키 같은 짧은 텍스트 신호를 하나의 문서 문자열로 합쳐 BM25 색인을 만드는 경우가 많다.

Python

한 줄 정리

BM25는 정확히 등장한 단어를 기반으로 문서를 랭킹하는 키워드 검색 알고리즘이다.

더 깊이

  • 점수가 어떻게 만들어지나 → TF-IDF
  • 한국어 조사·어미 문제 → 한국어 토크나이징과 BM25

관련

  • Hybrid RAG Search
  • Reciprocal Rank Fusion
  • 벡터 데이터베이스
  • BGE-M3
  • TF-IDF
  • 한국어 토크나이징과 BM25
  • 구조화 검색 채널
  • 데이터베이스 MOC

Synapse Map Insight

tokens = tokenize(block_text) bm25 = BM25Okapi(corpus) scores = bm25.get_scores(query_tokens)