我们的邮箱地址:

steadfast@163.com

致电我们:

13594780186

经典案例

  • Home
  • 优化生成式 AI 应用程序,使用 pgvector 索引:深入探讨 IVFFlat 和 HNSW 技

优化生成式 AI 应用程序,使用 pgvector 索引:深入探讨 IVFFlat 和 HNSW 技

2026-01-27 12:34:50 16

优化生成式 AI 应用程序的 pgvector 索引:深入探讨 IVFFlat 和 HNSW 技术

作者:Vishal Srivastava 和 Abhinav Sarin,发表于 2024 年 3 月 15 日,阅读更多内容:高级学习 亚马逊 Aurora 亚马逊 RDS 最佳实践 生成式 AI PostgreSQL 兼容 RDS for PostgreSQL 技术操作指南永久链接

关键要点

在近年来,利用基础模型 (FMs) 构建生成式 AI 应用程序的兴趣日益增加。基础模型经过大量数据的训练,可以执行一些过去被认为是人类独有的任务,例如创作艺术和音乐。然而,当将这些模型应用于企业级应用时,它们存在显著的局限性。基础模型缺乏对企业特定上下文的了解,可能只提供通用的响应,无法充分利用企业内部的数据。因此,使用适当的技术如 RAG (检索增强生成) 和 pgvector 索引可以定制基础模型,使其更符合企业需要。

pgvector 索引的优化

Amazon Aurora PostgreSQL 和 Amazon RDS for PostgreSQL 的索引选项

在深入探讨 pgvector 支持的索引之前,我们需要理解 准确最近邻搜索Exact Nearest Neighbor Search,或 kNN 搜索的概念。通过在 PostgreSQL 中执行没有索引的搜索,我们可以找到准确匹配 (100 回忆)。kNN 搜索采用查询向量与数据库中每个矢量计算距离,找到最近邻。

变量说明L2 距离两个向量之间的直线距离余弦距离根据两个向量指向的方向测量的角度距离内积两个向量的大小乘以它们之间角度的余弦值

IVFFlat 算法

IVFFlat 是一种近似最近邻搜索算法,通过基于 Kmeans 算法 将向量空间划分为多个区域。查询向量首先通过计算与各个区域的中心点的距离来确定它属于哪个区域,然后在该区域内执行局部搜索以查找最近邻。

以下是创建 IVFFlat 索引的示例代码

sqlCREATE INDEX ON items USING ivfflat (embedding vectorl2ops) WITH (lists = 100)

十大免费加速器

HNSW 算法

HNSW 是一种通过构造优化的图结构进行近似搜索的算法。HNSW 构建一个图形,使得在少量步骤中可以遍历任意两点之间的路径。

创建 HNSW 索引的示例代码为:

优化生成式 AI 应用程序,使用 pgvector 索引:深入探讨 IVFFlat 和 HNSW 技

sqlCREATE INDEX ON items USING hnsw (embedding vectorcosineops)

实施和性能结果

通过构建商品目录搜索的真实场景,测试了使用 IVFFlat 和 HNSW 索引的优势。我们使用 AWS 产品目录的多个 PDF 文档生成向量嵌入,存储在 Amazon RDS for PostgreSQL 的 langchainpgembedding 表中。

搜索性能测试

查询性能的测试结果如下:

HNSW 索引:约 15 毫秒IVFFlat 索引:约 24 毫秒顺序扫描:约 650 毫秒

通过以上测试,我们发现 HNSW 在性能上具有显著优势。

结论

在本篇文章中,我们讨论了使用 pgvector 加速数据插入和查询性能的不同索引类型。合理选择索引可以优化数据库配置,并设计出更有效的应用程序,充分利用索引的功能。

我们期待您的反馈!

发表评论