Filtered-DiskANN: Graph Algorithms for Approximate Nearest Neighbor Search with Filters
TL;DR 精炼摘要
针对带过滤器的近似最近邻搜索(ANNS)低效问题,Filtered-DiskANN提出两种图算法。通过构建融合向量几何与标签元数据的图索引,算法显著提升过滤查询效率和召回率,性能比现有SOTA方法高出一个数量级,支持大规模交互式应用。
摘要
Filtered − DiskANN : Graph Algorithms for Approximate Nearest Neighbor Search with Filters Siddharth Gollapudi Microsoft Research India sgollapu@berkeley.edu Neel Karia ∗ , 1 Columbia University USA neel2karia@gmail.com Varun Sivashankar ∗ Microsoft Research India varunsiva@ucla.edu Ravishankar Krishnaswamy Microsoft Research India rakri@microsoft.com Nikit Begwani Microsoft India nikit.begwani@microsoft.com Swapnil Raz Microsoft India swraz@microsoft.com Yiyong Lin Microsoft USA yiyolin@microsoft.com Yin Zhang Microsoft USA yinzhang@microsoft.com Neelam Mahapatro Microsoft India nmahapatro@microsoft.com Premukumar Srinivasan Microsoft USA prsriniv@microsoft.com Amit Singh Microsoft India siamit@microsoft.com Harsha Vardhan Simhadri Microsoft Research USA harshasi@microsoft.com ABSTRACT As Approximate Nearest Neighbor Search (ANNS)-based dense retrieval becomes ubiquitous for search and recommendation sce- narios, efficiently answering filtered ANNS queries has become a critical requirement. Filtered ANNS queries ask for the nearest neighbors of a query’s embedding from the points in the index that match the query’s labels such as date, price r
思维导图
论文精读
中文精读
1. 论文基本信息 (Bibliographic Information)
-
标题 (Title): Filtered-DiskANN: Graph Algorithms for Approximate Nearest Neighbor Search with Filters (带过滤器的近似最近邻搜索图算法)
-
作者 (Authors): Siddharth Gollapudi, Neel Karia, Varun Sivashankar, Ravishankar Krishnaswamy, Nikit Begwani, Swapnil Raz, Yiyong Lin, Yin Zhang, Neelam Mahapatro, Premukumar Srinivasan, Amit Singh, Harsha Vardhan Simhadri.
-
隶属机构 (Affiliations): 论文作者主要来自微软研究院 (Microsoft Research) 和微软公司,以及加州大学伯克利分校、哥伦比亚大学、加州大学洛杉矶分校的实习生。
-
发表期刊/会议 (Journal/Conference): The Web Conference 2023 (WWW '23). WWW 是计算机科学领域,特别是万维网和相关技术方向的顶级学术会议之一,具有很高的声誉和影响力。
-
发表年份 (Publication Year): 2023
-
摘要 (Abstract): 随着基于近似最近邻搜索 (ANNS) 的稠密检索在搜索和推荐场景中无处不在,高效地响应带过滤器的 ANNS 查询已成为一项关键需求。带过滤器的 ANNS 查询要求从索引中满足特定标签(如日期、价格范围、语言)的数据点中,找到查询向量的最近邻。以往很少有研究工作利用与向量数据关联的标签元数据来构建高效的索引。因此,现有索引要么搜索延迟高,要么召回率低,这在交互式网络场景中是不切实际的。本文提出了两种原生支持更快、更准确的带过滤器 ANNS 查询的算法:一种支持流式处理,另一种基于批量构建。我们算法的核心是构建一个图结构索引,该索引不仅根据向量数据的几何形状建立连接,还考虑了相关的标签集。在带有自然标签的真实世界数据上,这两种算法在处理带过滤器查询时,比当前最先进的算法效率高出一个数量级或更多。生成的索引也可以在 SSD 上查询,并支持每秒数千次查询,同时达到超过 90% 的
recall@10。 -
原文链接 (Source Link): https://harsha-simhadri.org/pubs/Filtered-DiskANN23.pdf (已正式发表)
2. 整体概括 (Executive Summary)
-
研究背景与动机 (Background & Motivation - Why):
- 核心问题: 在大规模向量数据库中,如何高效地执行带过滤条件的近似最近邻搜索 (Filtered Approximate Nearest Neighbor Search)。例如,“在所有价格低于`50且品牌为A的商品中,找到与这张图片最相似的10件商品”。
- 重要性与挑战: 这种“向量搜索 + 属性过滤”的混合查询在现实世界的搜索引擎、推荐系统、广告系统和电子商务平台中极为普遍。然而,现有方法存在严重瓶颈:
- 后处理 (Post-processing): 先执行常规的 ANNS 搜索,检索大量候选项,然后再根据标签过滤。当过滤条件非常严格(即低特异性,
specificity,满足条件的点很少)时,可能需要检索成千上万个候选项才能找到少数几个满足条件的,导致性能急剧下降。 - 内联处理 (Inline-processing): 在搜索过程中实时过滤不满足条件的候选项。这种方法在非图结构的索引(如
IVF)上可行,但无法充分利用当前性能最强的图结构索引(如HNSW,Vamana)的巨大效率优势。 - 现有方法的共性缺陷: 大多数现有方法都只修改搜索阶段,而没有在索引构建阶段就将标签信息考虑进去。这导致索引本身的结构对过滤查询是“无知”的,搜索效率低下。
- 后处理 (Post-processing): 先执行常规的 ANNS 搜索,检索大量候选项,然后再根据标签过滤。当过滤条件非常严格(即低特异性,
- 创新思路: 本文的切入点是,从根本上改变索引的构建方式。作者认为,一个优秀的带过滤器 ANNS 索引,其图的连接结构不仅应反映向量间的几何邻近性,还应编码标签信息,确保在任何一个标签对应的子集内部,图的导航能力依然强大。
-
核心贡献/主要发现 (Main Contribution/Findings - What):
-
提出了两种新的图算法:
FilteredVamana: 一种流式 (streaming) 或增量式构建算法。它在向图中添加节点时,会动态地寻找并连接那些与自己共享标签且几何位置相近的邻居,并使用一种标签感知的剪枝策略 (FilteredRobustPrune) 维护图的结构。这使其天然支持索引的动态更新。StitchedVamana: 一种批量 (batch) 构建算法。它首先为每个标签单独构建一个Vamana图,然后将所有这些图的边“缝合”(stitch) 在一起形成一个总图,最后再使用标签感知的剪枝策略优化整个图的度数和结构。
-
性能实现了数量级提升: 实验证明,这两种算法在处理带过滤器的查询时,其查询吞吐量 (QPS) 比现有最先进的基线方法高出一个数量级以上,同时还能保持极高的召回率 (recall),即使在过滤条件特异性低至
10^{-6}的极端情况下依然表现出色。 -
工业应用验证: 通过在微软必应的在线广告推荐系统中进行 A/B 测试,部署
FilteredVamana后,系统的点击率提升了 34.6%,收入提升了 48.9%,证明了其在真实工业环境中的巨大价值。 -
兼容 SSD 存储: 提出的算法可以与
DiskANN框架结合,将索引存储在成本更低的 SSD 上,实现了在大规模数据集上的低延迟、高召回率和高并发查询。
-
3. 预备知识与相关工作 (Prerequisite Knowledge & Related Work)
-
基础概念 (Foundational Concepts):
- 近似最近邻搜索 (Approximate Nearest Neighbor Search, ANNS): 在一个高维向量数据集中,给定一个查询向量,目标是找到与之最相似(通常是欧氏距离或余弦相似度)的 k 个向量。由于在高维空间中进行精确搜索存在“维度灾难”问题(计算成本随维度指数增长),ANNS 旨在以牺牲极小的精度为代价,换取查询速度的巨大提升。
- 带过滤器的 ANNS (Filtered ANNS): 这是 ANNS 的一个变种。每个数据点向量除了坐标外,还附带一个或多个标签 (labels) 或元数据 (metadata)。查询也由一个向量和一个过滤器 (filter) 组成。任务是从数据集中所有满足过滤器条件的向量子集中,找到查询向量的 ANNS。
- 特异性 (Specificity): 指满足某个过滤器 f 的数据点数量占整个数据集总量的比例,即
|P_f|/|P|。特异性越低,过滤条件越苛刻,对算法的挑战也越大。 - 图结构 ANNS 算法 (Graph-based ANNS): 这类算法是当前 ANNS 领域性能的标杆,代表有
HNSW和Vamana。其核心思想是将数据集中的每个向量视为图中的一个节点,通过特定的规则在“邻近”的节点间建立边,形成一个“可导航的小世界网络”。搜索过程从一个或多个起始点开始,通过贪心策略在图上游走,不断访问离查询向量更近的邻居,最终收敛到最近邻。其优势在于极高的查询效率(极少的距离计算次数就能达到高召回率)。
-
前人工作 (Previous Works):
- 后处理 (Post-processing): 最简单直接的方法。使用标准 ANNS 索引(如
HNSW)检索远超 k 个(比如 100*k 个)候选项,然后从这些候选项中筛选出符合标签的。局限性: 对于低特异性查询,可能检索回来的大量候选项全都不满足条件,导致召回率为零或性能极差。 - 预处理/内联处理 (Pre-processing/Inline-processing):
Milvus/Weaviate:在索引构建时,额外建立一个标签到向量ID的倒排索引。查询时,先通过倒排索引获取所有满足标签条件的向量 ID 列表(“approved list”),然后在图上搜索时,只允许访问这个列表中的节点。局限性: 只是在搜索时限制了路径,并未优化图本身的结构,导航效率依然不高。FAISS-IVF:IVF(Inverted File) 是一种基于聚类的 ANNS 方法。数据被划分为多个簇 (clusters),搜索时只检查与查询最相关的少数几个簇。内联处理可以在检查簇内数据点时,跳过那些标签不匹配的点。局限性:IVF本身的性能就不如图结构算法,尤其是在高召回率要求下。
- NHQ 算法: 这是少数在索引构建阶段考虑标签的图算法。它将标签编码成向量,然后拼接到原始数据向量之后,再用标准图算法构建索引。局限性: 论文指出,这种方法实际上只适用于每个数据点只有一个标签(即数据集被划分为不相交的子集)的简单场景,并且难以扩展到每个点有多个标签的复杂情况。
- 后处理 (Post-processing): 最简单直接的方法。使用标准 ANNS 索引(如
-
技术演进 (Technological Evolution): ANNS 技术从早期的树结构(如 KD-Tree)发展到哈希方法(LSH),再到量化方法(PQ)和倒排索引(IVF),最终图结构算法(
HNSW,Vamana)成为当前的主流和性能王者。本文的工作正是在这个技术脉络上,致力于将图算法的巨大优势从无过滤 ANNS 领域成功地迁移并优化到更具挑战性的带过滤器 ANNS 领域。 -
差异化分析 (Differentiation): 与以往所有工作最大的不同在于,
Filtered-DiskANN将标签信息深度整合到了图的构建和优化过程中。它不是在既有图上“绕着走”,而是直接构建一个对过滤查询“友好”的图。其核心创新在于FilteredRobustPrune剪枝算法,它保证了即使在某个标签对应的子图上,网络的连通性和导航性也足够好,从而实现了从根本上的性能飞跃。
4. 方法论 (Methodology - Core Technology & Implementation Details)
本文提出了两种核心算法:FilteredVamana 和 StitchedVamana。它们共享同一个核心的搜索算法 FilteredGreedySearch 和剪枝算法 FilteredRobustPrune。
4.1 核心组件 (Shared Components)
-
FilteredGreedySearch(算法 1): 带过滤的贪心搜索- 核心思想: 这是在图上执行过滤查询的标准流程。与常规的贪心搜索类似,它维护一个候选列表 L(一个优先队列)和一个已访问节点集合 V。
- 流程:
- 从指定的起始节点 S 开始,将满足查询过滤器 F_q 的节点加入 L。
- 循环执行:从 L 中取出离查询向量 x_q 最近的未访问节点 p*。
- 将 p* 加入已访问集合 V。
- 遍历 p* 的所有出邻居 p',如果 p' 满足查询过滤器 F_q 且未被访问过,则将其加入 L。
- 如果 L 的大小超过预设的搜索列表大小 L,则截断 L,只保留离 x_q 最近的 L 个节点。
- 当 L 中所有节点都已被访问时,搜索终止。从 L 中返回最接近的 k 个邻居。
- 关键点: 步骤 4 是核心,它保证了整个搜索过程始终在满足过滤器条件的子图上进行,避免了无效的探索。
-
FilteredRobustPrune(算法 3): 带过滤的鲁棒剪枝- 核心思想: 这是本文最重要的创新点,用于在构建图时优化节点的出边,确保图的导航效率。其目标是为节点 p 从一个大的候选邻居集合 V 中挑选出最多 R 个“最好”的出邻居。
- 剪枝原则: 对于一个节点 p,如果要决定是否保留一条指向 p' 的边,它会检查是否存在一个“更优”的中间节点 p*。如果从 p 到 p* 再到 p' 的路径(p -> p* -> p')优于直接从 p 到 p' 的路径(p -> p'),则边 (p, p') 就是冗余的,可以被剪掉。
- 数学与逻辑条件: 一条边 (p, p') 被剪掉,需要同时满足以下两个条件:
- 几何条件: 存在一个邻居 p*,使得 p* 比 p 更接近 p',即
α \cdot d(p^*, p') \leq d(p, p'),其中d(\cdot, \cdot)是距离函数,α \ge 1是一个控制参数。这与标准Vamana的剪枝逻辑相同。 - 标签条件 (创新点): 中间节点 p* 必须“覆盖” p 和 p' 之间的共同标签。形式化地,p, p', p* 的标签集分别为
F_p, F_{p'}, F_{p^*},则必须满足F_p \cap F_{p'} \subseteq F_{p^*}。
- 几何条件: 存在一个邻居 p*,使得 p* 比 p 更接近 p',即
- 直觉解释: 这个标签条件至关重要。它保证了如果 p 和 p' 因为共享某个标签 f 而应该被连接,那么任何试图“替代”这条直连边的路径 p -> p* -> p',其中间节点 p* 也必须拥有标签 f。这确保了在只考虑标签 f 的子图上,p 到 p' 的可达性不会因为剪枝而被破坏。
4.2 FilteredVamana 算法 (算法 4)
- 方法原理: 增量式或流式构建。算法逐一将数据点插入到一个初始为空的图中。
- 方法步骤与流程:
- 初始化:
- 创建一个空图 G。
- 对所有数据点进行随机排列。
- 使用
FindMedoid(算法 2) 为每个标签 f 选择一个负载均衡的起始节点 st(f)。
- 逐点插入: 按照随机顺序遍历每个数据点 p:
- 寻找候选邻居: 以 p 的所有标签对应的起始节点 {st(f) | f ∈ F_p} 作为入口,执行一次
FilteredGreedySearch,搜索 p 自己的最近邻。这次搜索返回的已访问节点集合 V_p 就构成了 p 的候选邻居集。 - 前向边剪枝: 对 p 和其候选邻居集 V_p 调用
FilteredRobustPrune,为 p 选择最多 R 个最优的出邻居,并建立有向边。 - 反向边更新: 对于 p 的每个新邻居 j,将 p 添加为 j 的邻居(建立反向边)。
- 反向边剪枝: 如果 j 的邻居数超过了 R,则对 j 也调用一次
FilteredRobustPrune来优化其出边。
- 寻找候选邻居: 以 p 的所有标签对应的起始节点 {st(f) | f ∈ F_p} 作为入口,执行一次
- 初始化:
- 优点: 构建速度快,天然支持动态数据插入,适用于流式场景。
4.3 StitchedVamana 算法 (算法 5)
-
方法原理: 批量构建。利用“分而治之”的思想,先为每个标签子集构建高质量的图,然后合并优化。
-
方法步骤与流程:
- 分治构建 (Divide and Conquer): 对于宇宙中的每一个标签 f:
- 提取所有带标签 f 的数据点子集 P_f。
- 在 P_f 上使用标准的
Vamana算法构建一个高质量的图 G_f。
- 合并/缝合 (Stitch):
- 创建一个总图 G,其节点为整个数据集 P。
- G 的边集是所有 G_f 边集的并集。此时,一个节点的度数可能是非常大的,因为它可能在多个 G_f 中都有边。
- 全局剪枝 (Prune):
- 遍历 G 中的每一个节点 v。
- 对其当前的所有邻居调用
FilteredRobustPrune,将出度降低到最终的目标值R_stitched。
- 分治构建 (Divide and Conquer): 对于宇宙中的每一个标签 f:
-
优点: 由于每个子图 G_f 都是高质量的,合并后拥有非常丰富的候选边,全局剪枝时能做出更好的决策,因此最终图的质量(查询性能)通常更高。
-
缺点: 只能批量构建,不适合动态更新;构建时间通常比
FilteredVamana更长。
5. 实验设置 (Experimental Setup)
-
数据集 (Datasets):
-
实验使用了 3 个真实世界数据集和 5 个半合成数据集,详细信息转录自原文 Table 1 如下:
Dataset Dim # Pts. # Queries Source Data Filters Filters per Pt. Unique Filters 100pc. 75pc. 50pc. 25pc. 1pc. Turing 100 2,599,968 996 Text Natural 1.09 3070 0.127 1.56x10⁻⁴ 4.15x10⁻⁵ 1.54x10⁻⁵ 7.7x10⁻⁶ Prep 64 1,000,000 10000 Text Natural 8.84 47 0.425 0.136 0.130 0.127 0.09 DANN 64 3,305,317 32926 Text Natural 3.91 47 0.735 0.361 0.183 0.167 0.150 SIFT 128 1,000,000 10000 Image Random 1 12 0.083 0.083 0.083 0.083 0.082 GIST 960 1,000,000 1000 Image Random 1 12 0.083 0.083 0.083 0.083 0.082 msong 420 992,272 200 Audio Random 1 12 0.083 0.082 0.082 0.082 0.082 audio 192 53,387 200 Audio Random 1 12 0.085 0.084 0.083 0.082 0.081 paper 200 2,029,997 10000 Text Random 1 12 0.083 0.083 0.083 0.083 0.082 -
选择理由:
Turing,Prep,DANN数据集来自真实的工业场景(企业搜索、广告),具有“自然”的标签分布(多标签、特异性差异巨大),能有效检验算法的实用性。其他数据集则用于和先前的工作(如NHQ)进行公平比较。
-
-
评估指标 (Evaluation Metrics):
Recall@k(召回率@k):- 概念定义: 该指标衡量算法找到的 k 个结果的准确性。它计算的是算法返回的 k 个结果中,有多少个同时属于真实的(通过暴力搜索得到的)前 k 个最近邻。这个比例就是
Recall@k。例如,Recall@10 = 0.9 意味着算法找到了 10 个真实最近邻中的 9 个。在本文中,这个真实集合是在满足过滤器条件的数据子集中计算的。 - 数学公式:
\text{Recall}@k = \frac{|A \cap G|}{|G|}3. 符号解释: *A: 算法返回的 k 个最近邻居的集合。 *G: 在满足过滤器条件的数据子集中,查询向量的真实 k 个最近邻居的集合。 *| \cdot |: 集合中元素的数量。
- 概念定义: 该指标衡量算法找到的 k 个结果的准确性。它计算的是算法返回的 k 个结果中,有多少个同时属于真实的(通过暴力搜索得到的)前 k 个最近邻。这个比例就是
QPS(Queries Per Second, 每秒查询数):- 概念定义: 该指标衡量系统的查询吞吐量或效率。它表示在单位时间(秒)内,系统能够处理的查询请求总数。QPS 越高,说明系统性能越好,处理并发请求的能力越强。
- 数学公式:
\text{QPS} = \frac{\text{Total Queries}}{\text{Total Time (in seconds)}}3. 符号解释:Total Queries: 在测试中执行的总查询次数。Total Time: 完成所有查询所花费的总时间。
-
对比基线 (Baselines):
-
IVF Inline-Processing: 基于FAISS实现的倒排索引,在搜索时进行内联过滤。 -
IVF Post-Processing: 基于FAISS实现的倒排索引,搜索后进行过滤。 -
HNSW Post-Processing: 基于FAISS实现的HNSW,搜索后进行过滤。 -
NHQ: 先前最相关的、在索引构建时考虑标签的图算法。 -
Milvus: 一个流行的开源向量数据库,提供了多种支持过滤的 ANNS 索引(包括HNSW和IVF的变体)。
-
6. 实验结果与分析
6.1 核心结果分析
实验结果通过绘制 Recall@10 vs. QPS 的权衡曲线来展示,曲线越靠右上角表示性能越好(在相同召回率下 QPS 更高,或在相同 QPS 下召回率更高)。
-
在真实世界数据集上的压倒性优势 (Figures 1, 2, 3):
该图像是包含五个子图的图表,展示了不同特异性(1%、25%、50%、75%、100%)条件下,多种方法的 Recall@10 随查询数变化的趋势比较。-
图像 1 (
Turing数据集): 这张图清晰地展示了本文方法在极低特异性下的威力。当特异性从 75% 降到 1% 时,所有基线方法(IVF,HNSWPost-Processing)的性能都崩溃了,召回率接近于 0,而FilteredVamana和StitchedVamana依然能轻松达到接近 100% 的召回率,并且 QPS 比基线高出近 1000 倍。
该图像是图表,展示了不同算法在不同特异性滤波条件(100%、75%、50%、25%、1%)下,Recall@10与QPS的关系。图中比较了FilteredVamana、StitchedVamana等多种算法的性能差异。 -
图像 4 (
Prep数据集): 在这个多标签广告数据集上,StitchedVamana的性能最好,FilteredVamana其次,两者都远超所有基线。在 90% 召回率下,StitchedVamana的 QPS 是次优基线IVF Inline-Processing的 6 倍,FilteredVamana是其 2.5 倍。
该图像是图表,展现了图3中DANN数据集中不同过滤特异性(100%、75%、50%、25%、1%)下,五种算法的查询每秒数(QPS)与召回率(Recall)@10的对比情况。 -
图像 5 (
DANN数据集): 结果与Prep数据集类似,StitchedVamana和FilteredVamana分别比IVF Inline-Processing快 7.5 倍和 3 倍(在 90% 召回率下)。
-
-
与
NHQ和Milvus的比较 (Appendix Figures):FilteredVamana和StitchedVamana的 QPS 比NHQ高出一个数量级 (图像 9, 图像 10)。Milvus提供的所有算法的 QPS 都非常低(<300),与本文提出的算法性能差距巨大 (图像 2, 图像 3, 图像 11)。
6.2 FilteredVamana vs. StitchedVamana
-
性能权衡: 在所有实验中,
StitchedVamana的查询性能(Recall/QPS 曲线)都一致地优于FilteredVamana,通常有 2 倍左右的 QPS 优势。然而,FilteredVamana的索引构建时间更短(见 Table 2)。-
以下是原文 Table 2 的转录数据: Table 2: Build times in seconds for Filtered Vamana, Stitched Vamana, NHQ, Milvus HNSW and Faiss HNSW.
Alg./Data Dann Prep Turing Audio SIFT FilteredVamana 159.8 66.6 103.4 1.3 44. StitchedVamana 469.9 222.6 295.9 1.6 24.4 NHQ NA NA NA 1.1 24.4 Milvus HNSW 153.6 49.3 NA 5.5 72.0 Faiss HNSW 158.6 44.5 188.0 1.1 71.1
-
-
对标签-向量相关性的依赖 (Figure 4):
该图像是图表,展示了在prep和dann数据集上,针对100%和1%特异性,FilteredVamana与StitchedVamana方法标签随机打乱前后的QPS与Recall@10关系,用以评估标签打乱对性能的影响。- 图像 6 (
Shuffled Labels实验): 通过随机打乱标签,破坏了标签与向量几何位置的天然相关性。结果显示,FilteredVamana对此几乎不受影响,表现出更强的鲁棒性。而StitchedVamana的性能在Prep数据集上有可见的下降,表明它可能在一定程度上利用了这种天然相关性来构建更优的图。
- 图像 6 (
-
无过滤查询性能 (Figure 5):
该图像是两个折线图,展示了FilteredVamana、StitchedVamana和Unfiltered Vamana三种方法在dann和Prep数据集上的Recall随QPS变化的关系。图中横轴为QPS,纵轴为Recall,显示在不同QPS下各算法的性能表现。- 图像 7 (Unfiltered Search): 即使是为过滤查询设计的索引,在执行无过滤的常规 ANNS 查询时,
StitchedVamana和FilteredVamana的性能也仅比专门的无过滤Vamana索引低 10%-20%,证明了其通用性,没有为了支持过滤而牺牲太多基础性能。
- 图像 7 (Unfiltered Search): 即使是为过滤查询设计的索引,在执行无过滤的常规 ANNS 查询时,
-
流式支持 (Streaming Support):
FilteredVamana的增量构建特性使其天然支持动态索引更新(插入新数据点),这是StitchedVamana无法做到的,使其在需要实时更新的场景中更具实用价值。
6.3 工业应用与扩展
-
在线 A/B 测试 (Tables 3 & 4):
-
在微软的广告系统中部署
FilteredVamana替换了原有的后处理方案。 -
整体效果 (Table 3): 点击率提升 +34.61%,收入提升 +48.95%,P-Value 极低,统计上显著。
Table 3: FilteredVamana performance improvement over current production system for ANNS retrieval Number ofDifferent Regions Pct. incr.in clicks Pct. incr.in revenue 47 34.61% (0.03) 48.95% (0.009) -
细分效果 (Table 4): 收益主要来自那些在索引中占比小的地区(低特异性过滤器)。对于占比小于 1% 的地区,点击率和收入增幅高达 70.67% 和 79.77%。这完美验证了本文算法解决了后处理方法在低特异性场景下的痛点。
Table 4: Performance improvement on three subgroups of regions based on their along with subgroup-wise performance improvement. Number in brackets indicate subgroup size. Region's sharein Index Pct. incr.in clicks Pct. incr.in revenue 3-9% (10) 25.54% 28.61% 1-2% (10) 54.07% 46.67% <1%(27) 70.67% 79.77%
-
-
SSD 索引支持 (Figure 6):
该图像是图表,展示了Filtered-DiskANN在2800万点DANN数据集上不同特异性过滤条件下的性能表现。左图显示Recall@10随每秒查询数(OPS)的变化,右图展示Recall与每次查询SSD IO次数的关系。-
图像 8 (
Filtered-DiskANN): 将算法与DiskANN框架结合,可以在 2800 万的大数据集上,使用 SSD 存储索引,依然能达到每秒数千次的查询和 90% 以上的召回率,证明了其可扩展性和成本效益。
-
7. 总结与思考 (Conclusion & Personal Thoughts)
-
结论总结 (Conclusion Summary):
- 该论文成功论证了在索引构建阶段原生支持过滤条件是解决带过滤器 ANNS 问题的正确方向。
- 提出的
FilteredVamana和StitchedVamana两种算法,通过引入标签感知的剪枝策略,构建了对过滤查询高效的图结构索引。 - 这两种算法在性能上远超现有技术(一个数量级以上),并在真实的工业级 A/B 测试中取得了巨大的业务收益,为该领域设立了新的技术标杆。
-
局限性与未来工作 (Limitations & Future Work):
- 大规模标签集: 当前实验的标签数量在几十到几千的级别,如何支持更大规模(如数万、数百万)的标签集是一个挑战。
- 复杂查询逻辑: 本文主要关注单一标签的过滤查询。对于更复杂的 SQL-like 表达式,如多个标签的与 (
AND)、或 (OR)、非 (NOT) 组合,仍是待解决的开放问题。 - 动态索引的完整评估: 论文提到
FilteredVamana支持流式插入,但对于删除 (delete) 操作以及更复杂的动态场景下的性能维持,还需要更详细的评估。
-
个人启发与批判 (Personal Insights & Critique):
- 核心启发: 这篇论文最核心的启发是“将领域知识(约束)融入数据结构本身”的设计哲学。它没有把过滤看作一个外挂的、在搜索时才处理的模块,而是将其视为图结构内在属性的一部分。这种从根本上解决问题的思路非常值得借鉴,可以推广到其他包含约束条件的搜索问题中。
- 算法的精妙之处:
FilteredRobustPrune中的标签条件 (`F_p \cap F_{p'} \subseteq F_{p^*}$) 是一个非常精妙的设计。它用一个简单的集合包含关系,优雅地保证了子图的导航性,是整个方法成功的关键。 - 论文的完整性: 这是一篇非常扎实的论文。它不仅提出了新颖的算法,还进行了全面的实验(涵盖不同类型的数据集、多种基线、消融分析),并最终通过线上 A/B 测试展示了其在真实世界中的商业价值。这种从理论到实践的完整闭环,使其具有极强的说服力。
- 潜在改进点:
StitchedVamana虽然性能好但构建成本高,FilteredVamana构建快但性能稍逊。未来是否可以研究一种混合方法,或者在FilteredVamana的增量构建过程中引入更全局的优化策略,以期在构建速度和查询性能之间取得更好的平衡。
相似论文推荐
基于向量语义检索推荐的相关论文。