核心功能
pgvector 是 PostgreSQL 的向量扩展,为关系库新增 vector 类型与多种距离运算符,支持精确检索与 HNSW、IVFFlat 近似索引,可在现有数据库上直接做向量检索。
功能亮点
向量类型
支持 vector、halfvec、sparsevec 与 bit 多种向量类型
距离运算符
提供 <->、<#>、<=>、<+>、<~>、<%> 距离计算
近似索引
HNSW 与 IVFFlat 两种索引平衡召回、速度与内存占用
同表检索
向量与业务数据同表存储,用一条 SQL 即可做相似度排序
适用场景
• 在现有 PostgreSQL 业务库中直接做文档向量检索,支撑 RAG。
• 用向量列存储商品或文章嵌入,实现语义搜索与推荐。
• 复用既有 PG 备援与运维,低成本接入 AI 相似度能力。
安装配置
bash
源码编译(支持 Postgres 13+): cd /tmp git clone --branch v0.8.6 https://github.com/pgvector/pgvector.git cd pgvector make make install # 可能需要 sudo 容器镜像: docker pull pgvector/pgvector:pg18 包管理: brew install pgvector sudo apt install postgresql-18-pgvector sudo yum install pgvector_18 启用扩展: CREATE EXTENSION vector;
使用方法
bash
创建表与向量列(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]' LIMIT 5;
建 HNSW 索引(余弦):
CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops);关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标pgvector
价格免费
开源是
上手难度入门
相关工具
优点
- 作为扩展部署,无需引入独立向量数据库,运维成本低。
- 向量与业务数据同表,可用 SQL 与事务统一查询。
- 支持 HNSW 与 IVFFlat,兼顾召回率与查询性能。
- 开源且遵循 PostgreSQL License,可自由部署。
缺点
- vector 类型的 HNSW/IVFFlat 索引最多支持 2000 维。
- IVFFlat 建索引前需先写入数据并选定训练样本数。
- HNSW 默认 ef_search 为 40,召回不足时需手动调大。
- NULL 向量不会被索引,查询时需自行过滤空值。