AI 实践:ANN 近似最近邻检索
2025-08-16
疑问:向量检索(embedding + ANN) , 其中的 ANN 是什么?
这个 ANN 不是人工神经网络 (Artificial Neural Network),而是:
- ANN 是 Approximate Nearest Neighbor 的缩写,中文翻译为”近似最近邻检索”。
1. 为什么需要 ANN?
在向量检索里,每个文档片段都被编码成一个高维向量(embedding)。
- 用户提问 –> 也会被编码成一个向量
- 检索任务 –> 找到”和这个向量最接近”的若干文档向量
但问题是:
- 假设有 上百万 / 上亿 的向量,
- 每次都要做精确的最近邻搜索(逐个计算欧氏距离或余弦相似度),代价太大,速度太慢。
所以,引入 ANN:它放弃”完全精确”,转而使用高效的数据结构和算法来快速找到近似的、但几乎一样好的最近邻。
2. 常见的 ANN 算法 / 数据结构
几类主流方法:
-
树结构 (Tree-based)
- KD-Tree, Ball Tree 等
- 适合低维数据,高维失效(curse of dimensionality)
-
哈希 (Hash-based)
- LSH (Locality-Sensitive Hashing)
- 把相似向量映射到相同桶里,加速查找
-
图结构 (Graph-based)
- HNSW (Hierarchical Navigable Small World)
- 建立”向量之间的邻居图”,查询时像爬图一样跳跃搜索
- 目前是业界主流(比如 Milvus、Faiss、Weaviate 都支持)
-
量化 (Quantization-based)
- PQ (Product Quantization)、IVF-PQ 等
- 用压缩技术减少存储,并在粗粒度的索引上缩小候选范围
3. 应用场景
- 搜索引擎 / RAG:检索与问题最相关的文档片段
- 推荐系统:找”相似用户”或”相似物品”
- 图像/音频检索:找”相似图片”或”相似音频片段”
4. 总结
ANN 就是”为了在海量向量库里快速找到近似的最近邻”的算法集合,是向量检索的核心基础设施。
原文地址:https://ningg.top/ai-series-ann-intro/