HeadlinesBriefing HeadlinesBriefing.com

pg_vectorsearch:PostgreSQL 快速向量搜索扩展

Hacker News •
×

pg_vectorsearch 是一款 PostgreSQL 扩展,用于高性能近似最近邻(ANN)搜索,已在 GitHub 上分享,并在 Hacker News 上引发讨论。该扩展目前处于 alpha 阶段,仅适用于测试,而非生产环境。预发布版本之间可能无法升级,因此用户应计划删除并重新创建该扩展及其索引。更新日志列出了已知问题。

该扩展的 PRISM 索引(Partitioned Routing Index for Similarity Matching,相似性匹配分区路由索引)是一种索引访问方法,在概念上与 pgvector 的 IVFFlat 相似,但其构建基于 RaBitQ 量化、分层路由和分区。它使用 C 语言实现,支持 SIMD 距离计算(AVX2、AVX512、NEON),支持动态插入、更新和删除,并可通过 prism_rebalance 对倒排列表进行重新平衡。该项目声明,PRISM 在查询和索引构建方面均显著快于 pgvector 的 IVFFlat 和 HNSW;在一个包含 1 亿个向量的数据集上,它在内存仅为四分之一的实例中,以同等召回率超过了 HNSW。

PRISM 使用分层质心树将向量划分为多个簇,并依赖 PostgreSQL 缓冲区缓存使该树保持常驻。向量经过 RaBitQ 量化后存储在倒排列表中。其误差界限可以排除不可能成为最近邻的向量,从而减少所需的全精度重排序次数。

用户可以将向量存储在原生的 vec32 或 vec16 列中,也可以直接在现有的 pgvector vector 或 halfvec 列上构建 PRISM 索引,而无需更改表或查询。两种方式使用相同的运算符和调优设置,例如用于权衡召回率与速度的 prism.nprobe。

来源: Hacker News · 由HeadlinesBriefing整理摘要