28倍性能提升:pgvectorscale如何重新定义PostgreSQL向量搜索
28倍性能提升pgvectorscale如何重新定义PostgreSQL向量搜索【免费下载链接】pgvectorscalePostgres extension for vector search (DiskANN), complements pgvector for performance and scale. Postgres OSS licensed.项目地址: https://gitcode.com/gh_mirrors/pg/pgvectorscalepgvectorscale是一款为PostgreSQL打造的革命性向量搜索扩展基于pgvector构建通过创新的StreamingDiskANN算法和统计二进制量化技术为AI应用提供高性能嵌入搜索和成本优化的存储方案。在包含5000万条Cohere嵌入向量的基准测试中PostgreSQL结合pgvector和pgvectorscale实现了28倍p95延迟降低和16倍查询吞吐量提升同时自托管在AWS EC2上的成本比Pinecone存储优化索引低75%。问题分析传统向量搜索的性能瓶颈随着AI应用的快速发展向量搜索已成为现代数据库系统的核心需求。然而传统解决方案面临三大挑战性能瓶颈大规模向量检索的延迟问题日益突出成本压力专有向量数据库的运营成本高昂集成复杂度多系统架构带来的运维负担技术要点pgvectorscale基于Microsoft的DiskANN算法研究采用Rust语言和PGRX框架开发为PostgreSQL社区提供了新的向量支持途径。解决方案pgvectorscale的核心技术创新pgvectorscale通过三大技术创新解决了传统向量搜索的痛点1. StreamingDiskANN索引架构StreamingDiskANN索引是pgvectorscale的核心创新基于Microsoft的DiskANN算法实现了亚毫秒级的向量搜索响应时间。特性传统pgvector索引pgvectorscale StreamingDiskANN算法基础IVFFlat/HNSWDiskANN改进算法内存使用较高优化存储布局构建速度中等支持并行构建查询延迟随数据量增长亚毫秒级响应2. 统计二进制量化SBQpgvectorscale引入的统计二进制量化技术改进了标准二进制量化方法在保持精度的同时显著减少了存储空间。3. 基于标签的过滤向量搜索基于Microsoft的Filtered DiskANN研究pgvectorscale支持将向量相似性搜索与标签过滤相结合提供更精确高效的查询结果。实践指南如何部署和优化pgvectorscale安装与配置从源码安装# 安装Rust curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh # 克隆仓库 git clone https://gitcode.com/gh_mirrors/pg/pgvectorscale cd pgvectorscale/pgvectorscale # 安装cargo-pgrx cargo install --locked cargo-pgrx --version $(cargo metadata --format-version 1 | jq -r .packages[] | select(.name pgrx) | .version) # 初始化环境 cargo pgrx init --pg16 pg_config # 构建安装 cargo pgrx install --release在数据库中启用-- 确保pgvector可用 SELECT * FROM pg_available_extensions WHERE name vector; -- 创建pgvectorscale扩展 CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;专家建议索引配置最佳实践基础索引创建-- 创建余弦距离索引 CREATE INDEX document_embedding_idx ON document_embedding USING diskann (embedding vector_cosine_ops); -- 创建L2距离索引 CREATE INDEX ON items USING diskann (embedding vector_l2_ops); -- 创建内积索引 CREATE INDEX ON items USING diskann (embedding vector_ip_ops);索引构建参数调优-- 提高维护工作内存以加速索引构建 SET maintenance_work_mem 2GB; -- 创建带参数的索引 CREATE INDEX document_embedding_idx ON document_embedding USING diskann (embedding) WITH( num_neighbors50, search_list_size100, max_alpha1.2 );高级功能标签过滤向量搜索创建支持标签过滤的索引CREATE TABLE documents ( id SERIAL PRIMARY KEY, embedding VECTOR(1536), labels SMALLINT[], -- 标签数组 status TEXT, created_at TIMESTAMPTZ ); -- 创建包含标签列的索引 CREATE INDEX ON documents USING diskann (embedding vector_cosine_ops, labels);执行标签过滤查询-- 查找具有特定标签的相似文档 SELECT * FROM documents WHERE labels ARRAY[1, 3] -- 标签1或3 ORDER BY embedding [0.1, 0.2, 0.3] LIMIT 10;注意事项标签值必须在PostgreSQL的smallint范围内-32768到32767使用smallint[]数组类型可自动执行边界检查内积索引与普通存储布局不兼容查询性能调优查询时间参数-- 调整重评分参数以提高精度 SET diskann.query_rescore 400; -- 事务本地设置 BEGIN; SET LOCAL diskann.query_search_list_size 10; SELECT * FROM document_embedding ORDER BY embedding $1 LIMIT 10; COMMIT;并行索引构建-- 启用并行构建优化 SET diskann.min_vectors_for_parallel_build 10000; SET diskann.force_parallel_workers 4; SET diskann.parallel_flush_interval 0.05;最佳实践生产环境部署存储布局选择memory_optimized使用SBQ压缩向量数据plain存储未压缩数据维度优化默认索引所有维度可减少维度以利用Matryoshka嵌入位深度配置小于900维时使用2位/维度大于等于900维时使用1位/维度性能对比测试在5000万条Cohere嵌入向量768维度的基准测试中指标pgvector pgvectorscalePinecone存储优化索引p95延迟28倍降低基准查询吞吐量16倍提升基准成本降低75%基准技术要点关键参数详解索引构建参数num_neighbors每节点最大邻居数影响精度和速度search_list_size构建时的搜索列表大小影响图质量max_alpha算法中的alpha参数影响图构建质量查询参数diskann.query_search_list_size图搜索考虑的额外候选数diskann.query_rescore重评分元素数量0禁用常见问题解决严格排序需求pgvectorscale的diskann索引使用松弛排序。如需严格排序可使用物化CTEWITH relaxed_results AS MATERIALIZED ( SELECT id, embedding [1,2,3] AS distance FROM items WHERE category_id 123 ORDER BY distance LIMIT 5 ) SELECT * FROM relaxed_results ORDER BY distance;空值处理规则空向量不会被索引空标签被视为空数组标签数组中的空值将被忽略平台限制目前不支持在macOS X86Intel机器上构建pgvectorscale。替代方案包括使用ARM架构的Mac在Linux上构建使用预构建的Docker容器结论向量搜索的未来pgvectorscale通过创新的StreamingDiskANN算法和优化的存储架构为PostgreSQL带来了突破性的向量搜索性能。无论是初创公司还是大型企业都可以通过pgvectorscale在现有PostgreSQL基础设施上构建高性能、成本效益优越的向量搜索应用。通过本文的实践指南您可以快速部署和优化pgvectorscale体验28倍性能提升带来的向量搜索革命。随着AI应用的不断发展pgvectorscale将继续推动PostgreSQL在向量搜索领域的技术边界为开发者提供更强大、更灵活的工具。【免费下载链接】pgvectorscalePostgres extension for vector search (DiskANN), complements pgvector for performance and scale. Postgres OSS licensed.项目地址: https://gitcode.com/gh_mirrors/pg/pgvectorscale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

日新闻

周新闻

月新闻