华为云云数据库rds使用pgvector插件_云淘科技

简介

RDS for PostgreSQL支持pgvector插件,提供支持vector数据类型和向量相似性搜索。该插件提供以下支持:

精确的和近似的最近邻搜索
L2距离,内积和余弦距离
Postgres客户端的任何语言

更多信息,请参见pgvector官方文档。

支持的版本

PostgreSQL 12、PostgreSQL 13、PostgreSQL 14最新的小版本支持该插件。可通过以下SQL语句查询当前实例是否支持该插件:

SELECT * FROM pg_available_extension_versions WHERE name = 'vector';

如果不支持,可通过升级内核小版本或者使用转储与还原升级大版本使用该插件。

RDS 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]';

父主题: 插件管理

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家