pgvectorscale
1. 概述
pgvectorscale 是 Timescale 公司推出的 PostgreSQL 扩展,旨在对流行的 pgvector 扩展进行高性能、高成本效益的补充。它专为 AI 应用中的大规模向量工作负载而设计,通过引入创新的索引算法和压缩技术,显著提升了向量相似性搜索的性能并降低了存储成本。
该扩展的核心特性包括基于微软 DiskANN 研究的新索引类型 StreamingDiskANN、改进的统计二进制量化(SBQ)压缩方法,以及支持标签过滤的向量搜索功能。在基准测试中,它在处理大规模嵌入向量时展现出卓越的性能:与专用向量数据库服务相比,可实现高达 28 倍的低延迟和 16 倍的查询吞吐量,同时节省约 75% 的成本。
pgvectorscale 完全兼容 pgvector 的数据类型和查询语法,确保了无缝的集成和迁移体验。它使用 Rust 语言和 PGRX 框架开发,非常适合需要在 PostgreSQL 内进行高效海量向量搜索的生产级应用。
2. 安装
IvorySQL的安装包里已经集成了pgvectorscale插件,如果使用安装包安装的IvorySQL,通常不需要再手动安装pgvectorscale即可使用。其它安装方式可以参考下面的源码安装步骤。
| 源码安装环境为 Ubuntu 24.04(x86_64),环境中已经安装了IvorySQL1.17及以上版本,安装路径为/usr/local/ivorysql/ivorysql-1 |
2.1. 源码安装
-
安装Rust工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
下载pgvectorscale源码
从https://github.com/timescale/pgvectorscale/releases/tag/0.8.0 下载 0.8.0的源码包 pgvectorscale-0.8.0.tar.gz
tar xvf pgvectorscale-0.8.0.tar.gz cd pgvectorscale-0.8.0/pgvectorscale
-
安装cargo-pgrx
cargo install --locked cargo-pgrx --version $(cargo metadata --format-version 1 | jq -r '.packages[] | select(.name == "pgrx") | .version') cargo pgrx init --pg14 pg_config
-
编译并安装扩展
cargo pgrx install --release
3. 创建Extension并确认pgvectorscale版本
psql 连接到数据库,执行如下命令:
ivorysql=# CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE; CREATE EXTENSION ivorysql=# SELECT * FROM pg_available_extensions WHERE name = 'vectorscale'; name | default_version | installed_version | comment ----------- +-----------------+-------------------+-------------------------------------------- vectorscale | 0.8.0 | 0.8.0 | diskann access method for vector search. (1 row)
4. 使用
关于pgvectorscale的使用,请参阅 pgvectorscale官方文档