维度网讯,谷歌在预览版中为 AlloyDB 推出列式引擎加速的 HNSW 功能,宣称可将向量搜索吞吐量提升至多四倍。

AlloyDB 是谷歌托管的兼容 PostgreSQL 的数据库服务。该新选项面向 pgvector 用户——一个用于存储、索引和查询人工智能应用向量嵌入的 PostgreSQL 扩展,尤其适用于使用 HNSW(Hierarchical Navigable Small World,分层可导航小世界图)在超大数据集上运行近似最近邻搜索的团队。
新选项利用 AlloyDB 的列式引擎——一种将频繁查询数据以列式格式存储的内存缓存——将 HNSW 索引保留在内存中,从而避免标准 PostgreSQL 缓冲区管理的一些开销。谷歌表示,这提高了吞吐量和召回率(衡量搜索结果相关匹配数量的指标)。在包含超过 100 万条记录的 GloVe 100 Angular 数据集上进行的基准测试中,当搜索限制为 100 且目标召回率为 0.95 时,每秒查询数提升了约 4.2 倍至 4.9 倍。在相同的吞吐量水平下,召回率也有所提升:在每秒约 350 次查询时,启用列式引擎设置后,召回率从约 0.78 提升至超过 0.94,提高了 0.163。
工作原理方面,标准的 PostgreSQL 依赖共享缓冲区缓存进行索引操作,即使数据已在内存中也是如此。该过程仍涉及页面固定和取消固定、锁处理、缓冲区表查找以及最近最少使用管理,这可能会在图遍历期间增加延迟并降低效率。AlloyDB 改变了这一路径,将 pgvector HNSW 索引直接固定到列式引擎的内存空间,并采用一种专为 HNSW 所需的重指针遍历模式设计的内存布局,绕过了常见的缓冲区管理器瓶颈。谷歌表示,这一改进并非仅仅来自将数据从磁盘移至 RAM;基线比较已假设标准 PostgreSQL 索引完全缓存在共享缓冲区中,这意味着报告的性能提升来自不同的内存架构,而非基本的缓存。
此次发布反映了数据库供应商日益增长的压力,即支持检索增强生成和其他依赖向量搜索的人工智能工作负载。在这些系统中,运营者通常需要在搜索数百万或数十亿向量时平衡速度与准确性,尤其是在生产流量下。对于 PostgreSQL 用户而言,pgvector 已成为该领域最广泛使用的工具之一,因为它允许向量函数在现有的关系型数据库栈中运行。HNSW 是 pgvector 中一种流行的索引方法,因为它提供近似搜索,延迟低于精确的 k 最近邻方法,尽管运营者通常会在召回率上做出一些权衡。
谷歌将 AlloyDB 定位为一个能够在同一系统中处理关系事务、分析和向量搜索的数据库。除 HNSW 外,该服务还支持 ScaNN(另一种向量索引选项),而标准的 k 最近邻搜索仍可供需要完全召回率的用户使用。
运营权衡方面,列式引擎使用内存,这对于管理成本和实例大小的数据库运营者来说仍然是一个实际考虑因素。谷歌表示,由于该引擎以压缩列式格式存储向量数据,因此内存占用有限。谷歌认为,这种权衡可以通过使用更少的计算资源来实现给定水平的向量搜索性能,从而减少基础设施需求。该功能不需要更改应用程序代码,因为用户可以继续使用标准的 pgvector SQL 语法。要使用该功能,AlloyDB 用户必须在其实例上启用列式引擎和索引缓存标志,通过 pgvector 创建 HNSW 索引后,通过 SQL 命令将该索引添加到列式引擎缓存中。
此次发布为谷歌提供了另一种区分 AlloyDB 的方式,在日益增长的适应人工智能工作负载的数据库市场中,云提供商和专业数据库团队正在吞吐量、延迟和搜索质量上展开竞争。谷歌引用的基准测试是在配备 16 个虚拟 CPU 的 AlloyDB C4A 机器上运行的。










