vchord_bm25 与 pg_tokenizer
vchord_bm25 与 pg_tokenizer)。vchord_bm25(由 Pigsty 在 pgsty/vchord_bm25 维护)是一个使用 Rust(pgrx)构建的原生 PostgreSQL 扩展,在 PostgreSQL 内部实现了 Okapi BM25 相关性排序算法以及 Block-WeakAnd(Block-Max WAND) Top-K 索引扫描访问方法。
配合 pg_tokenizer(由 Pigsty 在 pgsty/pg_tokenizer 维护,提供可定制的多语言分词与词表模型)或 PostgreSQL 内置的 tsvector 分析器,vchord_bm25 将 Elasticsearch/Lucene 级别的词法全文检索排序能力直接带入关系型数据库,并能与 vchord 无缝结合,实现语义 + 词法混合检索。
了解为什么需要 BM25,安装 vchord_bm25 与 pg_tokenizer,并运行你的第一条全文排序查询。
构建 bm25 索引、执行 Top-K 查询、使用 WHERE 预过滤,并将 BM25 与 VectorChord 稠密向量检索融合。
配置文本分析器、词干提取器、停用词、同义词、HuggingFace 模型、中文结巴(Jieba)与日文 Lindera 分词。
完整的 SQL 类型、操作符、函数、GUC 参数、版本演进历史以及 BEIR 基准测试结果。
核心特性
- 纯正的 Okapi BM25 评分:完整支持逆文档频率(IDF)、词频饱和度控制()以及单字节量化的文档长度归一化( 与平均文档长度 ),从根本上解决了 PostgreSQL 原生
ts_rank的相关性排序局限。 - Block-WeakAnd 索引加速:使用差分位打包(Delta-Bitpacking)存储压缩倒排链表,并在每个块中记录最大得分上界,在 Top-K 查询期间直接跳过缺乏竞争力的文档块,无需扫描整条倒排链。
- 多语言分词支持:在
v0.1–v0.3中可配合pg_tokenizer(支持llmlingua2、bert_base_uncased、wiki_tocken、gemma2b、自定义语料训练模型、中文jieba、日文lindera)使用;在新一代main架构中更可直接支持 PostgreSQL 原生tsvector。 - 与 VectorChord 原生混合检索:在单条 SQL 查询中同时运行词法 BM25 检索(
vchord_bm25)与稠密向量检索(vchordrq),支持倒数排序融合(RRF)或 ColBERT MaxSim 重排序。
vchord_bm25 与 pg_tokenizer 的架构概览、安装方式与快速入门指南。
索引管理、Top-K 查询、预过滤、与 vchord 的混合检索以及 Block-WeakAnd 内部原理。
pg_tokenizer 完整指南:文本分析器、字符/词元过滤器、预训练与自定义词表模型,以及多语言分词。
vchord_bm25 与 pg_tokenizer 的完整 SQL 参考手册、GUC 参数、性能基准测试与版本演进历史。