跳转到主要内容

pg_vectorsearch

使用 PRISM 索引与 RaBitQ 量化的近似向量检索

概览

扩展包名版本分类许可证语言
pg_vectorsearch0.1.0RAGPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
1990pg_vectorsearch否是否是否否-
相关扩展vector vectorscale

Alpha; PG18 packages; OpenBLAS required; no pgvector dependency; no in-place RC upgrade.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.1.01817161514pg_vectorsearch-
RPMPIGSTY0.1.01817161514pg_vectorsearch_$v-
DEBPIGSTY0.1.01817161514postgresql-$v-vectorsearch-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/AN/AN/A
el8.aarch64
PIGSTY 0.1.0
N/AN/AN/AN/A
el9.x86_64N/AN/AN/AN/A
el9.aarch64
PIGSTY 0.1.0
N/AN/AN/AN/A
el10.x86_64
PIGSTY 0.1.0
N/AN/AN/AN/A
el10.aarch64
PIGSTY 0.1.0
N/AN/AN/AN/A
d12.x86_64N/AN/AN/AN/A
d12.aarch64
PIGSTY 0.1.0
N/AN/AN/AN/A
d13.x86_64
PIGSTY 0.1.0
N/AN/AN/AN/A
d13.aarch64
PIGSTY 0.1.0
N/AN/AN/AN/A
u22.x86_64
PIGSTY 0.1.0
N/AN/AN/AN/A
u22.aarch64
PIGSTY 0.1.0
N/AN/AN/AN/A
u24.x86_64
PIGSTY 0.1.0
N/AN/AN/AN/A
u24.aarch64
PIGSTY 0.1.0
N/AN/AN/AN/A
u26.x86_64N/AN/AN/AN/A
u26.aarch64
PIGSTY 0.1.0
N/AN/AN/AN/A

构建

您可以使用 pig build 命令构建 pg_vectorsearch 扩展的 RPM / DEB 包:

pig build pkg pg_vectorsearch         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_vectorsearch 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

安装
pig install pg_vectorsearch;          # 当前活跃 PG 版本安装
pig
pig ext install -y pg_vectorsearch -v 18  # PG 18
dnf
dnf install -y pg_vectorsearch_18       # PG 18
apt
apt install -y postgresql-18-vectorsearch   # PG 18

创建扩展:

CREATE EXTENSION pg_vectorsearch;

用法

来源:

pg_vectorsearch 0.1.0 是使用 PRISM 索引进行近似最近邻检索的 alpha 扩展,支持 PostgreSQL 18 和 19、原生 vec32 / vec16 类型以及可选的 pgvector 互操作。当前面向测试,行为与维护要求仍在演进。

核心用法

CREATE EXTENSION pg_vectorsearch;
CREATE TABLE vectorsearch_items (
    id serial PRIMARY KEY,
    embedding vec32(3) STORAGE PLAIN
);
INSERT INTO vectorsearch_items (embedding)
SELECT ARRAY[i::real, (i % 7)::real, (i % 5)::real]::vec32
FROM generate_series(1, 1000) AS i;
CREATE INDEX vectorsearch_items_prism ON vectorsearch_items
USING prism (embedding vec32_l2_ops);
SET prism.nprobe = 40;
SELECT id FROM vectorsearch_items
ORDER BY embedding <-> '[3,1,2]' LIMIT 5;

运行边界

安装需要超级用户,无需预加载,扩展不可重定位。prism 访问方法提供 vec32_l2_ops、vec32_ip_ops、vec32_cosine_ops 及对应的 vec16 操作符类;<->、<#> 和 <=> 分别表示 L2、负内积和余弦距离。prism.nprobe 用于权衡召回与查询工作量;零表示自动调节,不代表精确召回。

应先装载代表性数据,再建立索引。索引维度上限为 1968,不支持表达式索引与非日志索引。应将 prism.leaf_refine_threshold 保持为零。过滤后可能不足 LIMIT 行,受 work_mem 限制的候选缓冲区也可能截断大量或无上限的结果,应与精确查询基准比较。

可用 prism_index_settings 检查配置,并按维护指南处理持续更新。prism_rebalance 仅支持关闭 centroid_fastscan 的单层 RaBitQ 质心页索引,不支持默认多层格式。DELETE 留下墓碑,退役页仅能通过 REINDEX 回收。早期候选发布版不支持原位升级。

这个页面对您有帮助吗?