跳转到主要内容

pg_lion_vector

为 pgvector 的 vector 与 halfvec 提供带过滤的近邻索引

概览

扩展包名版本分类许可证语言
pg_lion0.3.0FEATPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
2715pg_lion否是否是否是-
2716pg_lion_citext否否否是否是-
2717pg_lion_vector否是否是否是-
相关扩展pg_lion vector

pgvector >= 0.7.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.3.01817161514pg_lionpg_lion, vector
RPMPIGSTY0.3.01817161514pg_lion_$vpgvector_$v
DEBPIGSTY0.3.01817161514postgresql-$v-pg-lionpostgresql-$v-pgvector
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
el8.aarch64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
el9.x86_64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
el9.aarch64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
el10.x86_64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
el10.aarch64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
d12.x86_64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
d12.aarch64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
d13.x86_64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
d13.aarch64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
u22.x86_64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
u22.aarch64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
u24.x86_64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
u24.aarch64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
u26.x86_64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A
u26.aarch64PIGSTY 0.3.0PIGSTY 0.3.0PIGSTY 0.3.0N/AN/A

构建

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

pig build pkg pg_lion         # 构建 RPM / DEB 包

安装

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

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

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

安装
pig install pg_lion;          # 当前活跃 PG 版本安装
pig
pig ext install -y pg_lion -v 18  # PG 18
pig ext install -y pg_lion -v 17  # PG 17
pig ext install -y pg_lion -v 16  # PG 16
dnf
dnf install -y pg_lion_18       # PG 18
dnf install -y pg_lion_17       # PG 17
dnf install -y pg_lion_16       # PG 16
apt
apt install -y postgresql-18-pg-lion   # PG 18
apt install -y postgresql-17-pg-lion   # PG 17
apt install -y postgresql-16-pg-lion   # PG 16

创建扩展:

CREATE EXTENSION pg_lion_vector CASCADE;  -- 依赖: pg_lion, vector

用法

来源:

pg_lion_vector 0.3.0 为 pgvector 的 vector 与 halfvec 值添加 lionvec 近邻索引访问方法。它使用父扩展 pg_lion 的动态库,依赖 pgvector 0.7 或更新版本。

核心流程

先创建父扩展与 vector。独立的 lion 索引可在按距离排序之前过滤候选行。

CREATE EXTENSION vector;
CREATE EXTENSION pg_lion;
CREATE EXTENSION pg_lion_vector;
CREATE TABLE lion_items (id integer, category integer, embedding vector(3));
INSERT INTO lion_items VALUES (1, 3, '[1,0,0]'), (2, 3, '[0,1,0]'), (3, 4, '[0,0,1]');
CREATE INDEX lion_embedding ON lion_items USING lionvec (embedding vector_cosine_ops);
CREATE INDEX lion_category ON lion_items USING lion (category);
ALTER FUNCTION cosine_distance(vector, vector) COST 100;
VACUUM ANALYZE lion_items;
SELECT id FROM lion_items
WHERE category = 3
ORDER BY embedding <=> '[1,0,0]'::vector
LIMIT 10;

上游建议将所选运算符类对应距离函数的开销设为 COST 100,便于规划器比较索引扫描与排序成本。pg_dump 不会保留该设置,更新 vector 时也可能将其重置。

运算符类与调优

类型L2(<->)负内积(<#>)余弦(<=>)
vectorvector_l2_ops(默认)vector_ip_opsvector_cosine_ops
halfvechalfvec_l2_ops(默认)halfvec_ip_opshalfvec_cosine_ops

partitions 控制索引构建时的聚类数量;maintenance_work_mem 必须容纳足够的样本。pg_lion.vector_margin 和 pg_lion.vector_patience 控制近似搜索。受支持的 lion 过滤条件产生较小候选集时,可以采用精确评分。pg_lion.vector_postfilter 控制 lion 索引无法回答的条件;修改前应阅读参考手册。

运行边界

需要 PostgreSQL 16 及以上版本,并由超级用户安装。只支持单个 vector 或 halfvec 列,最多 8128 维;通常采用近似搜索。存在过滤条件不意味着所有查询都会成为精确近邻搜索。频繁更新和删除可能需要定期 REINDEX。父扩展的自定义 WAL 索引仍需维持预加载,父扩展与伴随扩展文件应保持相同版本。

这个页面对您有帮助吗?

表格阅读