操作场景
RDS-PostgreSQL支持 vector
插件,提供了一个新的数据类型,能够存储向量类型数据,并实现向量相似度匹配,为AI产品提供底层数据支持。
前提条件
- 请确保您的实例内核大版本满足,本插件所支持的内核版本,请参考支持的版本插件列表。
插件使用
- 安装插件
CREATE EXTENSION IF NOT EXISTS vector;
- 卸载插件
DROP EXTENSION IF EXISTS vector;
使用示例
数据存储&查询
- 创建具有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;