高維向量相似度搜索(vector)
更新時間 2024-05-31 18:52:35
最近更新時間: 2024-05-31 18:52:35
分享文章
本小節主要介紹RDS-PostgreSQL的vector插件使用方法。
操作場景
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;