supervc-stack/VectorChord-bm25

Native BM25 Ranking Index in PostgreSQL

해결하는 문제

VectorChord-BM25는 PostgreSQL용 네이티브 BM25 랭킹 알고리즘을 제공하여, 표준 PostgreSQL 풀텍스트 검색(tsvector 및 GIN 인덱스 사용)이 현대적인 관련성 점수를 제공하지 못하는 공백을 메웁니다. 사용자는 Elasticsearch와 같은 외부 엔진으로 검색 작업을 위임할 필요 없이 데이터베이스 내에서 효율적이고 고품질의 풀텍스트 검색과 랭킹을 직접 수행할 수 있습니다.

작동 방식

이 프로젝트는 BM25 랭킹을 위한 Block-WeakAnd 알고리즘을 PostgreSQL 확장으로 구현합니다. 전용 bm25vector 데이터 유형(토큰 ID와 빈도를 저장하는 희소 벡터)과 해당하는 bm25 인덱스를 도입하여 검색 및 랭킹 프로세스를 가속화합니다. pg_tokenizer.rs와 함께 작동하여, 사전 학습된 모델(BERT 등) 또는 특정 도메인 또는 언어용으로 커스텀 학습된 토크나이저(중국어는 Jieba, 일본어는 Lindera 지원)를 사용해 원시 텍스트를 이러한 희소 벡터로 변환합니다.

대상 사용자

PostgreSQL을 사용하면서 프로페셔널 수준의 풀텍스트 검색과 관련성 랭킹(BM25)이 필요하지만, 별도의 검색 클러스터를 관리하는 복잡성을 피하고 싶은 개발자 및 데이터베이스 관리자.

주요 특징

  • 네이티브 PostgreSQL 통합: 외부 대체품보다 직관적인 API를 제공하는 사용자 정의 연산자 및 인덱스로 구현됨.
  • 유연한 토크나이징: 사전 학습된 모델, 커스텀 학습된 모델, 그리고 공백으로 구분되지 않는 언어용 전용 프리토크나이저를 지원.
  • 고성능: 가장 관련성 높은 문서를 빠르게 검색하기 위해 Block-WeakAnd 알고리즘을 활용.
  • 희소 벡터 저장: bm25vector 유형을 사용해 어휘 ID와 용어 빈도를 효율적으로 저장.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트