VectorChord: PostgreSQL 向量相似度搜索

John Doe 十二月 25, 2025

使用 VectorChord,可以在 PostgreSQL 中进行可扩展、快速且对磁盘友好的向量搜索,是 pgvecto.rs 的继任者。

image

借助 VectorChord,在一台配备 4 个 vCPU 和 32GB 内存的云服务器实例上,您可以轻松托管 1 亿个 768 维向量(250GB+ 数据量)。

说明

VectorChord 是 pgvecto.rs 的继任者,具有更出色的稳定性和性能。它是一款 PostgreSQL 扩展,专为可扩展、高性能且磁盘高效的向量相似度搜索而设计。

通过 VectorChord,仅需 1 美元即可存储 40 万个向量,大幅节省成本:在相同价格下,存储的向量数量是 Pinecone 优化存储的 6 倍,是 pgvector/pgvecto.rs 的 26 倍。

image

核心特性

相比 pgvecto.rs 和 pgvector,VectorChord 带来了显著增强:

  • ⚡ 性能提升:查询速度最高提升 5 倍,插入吞吐量提升 16 倍,索引构建速度提升 16 倍,远超 pgvector 的 HNSW 实现。
  • 💰 经济高效的向量搜索:仅需 32GB 内存即可查询 1 亿个 768 维向量,P50 延迟低至 35ms,同时保证 top10 召回率达 95%,在维持高搜索质量的同时降低基础设施成本。
  • 🔌 无缝集成:完全兼容 pgvector 的数据类型和语法,且提供开箱即用的优化默认配置,无需手动调参,直接替换 VectorChord 即可获得性能提升。
  • 🔧 加速索引构建:利用 IVF 技术在外部(如 GPU 上)构建索引,实现更快的 KMeans 聚类;结合 RaBitQ 压缩算法,在高效存储向量的同时,通过自主重排序保证搜索质量。
  • 📏 长向量支持:支持存储和搜索高达 60,000 维的向量,轻松适配 text-embedding-3-large 等高性能高维模型。
  • 🌐 弹性扩展:基于横向扩展架构,500 万/1 亿个 768 维向量的查询场景可轻松扩展至 10,000+ QPS,且 top10 召回率达 90%,成本更具竞争力。
  • 🏭 生产级验证:已部署于关键业务环境,在生产中可靠处理 30 亿+ 向量,性能稳定。

快速开始

连接数据库并使用

通过psql命令行工具连接数据库(默认用户名:postgres,默认密码:mysecretpassword):

psql -h localhost -p 5432 -U postgres

VectorChord 依赖 pgvector(包括向量表示方式),可直接使用相关功能,应用迁移零成本!

示例操作

1. 启用扩展:

CREATE EXTENSION IF NOT EXISTS vchord CASCADE;

2. 创建含向量列的表,并插入数据(类似 pgvector):

CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
INSERT INTO items (embedding) SELECT ARRAY[random(), random(), random()]::real[] FROM generate_series(1, 1000);

3. 创建vchordrq索引:

CREATE INDEX ON items USING vchordrq (embedding vector_l2_ops);

4. 执行向量搜索(使用SELECT ... ORDER BY ... LIMIT ...语法):

SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;

参考

VectorChord:https://github.com/tensorchord/VectorChord