基于 PostgreSQL 的向量计算引擎
安装
直接 Docker pull `pgvector:
docker run -d \
--name pgvector\
-e POSTGRES_USER=postgres\
-e POSTGRES_PASSWORD="YOUR_PASSWORD"\
-e POSTGRES_DB=postgres\
-p 5432:5432\
pgvector/pgvector:0.8.0-pg17
然后便可使用 PostgreSQL 相关的方法连接与管理。
创建 Vector 字段
-- 创建表前加入此句,检查 vector 插件是否存在
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE embeddings (
id SERIAL PRIMARY KEY,
content_id TEXT NOT NULL,
content_type TEXT NOT NULL,
embedding vector(1536), -- 指定向量维度,如OpenAI嵌入模型的1536维,也可以不指定,使用可变向量维度
metadata JSONB,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 创建 IVFFlat 索引用于 L2 距离搜索
CREATE INDEX ON embeddings USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
检索
-- 使用 L2 距离搜索最相似的向量
SELECT content_id, content_type, metadata, embedding <-> '[查询向量]' AS distance
FROM embeddings
ORDER BY distance
LIMIT 10;
不同距离的表示: