VectorChord:高效向量搜索的 PostgreSQL 扩展
项目介绍
VectorChord 是一个为 PostgreSQL 设计的向量相似度搜索扩展,具有高可扩展性、高性能和磁盘效率。该项目允许用户在 AWS i4i.xlarge 实例上轻松托管超过250GB的768维向量(100百万个),每月仅需250美元。VectorChord 通过优化的数据结构和算法,在保证搜索质量的同时,显著降低了基础设施成本。
项目技术分析
VectorChord 采用了多种先进技术来提升向量搜索的性能和效率:
- RaBitQ 压缩:利用 RaBitQ[^3] 压缩算法,VectorChord 能够在保持搜索质量的同时,高效存储向量。
- IVF 索引:VectorChord 使用 IVF(Inverted File)索引,该索引将向量分为多个列表,搜索时仅查询与查询向量最近的列表,从而加速搜索过程。
- 长向量支持:VectorChord 能够存储和搜索高达60,000维的向量,满足高维模型的需求。
[^3]: Gao, Jianyang, and Cheng Long. "RaBitQ: Quantizing High-Dimensional Vectors with a Theoretical Error Bound for Approximate Nearest Neighbor Search." Proceedings of the ACM on Management of Data 2.3 (2024): 1-27.
项目及技术应用场景
VectorChord 适用于需要高效向量搜索的场景,如:
- 文本搜索:在处理大规模文本数据时,VectorChord 可以快速检索相似的文本向量。
- 推荐系统:通过向量搜索,推荐系统能够找到与用户兴趣最匹配的项。
- 图像识别:在大规模图像数据集中,VectorChord 可以用于快速查找相似的图像特征向量。
项目特点
VectorChord 在以下方面具有显著特点:
- 性能提升:与 pgvector 相比,VectorChord 提供了高达5倍的查询速度和16倍更高的插入吞吐量。
- 成本效益:在相同的成本下,VectorChord 可以存储比 Pinecone 多6倍的向量,比 pgvector/pgvecto.rs 多26倍。
- 无缝集成:完全兼容 pgvector 数据类型和语法,无需手动参数调整即可提升性能。
- 快速索引构建:利用外部 IVF 索引构建,结合 RaBitQ 压缩,VectorChord 能够实现快速的索引构建。
下面是关于 VectorChord 的详细探讨:
性能对比
根据 MyScale Benchmark^1 的测试结果,VectorChord 在768维向量上的查询速度和索引构建时间均优于 pgvector 的 HNSW 实现。
存储和索引
VectorChord 使用与 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);
创建索引时,用户可以根据需要选择不同的距离度量方法和索引参数:
CREATE INDEX ON items USING vchordrq (embedding vector_l2_ops) WITH (options = $$
residual_quantization = true
[build.internal]
lists = [1000]
spherical_centroids = false
$$);
使用场景
VectorChord 的设计使其适用于多种场景,包括但不限于:
- 大规模向量数据库:在大规模向量数据集中快速搜索相似向量。
- 云服务:利用云服务的高性能计算资源,实现快速的向量搜索。
- 机器学习模型:在机器学习模型训练和推理过程中,快速检索相关向量。
结论
VectorChord 是一个功能强大、性能卓越的 PostgreSQL 扩展,适用于各种需要向量搜索的应用场景。其高效的索引构建和查询性能,以及对长向量的支持,使其成为处理大规模高维数据的理想选择。对于追求性能和成本效益的用户来说,VectorChord 是一个值得尝试的开源项目。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0216
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0138
uni-appA cross-platform framework using Vue.jsJavaScript08
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
SwanLab⚡️SwanLab - an open-source, modern-design AI training tracking and visualization tool. Supports Cloud / Self-hosted use. Integrated with PyTorch / Transformers / LLaMA Factory / veRL/ Swift / Ultralytics / MMEngine / Keras etc.Python00
tiny-universe《大模型白盒子构建指南》:一个全手搓的Tiny-UniverseJupyter Notebook03