NingG +

AI 实践:ANN 近似最近邻检索

疑问:向量检索(embedding + ANN) , 其中的 ANN 是什么?

这个 ANN 不是人工神经网络 (Artificial Neural Network),而是:


1. 为什么需要 ANN?

在向量检索里,每个文档片段都被编码成一个高维向量(embedding)

但问题是:

所以,引入 ANN:它放弃”完全精确”,转而使用高效的数据结构和算法来快速找到近似的、但几乎一样好的最近邻


2. 常见的 ANN 算法 / 数据结构

几类主流方法:

  1. 树结构 (Tree-based)

    • KD-Tree, Ball Tree 等
    • 适合低维数据,高维失效(curse of dimensionality)
  2. 哈希 (Hash-based)

    • LSH (Locality-Sensitive Hashing)
    • 把相似向量映射到相同桶里,加速查找
  3. 图结构 (Graph-based)

    • HNSW (Hierarchical Navigable Small World)
    • 建立”向量之间的邻居图”,查询时像爬图一样跳跃搜索
    • 目前是业界主流(比如 Milvus、Faiss、Weaviate 都支持)
  4. 量化 (Quantization-based)

    • PQ (Product Quantization)、IVF-PQ 等
    • 用压缩技术减少存储,并在粗粒度的索引上缩小候选范围

3. 应用场景


4. 总结

ANN 就是”为了在海量向量库里快速找到近似的最近邻”的算法集合,是向量检索的核心基础设施。

5. HNSW 索引结构

LLM(大语言模型) 相关的 向量检索 / ANN(Approximate Nearest Neighbor, 近似最近邻) 场景里, 你提到的 HNSW 是一种非常常用的索引结构,含义是:

HNSW = Hierarchical Navigable Small World graph

中文可理解为 “分层可导航小世界图”

5.1.核心思想

5.2.工作流程

  1. 构建索引: 把每个向量插入到 HNSW 图中,同时更新不同层的邻居关系。
  2. 查询

    • 从高层入口点开始搜索。
    • 每一层逐步下降,范围越来越精细。
    • 到最底层时,就能得到近似最近邻结果。

5.3.为什么 LLM 场景喜欢 HNSW?

在 LLM 的 RAG(检索增强生成)embedding 检索 里,通常要从 百万 / 亿级别 的向量库里找到最相关的上下文。

常见向量数据库(如 FAISS、Milvus、Weaviate、Pinecone 等)几乎都实现了 HNSW。

原文地址:https://ningg.top/ai-series-ann-intro/
微信公众号 ningg, 联系我

同类文章:

微信搜索: 公众号 ningg, 联系我, 交个朋友.

Top