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 支持日语)自定义训练的分词器,将原始文本转换为这些稀疏向量。

适用人群

需要在保持原生数据库体验的同时,实现专业级全文搜索和相关性排序(BM25)的 PostgreSQL 开发者和数据库管理员,且不希望承担管理独立搜索集群的复杂性。

主要亮点

  • 原生 PostgreSQL 集成:作为自定义操作符和索引实现,相比外部替代方案提供更直观的 API。
  • 灵活的分词:支持预训练模型、自定义训练模型,以及非空格分隔语言的专用预分词器。
  • 高性能:利用 Block-WeakAnd 算法加速最相关文档的检索。
  • 稀疏向量存储:使用 bm25vector 类型高效存储词汇 ID 和词频。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目