多阶段或混合索引通过减少需要详细检查的项目数量来提高搜索效率,同时通过分层方法保持召回率。核心思想是将搜索过程分为两个阶段:一个快速的近似阶段,用于缩小候选范围;接着是一个较慢的精确阶段,用于细化结果。例如,在向量相似性搜索中,系统可能首先使用如倒排文件索引(IVF)之类的方法将向量分组到簇中,然后仅在最相关的簇内执行精确的最近邻搜索。这减少了将每个查询与数据集中每个项目进行比较的计算负载,这对于大规模系统至关重要。
最初的“粗略”阶段平衡了速度和覆盖范围。像乘积量化(PQ)这样的技术将高维向量压缩成紧凑的代码,从而实现快速近似比较。虽然此阶段可能会遗漏一些相关项目,但通过设计确保了大多数顶级候选项目都被包含在内。例如,IVF 根据相似性将数据划分为簇,搜索时,系统仅检查簇的一个子集(由参数如 nprobe
控制)。增加 nprobe
会将搜索扩展到更多簇,以牺牲延迟为代价提高召回率。通过调整此参数,开发者可以优先考虑速度或准确性。第二个“精细”阶段然后使用精确或更高精度的方法对缩小的候选集进行重新排序,纠正第一阶段中的微小错误。
实际系统中通常结合多种技术。例如,Facebook 的 FAISS 库使用 IVF-PQ 进行高效的十亿级向量搜索。在文本搜索中,混合方法可能使用倒排索引快速检索包含关键词的文档,然后使用神经重排器根据语义相关性进行排序。这种分层策略避免了穷举搜索不切实际的成本,同时保持高召回率。开发者可以根据他们的数据集和延迟要求,通过调整阈值(例如,簇大小、量化深度)进一步优化。结果是一个可扩展的解决方案,可以在不牺牲有意义结果的情况下处理大型数据集,使其成为现代搜索引擎和推荐系统中的标准方法。