华为云云数据库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)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家