软件物料清单 (SBOM)
本页列出由 PGSTY 社区维护的三个核心 Rust 扩展——vchord、vchord_bm25 与 pg_tokenizer 的完整软件物料清单(Software Bill of Materials, SBOM)。下方所有依赖版本号与 SPDX 许可证标识符均直接提取自各仓库当前的 Cargo.toml、Cargo.lock,以及存在时的 deny.toml。
核心扩展套件概览
| 扩展名称 | 代码仓库 | 版本 | 许可证 | Rust / pgrx |
PG 支持 | 内部 Crate | 锁定包数 |
|---|---|---|---|---|---|---|---|
vchord |
pgsty/vchord |
1.2.0 |
AGPL-3.0-only |
2024 / =0.19.3 |
pg14–pg18 |
15 | 243 |
vchord_bm25 |
pgsty/vchord_bm25 |
1.0.0 |
AGPL-3.0-only |
2024 / =0.19.3 |
pg14–pg18 |
8 | 194 |
pg_tokenizer |
pgsty/pg_tokenizer |
1.0.0 |
Apache-2.0 |
2021 / =0.19.3 |
pg14–pg18 |
1 | 405 |
正式版本的测试与打包矩阵覆盖 PostgreSQL 14–18。vchord 和 vchord_bm25 的可选 pg19 特性用于开发验证;pgrx 提供绑定不代表扩展已正式支持。
1 · vchord (pgsty/vchord)
vchord 编译为 C ABI 兼容的动态链接库(cdylib),通过 shared_preload_libraries 加载至 PostgreSQL 进程空间。在 PostgreSQL 扩展层,它依赖上游基础扩展 vector(pgvector)提供标准 vector 与 halfvec 数据类型。
1.1 Workspace 内部 Crate 清单 (vchord)
| Crate 名称 | 目录路径 | 许可证 | 模块职责说明 |
|---|---|---|---|
vchord |
/ |
AGPL-3.0-only |
PostgreSQL 扩展入口(pgrx)、SQL 数据类型(rabitq8、rabitq4、sphere)、GUC 参数、优化器/索引钩子与后台工作进程 |
vchordrq |
crates/vchordrq |
AGPL-3.0-only |
磁盘友好型 RaBitQ 倒排文件索引(USING vchordrq):层次化 K-means 分区构建、扫描、预过滤、重排与磁盘页面管理 |
vchordg |
crates/vchordg |
AGPL-3.0-only |
高吞吐单层图索引(USING vchordg):图构建、波束搜索(Beam Search)、邻居剪枝、并发维护与索引预热 |
rabitq |
crates/rabitq |
AGPL-3.0-only |
1-bit、4-bit 与 8-bit RaBitQ 残差/直接量化编码、内积无偏估计器与距离下界过滤 |
k_means |
crates/k_means |
AGPL-3.0-only |
基于 rayon 的并行 K-means 聚类训练(支持数据库内构建与外部构建) |
vector |
crates/vector |
AGPL-3.0-only |
内部稠密向量、半精度(f16)与量化向量的内存表示及类型转换 |
distance |
crates/distance |
AGPL-3.0-only |
欧氏距离(<->)、负内积(<#>)、余弦距离(<=>)与多向量 MaxSim(@#)距离度量抽象 |
simd |
crates/simd |
AGPL-3.0-only |
运行时 CPU 指令集探测与多架构 SIMD 加速(x86_64 AVX2/AVX-512/VPOPCNTDQ、aarch64 NEON/SVE、s390x、powerpc64 与标量回退) |
simd_macros |
crates/simd_macros |
AGPL-3.0-only |
多架构 SIMD 目标代码生成与内联分发过程宏 |
index |
crates/index |
AGPL-3.0-only |
通用 PostgreSQL 页面/块分配器、WAL 安全缓冲区管理与 MVCC 可见性判断 |
index_accessor |
crates/index_accessor |
AGPL-3.0-only |
面向 PostgreSQL 索引页面的零拷贝元组与量化向量访问器 |
always_equal |
crates/always_equal |
AGPL-3.0-only |
优先队列载荷包装器(在距离比较时忽略载荷顺序) |
feistel |
crates/feistel |
AGPL-3.0-only |
用于伪随机抽样的确定性 Feistel 置换网络 |
small_iter |
crates/small_iter |
AGPL-3.0-only |
固定容量栈上迭代器工具 |
xtask |
crates/xtask |
AGPL-3.0-only |
构建驱动工具:读取 PG_CONFIG、编译 cdylib 并组装 build/ 安装目录 |
1.2 直接第三方依赖清单 (vchord)
| Crate 名称 | 锁定版本 | SPDX 许可证 | 作用范围 | 功能用途 | 上游仓库 |
|---|---|---|---|---|---|
pgrx |
0.19.3 |
MIT |
运行时 (cshim) |
PostgreSQL 扩展 Rust 开发框架(支持 pg14–pg19 绑定) |
pgcentralfoundation/pgrx |
pgrx-pg-sys |
0.19.3 |
MIT |
运行时 | PostgreSQL 服务端头文件与内核函数的底层 FFI 绑定 | pgcentralfoundation/pgrx |
rusqlite |
0.41.1 |
MIT |
运行时 (bundled) |
内嵌 SQLite 引擎(libsqlite3-sys 0.39.1),用于外部预计算聚类中心与索引导入 |
rusqlite/rusqlite |
mimalloc |
0.1.52 |
MIT |
运行时 (x86_64/aarch64) |
Linux 与 macOS 平台高性能内存分配器(libmimalloc-sys 0.1.49,启用 local_dynamic_tls) |
purpleprotocol/mimalloc_rust |
rayon |
1.12.0 |
MIT OR Apache-2.0 |
运行时 | 数据并行工作窃取线程池,用于并行 K-means 训练与索引构建 | rayon-rs/rayon |
crossbeam-channel |
0.5.17 |
MIT OR Apache-2.0 |
运行时 | 多生产者多消费者并发通道,用于并行索引构建协调 | crossbeam-rs/crossbeam |
zerocopy |
0.8.63 |
BSD-2-Clause OR Apache-2.0 OR MIT |
运行时 | 面向 PostgreSQL 磁盘索引页面的安全零拷贝字节转换 | google/zerocopy |
half |
2.7.1 |
MIT OR Apache-2.0 |
运行时 | IEEE 754 半精度浮点数(f16)算术支持,用于 halfvec |
VoidStarKat/half-rs |
rand |
0.10.3 |
MIT OR Apache-2.0 |
运行时 | K-means 初始中心采样与随机旋转矩阵生成 | rust-random/rand |
rand_chacha |
0.10.0 |
MIT OR Apache-2.0 |
运行时 | 确定性 ChaCha 随机数生成器,保证正交旋转矩阵可复现 | rust-random/rand |
bumpalo |
3.20.3 |
MIT OR Apache-2.0 |
运行时 | 高速 Bump Arena 内存池,用于单次扫描期间的临时内存分配 | fitzgen/bumpalo |
arrayvec |
0.7.8 |
MIT OR Apache-2.0 |
运行时 | 固定容量栈上向量容器 | bluss/arrayvec |
dary_heap |
0.3.9 |
MIT OR Apache-2.0 |
运行时 | 缓存友好的 d-叉优先队列,用于候选集遍历 | hanmertens/dary_heap |
min-max-heap |
1.3.0 |
MIT OR Apache-2.0 |
运行时 | 双端最小-最大堆,用于 vchordg 有界波束搜索 |
tov/min-max-heap-rs |
wyhash |
0.6.0 |
MIT OR Apache-2.0 |
运行时 | 高速非加密哈希算法,用于图遍历已访问顶点去重 | eldruin/wyhash-rs |
pin-project |
1.1.13 |
Apache-2.0 OR MIT |
运行时 | 面向有状态索引扫描迭代器的安全 Pin 投影宏 | taiki-e/pin-project |
serde |
1.0.229 |
MIT OR Apache-2.0 |
运行时 | 索引 options 参数结构化反序列化框架 |
serde-rs/serde |
toml |
1.1.8 |
MIT OR Apache-2.0 |
运行时 | vchordrq 与 vchordg 索引构建选项的 TOML 解析器 |
toml-rs/toml |
validator |
0.21.0 |
MIT |
运行时 | 索引配置参数的范围与合法性校验 | Keats/validator |
humansize |
2.1.3 |
MIT OR Apache-2.0 |
运行时 | 字节体积的人类可读格式化输出 | LeopoldArkham/humansize |
paste |
1.0.15 |
MIT OR Apache-2.0 |
宏 | 标识符拼接宏,用于生成多类型距离操作符绑定 | dtolnay/paste |
seq-macro |
0.3.6 |
MIT OR Apache-2.0 |
宏 | 编译期循环展开宏,用于 SIMD 内核生成 | dtolnay/seq-macro |
proc-macro2 / quote / syn |
1.0.107 / 1.0.47 / 3.0.9 |
MIT OR Apache-2.0 |
过程宏 | simd_macros 语法树解析与代码生成 |
dtolnay/syn |
clap / object / serde_json / target-tuple |
4.6.7 / 0.40.0 / 1.0.154 / 1.0.2 |
MIT OR Apache-2.0 |
构建 (xtask) |
构建命令行解析、ELF/Mach-O 符号检查与 SQL 实体图生成(pgrx-sql-entity-graph 0.19.3) |
clap-rs/clap |
2 · vchord_bm25 (pgsty/vchord_bm25)
vchord_bm25 是独立编译的 Rust/pgrx 扩展(cdylib),在 PostgreSQL 内实现原生 Okapi BM25 相关性评分与 Block-WeakAnd(WAND)倒排索引扫描。它没有强制的外部扩展运行时依赖,既可直接搭配 PostgreSQL 原生 tsvector 使用,也可配合 pg_tokenizer 使用。
2.1 Workspace 内部 Crate 清单 (vchord_bm25)
| Crate 名称 | 目录路径 | 许可证 | 模块职责说明 |
|---|---|---|---|
vchord_bm25 |
/ |
AGPL-3.0-only |
PostgreSQL 扩展入口(pgrx)、bm25 索引访问方法、原生 tsvector 支持与 bm25query 类型、<&> 操作符、GUC 参数与规划器代价估计钩子 |
bm25 |
crates/bm25 |
AGPL-3.0-only |
Block-WeakAnd(WAND)Top-K 查询执行器、差分/位打包倒排链压缩、段构建器与外部排序 I/O |
score |
crates/score |
AGPL-3.0-only |
Okapi BM25 评分核心(k1 = 1.2、b = 0.75)与文档长度量化归一化查表 |
index |
crates/index |
AGPL-3.0-only |
PostgreSQL 关系页面管理、跳转页(Jump Pages)与 MVCC 安全缓冲区锁控制 |
simd |
crates/simd |
AGPL-3.0-only |
SIMD 位打包(Bit-packing)与向量化倒排链解码(x86_64 AVX2/AVX-512、aarch64 NEON 与标量回退) |
simd_macros |
crates/simd_macros |
AGPL-3.0-only |
多架构 SIMD 分发过程宏 |
always_equal |
crates/always_equal |
AGPL-3.0-only |
Top-K 最小堆候选集比较包装器 |
xtask |
crates/xtask |
AGPL-3.0-only |
构建驱动工具:编译扩展、校验 SQL 模式一致性并生成 build/ 制品 |
2.2 直接第三方依赖清单 (vchord_bm25)
| Crate 名称 | 锁定版本 | SPDX 许可证 | 作用范围 | 功能用途 | 上游仓库 |
|---|---|---|---|---|---|
pgrx |
0.19.3 |
MIT |
运行时 | PostgreSQL 扩展 Rust 开发框架(支持 pg14–pg19 绑定) |
pgcentralfoundation/pgrx |
pgrx-pg-sys |
0.19.3 |
MIT |
运行时 | PostgreSQL 服务端头文件与内核函数的底层 FFI 绑定 | pgcentralfoundation/pgrx |
blake3 |
1.8.7 |
CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception |
运行时 | 高速哈希计算,用于词项哈希与段数据完整性校验 | BLAKE3-team/BLAKE3 |
memmap2 |
0.9.12 |
MIT OR Apache-2.0 |
运行时 | 跨平台内存映射文件 I/O,用于大规模索引构建时的外部归并排序 | RazrFalcon/memmap2-rs |
mimalloc |
0.1.52 |
MIT |
运行时 (x86_64/aarch64) |
Linux 与 macOS 平台高性能内存分配器(libmimalloc-sys 0.1.49,启用 local_dynamic_tls) |
purpleprotocol/mimalloc_rust |
zerocopy |
0.8.63 |
BSD-2-Clause OR Apache-2.0 OR MIT |
运行时 (derive, simd) |
倒排链数据块与 BM25 元数据页的零拷贝序列化 | google/zerocopy |
getrandom |
0.4.3 |
MIT OR Apache-2.0 |
运行时 | 操作系统熵源接口,用于生成临时排序文件名 | rust-random/getrandom |
rand |
0.10.3 |
MIT OR Apache-2.0 |
运行时 | 随机数生成工具 | rust-random/rand |
serde |
1.0.229 |
MIT OR Apache-2.0 |
运行时 | USING bm25 索引选项反序列化框架 |
serde-rs/serde |
toml |
1.1.8 |
MIT OR Apache-2.0 |
运行时 | 索引配置选项的 TOML 解析器 | toml-rs/toml |
validator |
0.21.0 |
MIT |
运行时 | BM25 索引选项合法性校验 | Keats/validator |
seq-macro |
0.3.6 |
MIT OR Apache-2.0 |
宏 | 编译期循环展开宏,用于位打包内核 | dtolnay/seq-macro |
proc-macro2 / quote / syn |
1.0.107 / 1.0.47 / 3.0.9 |
MIT OR Apache-2.0 |
过程宏 | simd_macros 语法树解析与代码生成 |
dtolnay/syn |
clap / object / serde_json / target-tuple |
4.6.7 / 0.40.0 / 1.0.154 / 1.0.2 |
MIT OR Apache-2.0 |
构建 (xtask) |
构建命令行解析、符号检查与 SQL 模式一致性校验(pgrx-sql-entity-graph 0.19.3) |
clap-rs/clap |
3 · pg_tokenizer (pgsty/pg_tokenizer)
pg_tokenizer 是单 Crate 结构的 Rust/pgrx 扩展(cdylib,采用 Apache-2.0 许可证),在 PostgreSQL 数据库内提供多语言文本分析流水线、预分词器、词干提取、停用词/同义词过滤整数词元 ID(Token ID)编码,以及带位置的 tsvector 输出。
3.1 直接依赖与关键原生绑定 (pg_tokenizer)
| Crate 名称 | 锁定版本 | SPDX 许可证 | 作用范围 | 功能用途 | 上游仓库 |
|---|---|---|---|---|---|
pgrx |
0.19.3 |
MIT |
运行时 | PostgreSQL 扩展 Rust 开发框架(支持 pg14–pg19 绑定) |
pgcentralfoundation/pgrx |
pgrx-pg-sys |
0.19.3 |
MIT |
运行时 | PostgreSQL 服务端头文件与内核函数的底层 FFI 绑定 | pgcentralfoundation/pgrx |
tokenizers |
0.23.2 |
Apache-2.0 |
运行时 | HuggingFace 高速分词引擎(支持 WordPiece、BPE、Unigram 模型) | huggingface/tokenizers |
tocken |
0.1.0 |
Apache-2.0 |
运行时 | 内置预训练词表分词器(bert_base_uncased、wiki_tocken、gemma2b、llmlingua2) |
kemingy/tocken |
jieba-rs |
0.11.0 |
MIT |
运行时 | 结巴中文分词引擎(支持精确/全模式/搜索引擎模式、HMM 新词发现与自定义词典) | messense/jieba-rs |
lindera |
6.2.0 |
MIT |
运行时 | 日文/中日韩形态学分析与分词框架(lindera 模型与预分词器) |
lindera/lindera |
lindera-analysis |
6.2.0 |
MIT |
运行时 | 字符过滤器、词元过滤器及内嵌 IPADIC / UniDic / ko-dic / CC-CEDICT 词典支持 | lindera/lindera |
rust-stemmers |
1.2.1 |
MIT OR BSD-3-Clause |
运行时 | Snowball 多语言词干提取算法,支持 30 种语言(Git 标签 v1.2.1,提交 61e8ea11) |
pgsty/rust-stemmers |
unicode-segmentation |
1.13.3 |
MIT OR Apache-2.0 |
运行时 | Unicode 标准附件 #29(UAX #29)词边界切分(unicode 预分词器) |
unicode-rs/unicode-segmentation |
unicode-normalization |
0.1.26 |
(MIT OR Apache-2.0) AND Unicode-3.0 |
运行时 | Unicode NFC / NFD / NFKC / NFKD 字符规范化过滤器 | unicode-rs/unicode-normalization |
regex |
1.13.1 |
MIT OR Apache-2.0 |
运行时 | 基于有限自动机的正则表达式引擎,用于正则分词与模式替换过滤 | rust-lang/regex |
dashmap |
6.2.1 |
MIT |
运行时 | 高并发分片哈希表,用于数据库会话内词表模型与分析器缓存 | xacrimon/dashmap |
serde |
1.0.229 |
MIT OR Apache-2.0 |
运行时 | TOML / JSON 流水线与词表模型配置的序列化框架 | serde-rs/serde |
serde_json |
1.0.154 |
MIT OR Apache-2.0 |
运行时 | HuggingFace 分词器模型 JSON 规范解析器 | serde-rs/json |
toml |
1.1.8 |
MIT OR Apache-2.0 |
运行时 | create_tokenizer / create_text_analyzer 配置块的 TOML 解析器 |
toml-rs/toml |
validator |
0.21.0 |
MIT |
运行时 | 分析器与模型配置结构体的声明式校验 | Keats/validator |
anyhow |
1.0.104 |
MIT OR Apache-2.0 |
运行时 | 分词流水线各阶段的上下文错误处理与传递 | dtolnay/anyhow |
onig_sys |
69.9.3 |
MIT |
传递依赖 (tokenizers) |
HuggingFace tokenizers 使用的 Oniguruma 正则表达式 C 库绑定 |
iwillspeak/rust-onig |
esaxx-rs |
0.1.10 |
Apache-2.0 |
传递依赖 (tokenizers) |
Unigram 词表训练使用的增强后缀数组 C++ 库绑定 | Narsil/esaxx-rs |
zstd-sys |
2.1.2+zstd.1.5.7 |
BSD-3-Clause |
传递依赖 (lindera) |
形态学压缩词典使用的 Zstandard C 库绑定 | gyscos/zstd-rs |
pgrx-tests |
0.19.3 |
MIT |
开发 / 测试 | cargo pgrx test 集成测试框架 |
pgcentralfoundation/pgrx |
4 · 许可证合规审计与 SBOM 导出验证
vchord 与 vchord_bm25 使用 cargo-deny(deny.toml)定义并校验依赖项许可证白名单,pg_tokenizer 的锁定依赖清单见上文第 3 节。配置的许可证白名单包括:
MITApache-2.0与Apache-2.0 WITH LLVM-exceptionBSD-2-Clause与BSD-3-ClauseISCUnicode-3.0与Unicode-DFS-2016CC0-1.0与Zlib
您可以在任意扩展源码目录下直接运行以下命令,审计完整的传递依赖树或导出机器可读的 CycloneDX / SPDX JSON 格式 SBOM 文件: