暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在 Azure Database for PostgreSQL 中引入 DiskANN 矢量索引

Azure云科技 2025-02-07
185


我们非常高兴的宣布,在海外版 Azure Database for PostgreSQL——灵活服务器上推出 DiskANN 预览版!作为一种领先的矢量索引算法,DiskANN 由微软研究院开发,并已广泛应用于 Bing、Microsoft 365 等全球服务。DiskANN 帮助开发人员构建高精度、高性能且具备良好扩展性的生成式 AI 应用,超越了 pgvector 的 HNSW 和 IVFFlat,在延迟和准确性方面表现更出色。同时,DiskANN 还克服了 pgvector 在过滤矢量搜索中偶尔返回错误结果的局限性,为开发者提供更稳定可靠的搜索体验。 


01

什么是 DiskANN? 


DiskANN 是一种可扩展的最近的邻域搜索算法,可给出近似的结果,适用于任意规模的高效矢量搜索。 这一算法能够做到高召回率、每秒高查询 (QPS) 和低查询延迟,甚至适用于包含数十亿项目的数据集。 这使得它成为处理大量数据的强大工具。  


DiskANN 在 Azure PostgreSQL- 灵活服务器上优化布局 


DiskANN 的强大技术特点包括: 


优化存储:即使超出 RAM 限制,也能保持快速的搜索速度。

向量量化:将量化后的向量保存在内存中,我们在 PostgreSQL 上的 DiskANN 实现,巧妙平衡了量化与未量化向量的交互,实现低延迟和高精度。 

迭代后过滤:在不牺牲速度或精度的前提下,进一步提升了过滤搜索结果的准确性。 

稳健的 Vamana 图结构:Vamana 图结构在频繁插入、修改和删除操作下依然能保持高准确性,避免了昂贵的索引重建,与传统图索引相比更具韧性。 


02

过滤矢量搜索问题 


矢量相似性搜索是将数据(如图像或文本)转化为矢量表示,存储到索引中,并通过查询矢量在索引中找到匹配的结果。在进行矢量搜索时,用户往往会应用一些非矢量化数据的筛选条件以提升搜索的精准度,比如按日期或价格筛选。然而,pgvector 对过滤矢量搜索的支持相对有限。比如,假设您想在特定日期以低于 30 美元的价格查找排名前 3 的出租房源,可以尝试如下查询: 



在 pgvector 中,如果我们需要在庞大的数据库中进行矢量相似性搜索,获取最相关的前 3 行结果,查询规划器会将该请求拆分成两个步骤: 


排序:首先,根据数据集中与查询最相关的前几行(默认 40 行)进行排序。这里的相似行数量由参数 ef_search 决定,它控制搜索过程中的动态列表大小。 

应用过滤:接着,进行后续的条件筛选(如价格低于 30 美元,日期为 2025 年 1 月 2 日),以排除不满足条件的行,最终返回符合条件的 3 行结果(LIMIT 3)。 


值得注意的是,pgvector 的实现有时无法保证在后过滤时总能返回 3 行结果。尤其是在过滤条件较宽松的情况下,后过滤步骤可能在最相关的前 40 行中找不到匹配项。这种情况下,即便数据库中存在符合条件的行,pgvector 也可能不返回任何结果。 


使用 HNSW。想象一个场景,用户在房地产列表数据库中搜索与给定查询类似的房源,并且只想要特定日期下价格低于 30 美元的房源。 


在 pgvector 的 HNSW 模式下,虽然增加返回的相关行数量可以缓解部分问题,但其最大返回上限为 1000 行。如果查询的条件选择性要求扫描超过 1000 行的结果,那么 HNSW 就难以满足这一需求。这在搜索大型数据集时尤其常见,导致过滤查询的召回率偏低。 


03

DiskANN 迭代后

过滤带来高效精确的搜索体验 


