pgvector

pgvector

PostgreSQL 的开源向量相似度检索扩展

核心功能

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 向量不会被索引,查询时需自行过滤空值。