ANN(近似最近邻搜索)
ANN(Approximate Nearest Neighbor)即近似最近邻搜索,是当前处理大规模高维数据最近邻搜索问题的前沿技术。
核心概念
与传统的精确最近邻搜索(Exact Nearest Neighbor)不同:
- 精确搜索:保证找到绝对最近的邻居(如暴力搜索、KD树在低维时)
- 近似搜索:以一定的精度损失换取搜索速度的大幅提升
如kd树算法[[kd树]],是精确最近邻搜索
为什么需要ANN?
- 维度灾难:在高维空间(通常d>20)中,传统方法效率急剧下降
- KD树等空间划分方法在高维时可能退化为近似暴力搜索
- 数据规模:现代应用常需处理百万/十亿级数据点
- 精确搜索的O(n)时间复杂度难以承受
- 实际需求:许多应用不需要绝对精确的结果
- 推荐系统、相似图片搜索等场景可以接受近似结果
ANN算法评价指标
评估ANN算法常用:
- 召回率(Recall):返回结果中真正最近邻的比例
- 查询速度:单次查询耗时
- 构建时间:索引构建时间
- 内存占用:索引大小
局部敏感哈希(LSH)
- 原理:将相似的点映射到相同”桶”的概率更高
- 优点:适用于高维数据,近似最近邻搜索
- 缺点:需要调参,结果不精确
基于图的算法(当前最先进)
HNSW(Hierarchical Navigable Small World)
- 构建多层图结构,上层是”高速公路”,下层是精细搜索
- 特点:查询快、内存友好、支持动态更新
- 代表实现:FAISS中的HNSW实现
NSG(Navigating Spreading-out Graph)
- 构建近似最小生成图
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Min的博客!
评论