pgvector 示例
pgvector 示例
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE items (id bigserial PRIMARY KEY, name text, embedding vector(768));
-- HNSW 索引:适合在线查询
CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops);
-- 余弦距离近邻查询
SELECT id, name FROM items
ORDER BY embedding <=> '[0.10, 0.22, 0.31]'
LIMIT 10;方案对照
| 方案 | 优势 | 注意点 |
|---|---|---|
| pgvector | 复用 Postgres 事务与 SQL,可组合过滤 | 数据量大时需要调 HNSW 参数与内存 |
| ES dense_vector | 向量与全文混合排序、过滤丰富 | 向量字段内存开销高,维度和索引类型要先规划 |
| MongoDB Atlas Vector Search | 与文档数据同库,减少同步链路 | 自建部署需核对版本与组件支持 |
| 专用向量库(Milvus 等) | 面向大规模向量调优,索引种类多 | 多一套组件与数据同步链路 |
做 RAG/图搜这类场景时,向量只是召回一环:过滤条件(权限、时间)、重排与召回率评测同样要设计,先用小规模数据集验证效果再扩容量。