加速 HNSW 索引和搜索:使用 pgvector 在 Amazon Aurora 上实现
关键要点
理解 pgvector 在生成 AI 应用中的优化配置至关重要。pgvector 051 相比 050 版本,向量摄取速度提升了高达 225。在处理高维1536 维向量时,Graviton3 实例比 Graviton2 快 60。HNSW 索引配合 pgvector 提升了大量数据的检索和索引性能。想要在Amazon Aurora的 PostgreSQL 兼容版本和 Amazon RDS for PostgreSQL 中优化生成 AI 应用的配置时,了解 pgvector 的使用策略是十分重要的。这包括选择数据库实例系列、数据摄取的方法,以及使用的 pgvector 版本等多方面。
我们对 pgvector 051 与前一个版本050在 Amazon Aurora PostgreSQL 兼容版和 Amazon RDS for PostgreSQL 的 Graviton2 和 Graviton3 实例上的性能进行了系列测试。此次测试采用 pgvector 的 HNSW Hierarchical Navigable Small World索引方法。结果观察到,pgvector 051 的摄取速率比 pgvector 050 快了高达 225,对于高维1536 维向量以及更高并发64 客户端情况下,Graviton3 实例的性能在速度上超越了 Graviton2 约 60。
在本文中,我们将探讨几种策略,以帮助在使用 pgvector 的 HNSW 索引时最大化性能。
背景知识:在检索增强生成RAG中的 pgvector 使用
生成 AI 应用可以利用称为 检索增强生成RAG 的技术,为 基础模型 提供额外上下文,从而向用户提供特定领域的结果。RAG 的关键组成部分为 向量数据库,它提供高效的信息存储和检索机制,有助于基础模型输出更丰富的答案。

准备向量数据存储时,需先通过嵌入模型如 Amazon Titan将原始数据如文本文档进行转换,生成一组对应的向量,提供数据的数学表示。然后,在生成 AI 应用中,用户可以进行提问,程序会进行向量相似度搜索,找到最佳结果来增强基础模型。
在 RAG 的摄取与检索工作流程中,原始数据可以从数据湖A批量处理成令牌的向量B,并存储于向量数据库C。用户在交易互动中提问1,提问将转化为令牌的向量2,并提交给向量数据库进行相似度搜索3。数据库查询的结果将与已标记的用户提问组合4,生成一个更丰富的提示。
飞鱼梯子pgvector 是一款开源扩展,适用于 Amazon Aurora PostgreSQL 兼容版 和 Amazon RDS for PostgreSQL,为向量数据库提供了向量数据类型、距离操作和多种索引方式的功能。成功利用 pgvector 的一个重要方面是选择和配置合适的索引方法。
理解近似最近邻索引
查找相似向量,通常称为最近邻或 KNN 查询,可能是一个耗时的过程。这是因为查询必须比较数据集中每一个向量的距离,以找到最佳候选项。虽然遍历所有向量能提供最佳质量的结果,但生成 AI 应用可能会选择在速度上换取结果质量。
近似最近邻ANN算法能够通过在数据集中搜索部分向量来加速这些查询,尽管这可能影响结果质量。衡量结果质量的指标是召回率,它表示给定查询中期望结果的百分比。ANN 算法提供了调整参数,可以让您选择适合您应用的性能/召回率权衡。
pgvector 扩展提供了两种 ANN 索引方法:IVFFLAT 和从 050 起的 HNSW。HNSW 是一种基于图的索引方法,可以将相似向量分组到日益密集的层级中,从而对更小的向量集进行高效和高质量的搜索。Amazon Aurora 和 Amazon RDS 都支持与 pgvector 一起的 HNSW 索引。
数据摄取及 HNSW 在 Amazon RDS for PostgreSQL 上的应用
设置 RDS for PostgreSQL 数据库以进行 RAG 工作流的第一步是准备存储向量。在这一部分中,我们展示了不同客户端并发插入如何加速 pgvector 中 HNSW 索引的构建。目前,pgvector 051 不支持 HNSW 的并行索引构建,但并发插入提供了一种加速索引构建的方式。HNSW 是一种迭代算法,意味着您可以在一段时间内不断向 HNSW 索引添加向量,从而使并发插入成为可能。
为了运行这个例子,您首先需要确保 pgvector 已安装到您的 PostgreSQL 数据库中。可以运行以下命令安装 pgvector:
sqlCREATE EXTENSION IF NOT EXISTS vector
您将看到以下输出:
sqlCREATE EXTENSION
结论
在这篇文章中,我们回顾了加速在 Amazon Aurora PostgreSQL 兼容版和 Amazon RDS for PostgreSQL 上利用 HNSW 索引功能的各种方法。我们还观察了 pgvector 051 的性能提升如何加速并发摄取,以及新实例类别怎样加速查询。
了解如何优化 HNSW 向量索引的使用,可显著影响您的摄取和查询性能。这些策略能帮助您优化数据库配置并设计更高效的应用程序,以充分利用索引功能。您可以运用本文中的技巧,开始在 Amazon Aurora PostgreSQL 兼容版和 Amazon RDS for PostgreSQL 中构建生成 AI 应用!
欢迎在评论中留下您的反馈。