使用pgvector插件
更新时间 2026-06-05 13:49:32
最近更新时间: 2026-06-05 13:49:32
本节介绍了使用pgvector插件的相关内容。
简介
RDS for PostgreSQL支持pgvector插件,提供支持vector数据类型和向量相似性搜索。该插件提供以下支持:
精确的和近似的最近邻搜索
L2距离,内积和余弦距离
Postgres客户端的任何语言
更多信息,请参见pgvector官方文档。
支持的版本
PostgreSQL 12及以上版本的最新小版本支持该插件。可通过以下SQL语句查询当前实例是否支持该插件:
SELECT * FROM pg_available_extension_versions WHERE name = 'vector';如果不支持,可通过升级内核小版本或者使用转储与还原升级大版本使用该插件。
RDS for PostgreSQL实例支持的插件,具体请参见支持的插件列表。
插件安装/卸载
安装插件
SELECT control_extension ('create', 'vector');删除插件
SELECT control_extension ('drop', 'vector');更多信息,请参见通过界面安装和卸载插件和通过SQL命令安装和卸载插件。
基本使用
创建具有3维的向量列
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));插入向量
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');通过L2距离得到最近邻
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]';通过余弦距离得到最近邻
SELECT * FROM items ORDER BY embedding <=> '[3,1,2]';通过内积得到最近邻
<#>返回的是负内积,因为Postgres只支持运算符上的ASC顺序索引扫描
SELECT * FROM items ORDER BY embedding <#> '[3,1,2]';进阶使用
计算距离
SELECT embedding <-> '[3,1,2]' AS distance FROM items;
SELECT (embedding <#> '[3,1,2]') * -1 AS inner_product FROM items;
SELECT 1 - (embedding <=> '[3,1,2]') AS cosine_similarity FROM items;聚合函数
SELECT AVG(embedding) FROM items;精确搜索是有完美召回率的
可以添加索引使用近似最近邻搜索,牺牲一些召回率来换取性能
CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 1);
INSERT INTO items (embedding) VALUES ('[1,2,4]');
SELECT * FROM items ORDER BY embedding <-> '[3,3,3]';