提升 Amazon Aurora 上生成 AI 工作负载的性能
关键要点
在本文中,探讨了如何通过 优化读取 和 pgvector 提升 Amazon Aurora 上生成 AI 工作负载的性能。使用 HNSW 索引的优化读取实例能够实现平均查询吞吐量提高最多九倍,且查询成本降低高达7580。该功能适用于存储巨量向量数据的应用程序,尤其是在内存限制时。
生成 AI 的发展极大地扩展了企业构建应用的可能性,尤其是对非结构化数据类型如文本、图像和视频的搜索与比较。使用 pgvector 的 Amazon Aurora PostgreSQL 兼容版,可以实现直接在数据库中进行相似性比较,并对此类数据进行高效存储和快速检索。以下将讨论如何利用优化读取提升向量工作负载的性能。
Aurora 优化读取如何改善向量工作负载
在向量搜索中,最常用的技术是 相似性搜索 或 最近邻 搜索,这通过计算向量之间的距离进行比较。常见的搜索方法包括 k 最近邻KNN和近似最近邻ANN,前者遍历整个数据集,而后者只在一个子集上进行搜索。每种方法都有其权衡,KNN 返回最相关的结果,但 ANN 通常性能更优。
例如,生成的向量如 Amazon Titan Embeddings G1 Text 模型具有 1536 个维度,这大约需要 6 KiB 的内存。在对 1000000000 个向量执行 KNN 时,需要将 57 TiB 的数据加载到内存中。使用 Aurora PostgreSQL 和 pgvector,可以有效地管理向量在内存中的加载,尤其是在内存不足时。
Aurora 的优化读取功能利用本地 NVMe SSD 进行块级存储,优化了在对超大数据集进行读取时的性能,相较于传统路径,查询性能提升可达 20 倍,使得应用能够快速响应。
Aurora 优化读取的性能基准测试
为了解 Aurora 优化读取的优势,我们对存储在 Aurora 中的向量使用 pgvector 进行了基准测试,比较了带与不带优化读取实例的性能。我们使用修改后的 BIGANN 基准测试 工具包含 10 亿个向量,并测量了在 Aurora 中对向量数据集进行并发相似性搜索的性能。
在这些测试中,我们检测了 Aurora PostgreSQL 的性能和查询吞吐量。基于 HNSW 索引的 pgvector 支持查询的准确性评估,我们设置了 efsearch 参数,并将其设置为 400,以获得 09578 的召回率。这种参数允许在邻居遍历时控制候选节点队列的大小。
实例类型vCPU内存 (GB)表/索引大小 (GB)共享缓存大小 (GB)NVMe 缓存大小 (GB)月成本 (useast1)R6gd12xlarge优化读取48384614/78125015007008R6gd16xlarge优化读取64512614/78132221009345R6g12xlarge无优化读取48384614/781250N/A5831R6g16xlarge无优化读取64512614/781350N/A7775从测试结果中,我们可以看到,优化读取的 R6gd 实例在处理查询时表现出更高的吞吐量,相比无优化读取的实例,CPU 利用率显著提升。
在并发增加的情况下,优化读取实例不仅提升了性能,同时降低了每查询的成本,显示出具有更好的性价比:
线程数QPS (优化读取)与 R6g12xl 吞吐量比较QPS (无优化读取)47039307681387921511625348316结论
通过使用 Amazon Aurora PostgreSQL 和 pgvector,开发人员能够便捷地构建创新的生成 AI 应用,并通过向量相似性搜索对图像和文本进行处理。Aurora 的优化读取提供了高性能且具成本效益的选择,相比于传统索引,性能提升可达 20 倍。
安卓加速器免费
对于超出实例内存的向量工作负载,Aurora 优化读取提供了一种高效的解决方案,能够在共享实例大小的情况下,解锁更高的性能。如果您希望了解更多关于优化读取的使用信息,可查看 Aurora PostgreSQL 优化读取提升查询性能 。
欢迎在评论中留下您的反馈!