githubEdit

Clip 2: BM25 이해하기

Clip 2: BM25 이해하기

학습 목표

  • BM25 알고리즘의 핵심 개념과 동작 원리 이해

  • Full-text Search와 BM25의 차이점 파악

  • ParadeDB의 pg_search를 활용한 BM25 구현 방법 학습


1. BM25란 무엇인가?

**BM25(Best Matching 25)**는 정보 검색(Information Retrieval)에서 가장 널리 사용되는 랭킹 함수입니다. 문서와 쿼리 간의 관련성을 수치화하여, 검색 결과의 우선순위를 결정합니다.

핵심 특징

spinner

BM25는 다음 세 가지 요소를 고려합니다:

  1. TF (Term Frequency): 검색어가 문서에 얼마나 자주 등장하는가?

  2. IDF (Inverse Document Frequency): 검색어가 전체 문서 집합에서 얼마나 희귀한가?

  3. 문서 길이 정규화: 긴 문서가 자동으로 높은 점수를 받지 않도록 조정


2. Full-text Search vs BM25

기본적인 전문 검색은 단순 매칭에 중점을 둡니다:

  • 검색어가 문서에 포함되어 있는가? (Boolean 검색)

  • 몇 번 등장하는가? (단순 빈도)

BM25의 차별점

특성
Full-text Search
BM25

랭킹 방식

단순 빈도 기반

확률론적 모델

문서 길이 고려

X

O (정규화 적용)

희귀 단어 가중치

동일

높게 평가 (IDF)

포화 효과

X

O (빈도 증가의 한계 효과 감소)


ParadeDB는 PostgreSQL에 고성능 검색 기능을 추가하는 확장입니다. Elasticsearch와 같은 검색 엔진의 성능을 PostgreSQL 내에서 구현합니다.

spinner

주요 특징

  1. 네이티브 BM25 지원: 별도 서버 없이 PostgreSQL 내에서 BM25 랭킹

  2. 하이브리드 쿼리: SQL과 검색 쿼리를 하나의 쿼리로 결합

  3. [장점] 실시간 인덱싱: 데이터 변경 시 자동으로 검색 인덱스 업데이트

기본 사용 예시


4. RAG에서 BM25의 역할

Hybrid Search RAG 시스템에서 BM25는 키워드 기반 검색을 담당합니다:


핵심 요점 정리

주요 개념

  1. BM25는 단순 빈도를 넘어선 확률론적 랭킹: IDF로 희귀 단어에 가중치를 부여하고, 문서 길이를 정규화하여 공정한 비교를 가능하게 합니다.

  2. ParadeDB는 PostgreSQL을 검색 엔진으로: 별도의 Elasticsearch 없이도 PostgreSQL 내에서 고성능 BM25 검색을 구현할 수 있습니다.

  3. Hybrid Search의 핵심 구성 요소: BM25(키워드 정확도) + 벡터 검색(의미적 유사도)를 결합하면 각각의 약점을 보완하여 더 강력한 검색 시스템을 만들 수 있습니다.


출처

ParadeDB Documentationarrow-up-right


강사 정보

  • 작성자: 정구봉

  • LinkedIn: https://www.linkedin.com/in/gb-jeong/

  • 이메일: bong@dio.so

강의 자료

  • 강의 자료: https://goobong.gitbook.io/fastcampus

  • Github: https://github.com/Koomook/fastcampus-ai-agent-vibecoding

  • FastCampus 강의 주소: https://fastcampus.co.kr/biz_online_vibeagent

Last updated