内容提要
Timescale最近开源了pgvectorscale,这是一个PostgreSQL扩展,提供先进的向量数据索引技术,显著提升近似最近邻查询的性能。新引入的StreamingDiskANN索引支持持续检索最接近的项,避免了传统方法的准确性损失。同时,开发的统计二进制量化算法进一步提高了向量存储的准确性和性能,使PostgreSQL在向量数据处理上具备与专用数据库竞争的能力。
延伸解读
StreamingDiskANN 如何解决过滤搜索的精度问题
传统基于 HNSW 的索引(如 pgvector)在结合标签等过滤条件时,会先按 hnsw.ef_search 参数取回固定数量的候选,再应用过滤。如果候选集中匹配过滤条件的项不足,就会漏掉正确结果。StreamingDiskANN 采用流式模型,持续检索“下一个最近”的项,直到满足 LIMIT N 且通过过滤,从而避免精度损失。
统计二进制量化(SBQ)的改进思路
常见的二进制量化(BQ)简单地将向量元素与 0.0 比较来生成二进制码,但实际嵌入的每个维度均值并非 0,导致划分不合理。SBQ 通过统计学习得到每个维度的均值作为阈值,并针对低维数据(如 768 维)采用两位编码,将 z-score 分为三个区域,从而提升召回率。实验显示,在 768 维数据集上,两位编码将召回率从 96.5% 提升至 98.6%。
PostgreSQL 扩展生态的竞争力
pgvectorscale 利用 PostgreSQL 已有的缓存、WAL、恢复机制和磁盘写入系统,以较小团队实现了与专用向量数据库(如 Pinecone)相媲美的性能。使用 Rust 和 PGRX 框架开发,兼顾安全性与效率。这表明通用数据库通过扩展也能在向量搜索领域具备竞争力,而无需牺牲其丰富的功能生态。
Q&A
pgvectorscale是什么?
pgvectorscale是Timescale开源的PostgreSQL扩展,提供先进的向量数据索引技术。
pgvectorscale如何提升向量数据查询性能?
pgvectorscale通过引入StreamingDiskANN索引和统计二进制量化算法,显著提升近似最近邻查询的性能。
StreamingDiskANN索引的优势是什么?
StreamingDiskANN索引允许持续检索最接近的项,避免了传统方法的准确性损失。
统计二进制量化算法如何提高向量存储的准确性?
该算法通过调整切割平面的位置,基于每个维度的均值来提高向量的准确性。
pgvectorscale与Pinecone相比有什么优势?
pgvectorscale在功能丰富性和生态系统方面优于Pinecone,并且在某些情况下查询速度更快。
开发pgvectorscale使用了哪些技术?
开发团队使用Rust和PGRX框架来快速构建安全的数据库扩展,提升开发效率。