为解决这一痛点,我们在 Postgres 上引入了 DiskANN 及其迭代后过滤功能,特别适用于过滤查询场景。DiskANN 通过迭代方式获取最接近的条目,不断优化搜索精度,直至满足预期结果数量,且全程保持快速响应与高精度。此创新技术专为过滤查询设计,确保搜索结果的高度相关性和低延迟,带来卓越的用户体验。 

使用 DiskANN 进行过滤向量相似性搜索时,查询规划器会执行以下 3 个步骤,帮助您在大量数据中找到最相关的前 3 条记录: 


排序相关行:首先按数据集中最相关的行进行排序。返回的相似行数量由 DiskANN 中的 l_value_is 参数控制。 

应用后置过滤:添加筛选条件(如价格低于 30 美元且日期为 2025 年 1 月 2 日),移除不符合条件的记录。 

迭代获取符合筛选条件的结果:按相似度顺序遍历所有记录,直至找到符合条件的 3 条记录(在查询中通过 LIMIT 3 定义)

 

这种 3 步查询计划能确保快速且精准地找到符合条件的最佳结果,为您的数据筛选带来更高效率! 


使用 HNSW。想象一个场景,用户在房地产列表数据库中搜索与给定查询类似的房源,并且只想要特定日期下价格低于 30 美元的房源。 


04

面向未来的可扩展性 


DiskANN 不仅提升了召回率,还支持高效地存储和搜索海量向量数据!通过利用固态硬盘(SSD)来减少内存占用,DiskANN 实现了极致的可扩展性和高效性。它通过量化技术将压缩后的矢量存储在内存中,并在需要时从 SSD 中调用完整矢量进行最终比对,确保精准度。这项技术让系统即使在处理超大规模数据集时,也能保持响应快速、成本低廉。 


DiskANN 如何优化存储


05

稳定应对插入、

删除和更新操作 


DiskANN 的图索引设计非常稳健,即便在大量数据插入、更新或删除的情况下也不会随时间衰减。而市场上大多数基于 HNSW 等技术的向量数据库在面对这种情况时,往往需要高昂的重建成本来维持准确性。DiskANN 专注于减少维护工作,同时确保搜索结果的高精准度,是对精度有极高要求的生产环境的理想之选! 


DiskANN 与 HNSW 的稳定性 


06

拥抱 Azure Database 

for PostgreSQL 的新未来


将迄今为止最先进的向量搜索技术引入 Azure Database for PostgreSQL,为 AI 应用带来全新可能。DiskANN 向量索引突破传统,使 Azure Database for PostgreSQL 拥有无与伦比的精度和高效性能。通过 DiskANN 的强大功能,您将获得: 

简化运营、降低成本:DiskANN 的高效算法和精心设计的索引访问方式,有效利用 Postgres 存储,大幅节省成本。 

释放无限扩展潜力:Azure PostgreSQL 数据库能够利用 SSD,减少内存占用,为您的 AI 应用提供无与伦比的扩展能力! 


07

在 Azure Database 

for PostgreSQL 

上轻松使用 DiskANN 


在 Azure Database for PostgreSQL 上使用 DiskANN 非常简便,您只需按照以下步骤操作: 


启用 pgvector 和 DiskANN 扩展:在服务器配置中启用 pgvector 和 DiskANN 扩展,以便充分利用其功能。 

激活DiskANN

创建向量列:定义一个表来存储向量数据,确保包含一个类型为“向量”的列,用于保存向量嵌入。 

索引向量列:在向量列上创建索引,以提升搜索性能。DiskANN PostgreSQL 扩展与 pgvector 兼容,支持相同的数据类型、距离函数和语法风格。 

执行向量搜索:通过 SQL 查询,基于多种距离度量来查找相似向量(例如,下面的示例使用了余弦相似度)。 


08

立即体验 DiskANN 预览版 


利用 Azure Database for PostgreSQL 的强大功能,探索人工智能驱动应用程序的未来! 

1. 请与您的微软客户代表联系,填写申请表单,注册 DiskANN 早期预览版。  

2. 获得批准后,运行端到端示例,在指定的示例数据库上测试 DiskANN 与 HNSW 的性能对比。




文章转载自Azure云科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论