目录
- HightLight
- Mac上安装PostgreSQL
- DBever图形界面管理端
- 创建DB
 
- 使用向量检索
- vector相似度计算
- 近似近邻索引
- HNSW近似近邻索引示例
 
 
HightLight
使用PostgreSQL来存储和检索vector,在数据规模非庞大的情况下,简单高效。
可以和在线业务共用一套DB,减少其他组件的引入,降低复杂度,在业务初期可以极大的提升效率。
Mac上安装PostgreSQL
强烈建议使用Postgres.app模式安装
下载最新版(我下载的是16,已包含pgvector插件)
 https://postgresapp.com/downloads.html

图形界面安装,很简单
一定要“Initialize”
Installing Postgres.app
Download   ➜   Move to Applications folder   ➜   Double ClickIf you don't move Postgres.app to the Applications folder, some features may not work (more info)Click "Initialize" to create a new serverConfigure your $PATH to use the included command line tools (optional):sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp
DBever图形界面管理端
创建DB
创建mydb
 
使用向量检索
# 在mydb里启用pgvector插件
CREATE EXTENSION vector;# 创建一张表items,其中的embedding字段是vector类型
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));# 添加数据
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');# 相似性检索
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
vector相似度计算
| 符号 | 相似度计算 | 
|---|---|
| <-> | L2距离 | 
| <=> | cosine距离 | 
| <#> | inner product点积距离 | 
近似近邻索引
默认情况下pgvector提供的是精确近邻检索,也即全量计算找近邻,召回精准,但计算性能差。
pgvector还提供了两种近似近邻索引:
- HNSW - added in 0.5.0
- IVFFlat
HNSW近似近邻索引示例
# Add an index for each distance function you want to use.# 创建L2 distance的hnsw近似近邻索引CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);# 创建Inner product distance的hnsw近似近邻索引CREATE INDEX ON items USING hnsw (embedding vector_ip_ops);# 创建Cosine distance的hnsw近似近邻索引CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops);2000维以内都可以索引。
 Vectors with up to 2,000 dimensions can be indexed.
具体使用哪种近似近邻索引,根据具体业务来测试。