vchord_bm25
BM25排序算法
仓库
tensorchord/VectorChord-bm25
https://github.com/tensorchord/VectorChord-bm25
源码
VectorChord-bm25-0.3.0.tar.gz
VectorChord-bm25-0.3.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
vchord_bm25 | 0.3.0 | FTS | AGPL-3.0 | Rust |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2150 | vchord_bm25 | 否 | 是 | 是 | 是 | 否 | 否 | bm25_catalog |
bm25 am conflicts with pg_textsearch and pg_search, build require clang upgrade.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.3.0 | 1817161514 | vchord_bm25 | - |
| RPM | PIGSTY | 0.3.0 | 1817161514 | vchord_bm25_$v | - |
| DEB | PIGSTY | 0.3.0 | 1817161514 | postgresql-$v-vchord-bm25 | - |
构建
您可以使用 pig build 命令构建 vchord_bm25 扩展的 RPM / DEB 包:
BASH
安装
您可以直接安装 vchord_bm25 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
预加载配置:
BASH
创建扩展:
SQL
用法
VectorChord-BM25 是一个实现 BM25 排序算法的 PostgreSQL 扩展,基于 Block-WeakAnd 算法。它设计与 pg_tokenizer 配合使用,支持自定义文本分词。
架构
该扩展由三个主要组件组成:
- 分词器:将文本转换为
bm25vector(存储词汇 ID 和词频的稀疏向量) - bm25vector:用于存储分词后文本的自定义数据类型
- bm25vector 索引:加速搜索和排序操作
快速开始
SQL
注意:VectorChord-BM25 中的 BM25 分数为负数,越负表示相关性越高。
<&> 运算符
<&> 运算符计算存储的 bm25vector 与查询 bm25vector 之间的 BM25 相关性分数。查询必须用 to_bm25query() 包装,它接受索引名称和分词后的查询:
SQL
语言支持
VectorChord-BM25 通过不同的分词器配置支持多种语言:
| 语言 | 方式 | 模型/预分词器 |
|---|---|---|
| 英语 | 预训练模型 | model = "llmlingua2" 或 model = "bert_base_uncased" |
| 中文 | 带结巴预分词器的自定义模型 | [pre_tokenizer.jieba] |
| 日语 | 带 Lindera 预分词器的自定义模型 | Lindera + IPADIC 词典 |
| 自定义 | 通过文本分析器训练的用户模型 | create_custom_model_tokenizer_and_trigger() |
中文文本搜索示例
中文文本需要带结巴预分词器的自定义模型(而非预训练模型):
SQL
自定义分词器模型
对于领域特定术语,你可以创建带停用词、词干提取和其他过滤器的文本分析器,然后使用 create_custom_model_tokenizer_and_trigger() 在语料上训练自定义模型。
与替代方案的比较
| 特性 | VectorChord-BM25 | PostgreSQL tsvector + ts_rank |
|---|---|---|
| 排序算法 | BM25 | tf-idf 变体 |
| 自定义分词器 | 支持(通过 pg_tokenizer) | 仅限内置配置 |
| 索引类型 | 专用 BM25 索引 | GIN 索引 |
| 原生 PostgreSQL | 是(扩展) | 内置 |
| 语言支持 | 通过模型可扩展 | 通过文本搜索配置 |