索引类型的选择通过平衡搜索精度、计算成本和数据结构复杂性之间的权衡,直接影响查询延迟分布。暴力平面索引提供确定性延迟,但扩展性差;而像 HNSW 和 IVF 这样的近似最近邻 (ANN) 方法引入了受控的变异性,以降低延迟,但会牺牲一定的精度。每种索引的具体设计决定了查询速度的一致性以及不同查询之间的延迟差异程度。
暴力平面索引计算查询与数据集中每个向量之间的精确距离。这导致查询延迟高度可预测:每个查询花费相同的时间,与数据集大小成比例。例如,搜索 100 万个向量可能持续需要 10 毫秒。然而,对于大型数据集(例如,1 亿个向量每次查询可能需要 1 秒),这种线性扩展变得不切实际。其延迟分布非常窄——几乎所有查询的延迟都相同——但绝对延迟随数据大小呈线性增长。开发者仅在数据集较小或精确结果不可协商(例如在质量关键的验证步骤中)时使用平面索引。
HNSW(分层可导航小世界)和 IVF(倒排文件索引)引入了延迟的变异性,以实现更快的搜索。HNSW 将数据组织成一个分层图,查询通过遍历连接来寻找邻居。延迟取决于查询导航的“容易程度”——有些查询在顶层快速找到邻居,而有些则需要更深入的遍历。例如,一个匹配密集簇的查询可能在 2 毫秒内完成,而一个探索多条路径的“更难”的查询可能需要 20 毫秒。这会产生更宽的延迟分布。另一方面,IVF 将数据分成簇,并且只搜索最近的簇。延迟的变异性源于簇大小和查询与簇对齐方式的差异。如果一个查询最近的簇包含 1000 个向量,延迟可能是 5 毫秒,但探测一个包含 10000 个向量的簇可能会飙升到 50 毫秒。开发者可以调整 HNSW 的 efSearch
(搜索深度)或 IVF 的 nprobe
(搜索的簇数量)等参数,根据精度需求来收紧或放宽这种分布。
选择取决于应用对延迟变异性的容忍度以及对速度的需求。HNSW 适用于在偶尔出现较高延迟可接受但需要整体更快平均性能的场景(例如推荐系统)。当簇大小均匀时,IVF 提供更可预测的延迟,这对于图像检索等需要控制权衡的应用非常有用。平面索引仍然是小规模精确搜索的利基选择。理解这些动态有助于开发者根据系统的延迟 SLA 和精度要求来选择索引。