模型层 开放阅读

ANN 检索

Approximate Nearest Neighbor Search

概念 ID
approximate-nearest-neighbor-search
更新时间
2026-05-29
来源数量
待补

ANN 检索(Approximate Nearest Neighbor Search)

3 秒看懂

一句话定义: 在高维向量空间中,以微小精度损失换取数量级速度提升的”找最近邻”技术——它是 RAG、推荐系统、图像搜索等所有”向量化检索”场景的底层引擎。

核心取舍: 不求 100% 精确最近邻,而是在召回率(Recall)与查询延迟(Latency)/内存占用之间做工程化平衡。

3 分钟产业解释

为什么这件事重要?

大语言模型(LLM)时代,几乎所有信息检索正在经历范式迁移:从 关键词匹配(BM25/TF-IDF) 走向 语义向量检索。用户的一句自然语言被编码为高维向量(如 768 维、1024 维、甚至更高),系统需要在数亿甚至数十亿候选向量中快速找到最相似的若干条——这就是 ANN 的用武之地。

没有 ANN,RAG(检索增强生成)将不可用。 当一个企业知识库有 10 亿条文档片段(embedding 向量),暴力计算所有距离(Brute-Force)的计算量是 O(N×D),对 10 亿条数据完全不可接受。ANN 通过建立索引结构,将搜索复杂度降低到近似 O(log N) 或亚线性水平,使得毫秒级响应成为可能。

产业位置

用户查询
  │
  ▼
Embedding 模型(文本→向量)  ← 模型层(OpenAI / BGE / Jina 等)
  │
  ▼
ANN 检索引擎(向量→Top-K 结果)  ← 基础设施层(本页核心)
  │
  ▼
LLM 推理(注入上下文生成回答)  ← 应用层

ANN 位于整个 AI 应用栈的 基础设施中间层——它既不生产向量,也不消费结果,但它是连接两者的瓶颈。

15 分钟专家深入

核心问题定义

给定一个查询向量 q ∈ ℝᴰ,和一个包含 N 个向量的集合 S = {x₁, x₂, …, x_N},精确最近邻搜索要求找到:

x* = argmin_{x ∈ S} ||q - x||₂

当 D 很大(≥128)且 N 很大(≥10⁶)时,精确搜索面临 维度灾难(Curse of Dimensionality):基于空间划分的传统方法(如 KD-Tree)退化为接近暴力搜索的性能。

ANN 的核心思想:放弃精确性,构建近似索引结构,以 (1+ε)-近似或概率性保证换取亚线性搜索时间。

三大算法范式

ANN 算法可归为三大类(实际系统常混合使用):

1. 基于图的方法(Graph-Based)

代表:HNSW(Hierarchical Navigable Small World)

  • 核心思想:构建多层小世界图,上层稀疏用于长距离跳跃,下层稠密用于精确搜索
  • 搜索过程类似”高速公路→国道→街道”的逐级导航
  • 查询复杂度:O(log N)(近似)
  • 内存开销:较高(需要存储图的邻接表)
  • 召回率通常最优,但构建时间和内存成本也最高

2. 基于空间划分的方法(Partitioning / Clustering)

代表:IVF(Inverted File Index),及其变体 IVF-PQ、IVF-HNSW

  • 核心思想:先用 k-means 将向量空间划分为若干聚类(Voronoi cells),查询时只在最近的若干个聚类中搜索
  • 可与量化压缩(PQ)结合,大幅减少内存
  • 参数 nprobe(查询时探测的聚类数量)直接控制精度-速度权衡

3. 基于哈希的方法(Locality-Sensitive Hashing, LSH)

代表:LSHAnnoy(Spotify)

  • 核心思想:设计特殊哈希函数,使相近向量更可能被哈希到同一桶中
  • 理论保证较完善(可证明的近似比),但实践中内存效率和召回率通常不如 HNSW/IVF-PQ
  • Annoy 通过随机投影树实现,适合静态数据集、内存映射友好

混合与变体

组合策略说明
IVF-PQ先聚类再对残差做乘积量化,FAISS 的经典配置
HNSW + PQ图导航 + 向量压缩,兼顾速度与内存
ScaNN(Google)各向异性量化,在特定数据分布下精度更优
DiskANN(Microsoft)基于 SSD 的图索引,支持超大规模但降低内存需求
SPANN稀疏聚类头在内存 + 候选在磁盘,类似 DiskANN 思路

技术原理(深度机制)

HNSW 工作原理

Layer 2 (最稀疏):  A ──── D
                   │      │
Layer 1 (中间):    A ── B ── D ── E
                   │    │   │    │
Layer 0 (最稠密):  A ─ B ─ C ─ D ─ E ─ F ─ G

构建过程:

  1. 每个新向量随机分配一个最高层 l(通常按指数分布,P(l) ∝ m_L^{-l})
  2. 从最高层开始,使用贪心搜索在当前层找到最近邻
  3. 下降到下一层,继续贪心搜索并建立双向连接
  4. 每个节点在第 0 层最多连接 M 个邻居,上层最多连接 M/2 个邻居(第 0 层连接数较多,上层连接数较少)

搜索过程:

  1. 从最上层的入口点开始
  2. 在当前层贪心搜索,找到局部最优
  3. 将该点作为下一层的入口,重复
  4. 在第 0 层使用 beam search(维护 ef 个候选),返回最终 Top-K

关键参数及其影响:

参数含义调大效果调小效果
M每层最大连接数↑ 召回率、↑ 内存、↑ 构建时间↓ 召回率、↓ 内存
efConstruction构建时 beam width↑ 索引质量、↑ 构建时间↓ 索引质量
efSearch查询时 beam width↑ 召回率、↑ 查询延迟↓ 召回率、↓ 延迟

IVF-PQ 工作原理

[原始向量 x ∈ ℝ^D]
        │
        ▼
  [IVF: 找最近聚类中心 c_i]          ← 粗量化,缩小搜索范围
        │
        ▼
  [残差 r = x - c_i]                 ← 只存储残差
        │
        ▼
  [PQ: 将 r 切分为 M 个子向量]       ← 乘积量化压缩
        │  每个子向量独立做 k-means (k=256)
        ▼
  [存储: 每个子向量用 1 字节编码]     ← D 维向量压缩为 M 字节

乘积量化(Product Quantization)核心:

  • 将 D 维向量切分为 M 个子空间(每个子空间 D/M 维)
  • 每个子空间独立做 k-means(k=256,用 8 bit 编码)
  • 原始向量:D × 4 字节(float32)→ 压缩后:M 字节
  • 距离计算:预计算查询向量子空间与各码本的距离表,查表求和

内存占用估算示例:

  • 10 亿向量,128 维,float32 → 原始:10⁹ × 128 × 4B ≈ 486 GB
  • IVF-PQ (M=64, 8bit) → 10⁹ × 64B ≈ 59.6 GB(含聚类中心和残差编码)
  • 加 IVF 索引头约额外 5-10%(取决于聚类数)

距离度量

度量公式适用场景
L2(欧氏距离)||a-b||₂通用,图像特征
余弦相似度(a·b)/(||a||·||b||)文本 embedding(归一化后等价于内积)
内积a·b归一化后与余弦等价
汉明距离不同比特数二值哈希向量

实践提示: 主流 text embedding 模型(如 OpenAI text-embedding-3、BGE、Jina)输出的向量通常已归一化,此时 L2、余弦、内积三者的排序结果等价。但索引构建时仍需正确指定度量类型。

精度-速度权衡量化(概念级)

召回率 (Recall@10)
  1.0 ─────────────────────────────── *  (Brute Force, 延迟极高)
       │                        *
  0.95 │                   * HNSW (ef=256)
       │              *
  0.90 │         * IVF-PQ (nprobe=64)
       │      *
  0.85 │   * IVF (nprobe=16)
       │  *
  0.80 │ * LSH
       └──────────────────────────────→ QPS (每秒查询数)
          低                              高

上图为定性趋势图,具体数值取决于数据集维度、分布和硬件环境。


技术演进史

时期里程碑意义
1998LSH 理论奠基(Indyk & Motwani, STOC)首次给出亚线性时间 ANN 的理论保证
2000sKD-Tree / Ball-Tree 用于低维维度灾难限制了在高维的应用
2006Product Quantization 提出(Jégou et al.)向量压缩技术突破,使得大规模向量存储可行
2013Annoy 发布(Spotify)轻量级随机投影树,适合嵌入式场景
2014Faiss 启动(Facebook/Meta AI)工业级 ANN 库,GPU 加速先驱
2016HNSW 论文发表(Malkov & Yashunin)图方法在实践中全面超越 LSH 和 IVF
2020ScaNN 发布(Google Research)各向异性量化,在高维文本场景表现优异
2019Milvus 启动(Zilliz)云原生向量数据库,ANN 作为核心引擎
2020DiskANN 发布(Microsoft Research)SSD-based 图索引,十亿级向量低内存检索
2021FAISS 1.7+ 大规模 GPU 支持GPU IVF-PQ 成为大规模生产方案
2022向量数据库赛道爆发(Pinecone / Weaviate / Qdrant 融资)ANN 从学术概念变为商业基础设施
2023RAG 爆发,ANN 需求指数增长成为 LLM 应用栈必选组件
2024NVIDIA cuVS / RAPIDS 加速、专用硬件(如 Pinecone 推理芯片探索)ANN 从软件优化走向硬件定制
2025多模态 embedding + 长上下文 LLM 竞争下,“是否还需要 ANN” 出现讨论但窗口限制和成本仍使 ANN 不可替代

技术路线对比

主流 ANN 算法量化对比

维度HNSWIVF-PQLSHScaNNDiskANN
数据结构多层图倒排+量化哈希表各向异性量化索引图索引 (SSD-backed)
召回率@10 (典型)极高(≥0.98)高(0.90-0.97)中(0.80-0.92)高(0.93-0.97)高(0.93-0.97)
查询延迟低-中中(SSD IO)
内存占用/向量高(~M×连接数×指针)低(M bytes)低-中极低(仅图结构在内存)
构建时间
动态增删支持(有碎片)需重建聚类较好需重建支持(惰性删除)
GPU 加速有限非常友好友好友好不太友好
十亿级规模内存成本高可行内存成本高可行友好(SSD)
代表实现hnswlib, FAISSFAISS, MilvusAnnoyScaNN 库DiskANN

主流向量数据库/引擎对比

维度FAISSMilvusPineconeQdrantWeaviateChroma
定位算法库分布式向量DB全托管 SaaS向量DB向量DB嵌入式向量DB
开源是(MIT-like)是(Apache 2.0)是(Apache 2.0)是(BSD-3)是(Apache 2.0)
ANN 算法HNSW/IVF-PQ/ScaNN等多种(HNSW/IVF/DiskANN)自研HNSWHNSW主要基于 FAISS/Annoy
分布式否(单机库)是(托管)
标量过滤需手动实现原生支持原生支持原生支持原生支持有限
适用规模研究/嵌入/自定义大规模生产中大规模中等规模中等规模原型/小规模
语言C++/PythonGo/C++托管RustGoPython

上下游

上游(ANN 依赖什么)

环节关键依赖说明
Embedding 模型文本/图像/多模态编码器输出向量的质量直接决定 ANN 检索效果(垃圾进垃圾出)
算力CPU(AVX-512 指令集)、GPU(CUDA)、内存带宽ANN 查询是内存带宽密集型,不是计算密集型
存储DRAM(主存)、NVMe SSD(DiskANN 等)内存容量决定可索引的向量规模
向量数据业务系统产出的文档/图片/行为数据数据清洗和分块(chunking)策略影响检索质量

下游(ANN 服务什么)

场景典型延迟要求向量规模
RAG / LLM 辅助检索10-100ms10⁶ - 10⁹
电商/内容推荐1-50ms10⁷ - 10¹⁰
图片/视频搜索50-500ms10⁶ - 10⁹
广告定向 / 人群扩量5-20ms10⁸ - 10¹⁰
多模态搜索10-200ms10⁶ - 10⁸
欺诈检测 / 实时匹配1-10ms10⁷ - 10⁹

关键指标

指标定义生产环境典型要求
Recall@K在 Top-K 返回结果中,包含真正 K 近邻的比例≥ 0.95(RAG)/ ≥ 0.90(推荐)
QPS(Queries Per Second)单节点每秒处理查询数1,000 - 100,000+(取决于硬件和索引)
P99 延迟99% 请求的响应时间< 50ms(实时场景)
内存/向量单个向量在索引中占用的内存HNSW: ~400-1000 bytes(取决于向量维度和图连接数,128维float32约为512-800 bytes); IVF-PQ(M=64): ~64 bytes
构建时间从原始向量到可查询索引的时间10 亿向量:数小时至数天(取决于算法和硬件)
增量更新能力插入/删除单条向量的代价HNSW: O(log N) 插入; IVF-PQ: 需批量重建
GPU 利用率GPU 上 ANN 查询的计算效率FAISS GPU IVF-PQ 在合理 batch size 下可达较高利用率

供需与市场数据

需求侧驱动

  • RAG 市场: 全球 RAG 相关基础设施市场仍处于早期阶段。多家行业分析机构对向量数据库市场的估算差异较大,主流估算范围为 2025 年约 10-25 亿美元 [行业估算,口径不一],2030 年可能达 50-100 亿美元级别 [行业估算]。
  • 企业采用: 据各向量数据库厂商公开披露,主流产品(Milvus/Zilliz、Pinecone、Qdrant、Weaviate)的注册用户/客户数在 2023-2024 年经历了数倍增长。
  • 数据规模: 单个企业知识库的向量规模从百万级向十亿级攀升,驱动对大规模 ANN 方案的需求。

供给侧格局

玩家类型代表模式
开源向量数据库Milvus, Qdrant, Weaviate, Chroma开源+云服务
全托管 SaaSPinecone, Zilliz Cloud按用量付费
传统数据库扩展PostgreSQL + pgvector, Elasticsearch + vector search现有基础设施嫁接
云厂商内置Azure AI Search, AWS OpenSearch k-NN, GCP Vector Search平台生态绑定
底层算法库FAISS (Meta), ScaNN (Google), cuVS (NVIDIA)开源库/SDK

融资与估值参考 [公开信息]

公司最新已知轮次估值(如有公开)备注
Pinecone2023 年 B 轮 $100M~$750M(2023 估值)全托管 SaaS 模式
Zilliz (Milvus)2022 年 B+ 轮 $60M未充分披露开源+云服务
Weaviate2023 年 B 轮 $50M未充分披露开源+云服务
Qdrant2024 年种子/A 轮未充分披露Rust 实现,性能导向
Chroma2023 年种子轮 $18M未充分披露开发者友好,嵌入式

注:以上融资信息来自各公司公开宣布,估值数字为当时媒体报道,可能与当前情况有差异。


代表公司与资本映射

概念-产业链-上市公司映射

ANN 检索产业链
│
├── 算法/库层
│   ├── FAISS (Meta / META) ← Meta 内部使用并向开源贡献
│   ├── ScaNN (Google / GOOGL) ← Google Cloud Vector Search 底层
│   └── cuVS/RAPIDS (NVIDIA / NVDA) ← GPU 加速 ANN
│
├── 向量数据库层
│   ├── Milvus / Zilliz (未上市)
│   ├── Pinecone (未上市)
│   ├── Weaviate (未上市)
│   ├── Qdrant (未上市)
│   ├── pgvector → PostgreSQL (微软 Azure Cosmos DB for PostgreSQL 等)
│   └── Elasticsearch vector search (Elastic / ESTC)
│
├── 云平台层(ANN 作为服务提供)
│   ├── Azure AI Search (微软 / MSFT)
│   ├── AWS OpenSearch k-NN (亚马逊 / AMZN)
│   ├── GCP Vector Search (Google / GOOGL)
│   └── 阿里云 AnalyticDB 向量检索 (阿里巴巴 / BABA)
│
├── 硬件/算力层
│   ├── GPU (NVIDIA / NVDA) ← ANN 是内存带宽密集型
│   ├── 高带宽内存 HBM (SK Hynix, Samsung, Micron) ← 影响 ANN 吞吐
│   └── NVMe SSD (Samsung, Western Digital 等) ← DiskANN 依赖
│
└── 应用层(ANN 消费者)
    ├── RAG 应用(各 LLM 厂商 / SaaS 公司)
    ├── 推荐系统(字节跳动/美团/Netflix 等)
    └── 广告系统(Google/Meta/百度等)

对上市公司的直接影响:

公司与 ANN 的关系受益逻辑
NVIDIA (NVDA)GPU 是大规模 ANN 的主要加速器AI 推理/数据处理需求 → GPU 销量
Meta (META)FAISS 维护者,内部大规模使用信息流推荐效率提升 → 广告收入
Google (GOOGL)ScaNN 开发者,GCP Vector Search 提供者云服务收入 + 搜索质量提升
Microsoft (MSFT)DiskANN 开发者,Azure AI SearchAzure AI 生态粘性
Amazon (AMZN)OpenSearch k-NN,Bedrock 知识库AWS AI 服务收入
Elastic (ESTC)Elasticsearch vector search搜索引擎向 AI 搜索转型

投资逻辑

核心投资主题

1. ANN 是 AI 应用的”水电煤”

  • 每次 RAG 查询都需要一次 ANN 检索,ANN 的调用量与 AI 应用量正相关
  • AI 应用渗透率提升 → ANN 基础设施需求同步增长

2. 向量数据库是 ANN 的主要载体,但格局未定

  • 开源 vs SaaS 的竞争仍在进行中(类似早期的关系数据库市场)
  • 传统数据库厂商(PostgreSQL/ES/Oracle)也在快速集成向量检索能力,可能挤压独立向量数据库的生存空间
  • 独立向量数据库公司需要在性能、易用性、企业特性上持续拉开差距

3. “数据库内置向量检索”可能是终局

  • 长期看,向量检索可能成为数据库的标配能力(如 pgvector、Elasticsearch),而非独立产品
  • 类似全文搜索:最初是独立产品(Lucene/Solr),后来被各类数据库内置
  • 如果这一判断成立,独立向量数据库公司需要转型为”AI-native 数据平台”才能生存

4. 硬件加速是差异化方向

  • ANN 是内存带宽密集型任务,GPU/NPU 加速效果显著
  • 定制化硬件(如 HBM 带宽优化、专用 ANN 加速器)可能是下一个差异化点
  • NVIDIA cuVS/RAPIDS 是目前最成熟的 GPU ANN 方案

风险因素

风险说明
LLM 长上下文替代随着上下文窗口扩大(1M+ tokens),部分场景可能用”全量输入”替代检索
嵌入质量瓶颈ANN 的效果上限取决于 embedding 模型质量,而非 ANN 本身
开源侵蚀商业价值FAISS、Milvus 等开源方案已非常成熟,SaaS 溢价空间有限
行业整合大云厂商可能通过免费集成压缩独立厂商空间

常见误读纠偏

❌ 误读 1:“ANN 总是比暴力搜索差,生产环境应该用精确搜索”

纠偏: 在高维(D ≥ 64)大规模(N ≥ 10⁶)场景下,ANN 的 Recall@10 可以达到 0.95-0.99+,而延迟降低 100-1000 倍。暴力搜索在十亿级数据上需要数秒甚至数分钟,完全不可用于实时服务。绝大多数生产系统使用 ANN,精度损失对下游 LLM 生成质量的影响微乎其微。

❌ 误读 2:“向量数据库 = ANN 索引,有了 FAISS 就不需要向量数据库”

纠偏: ANN 索引只是向量数据库的核心组件之一。生产环境还需要:持久化存储元数据过滤(如”只在 2024 年后的文档中检索”)、多租户隔离分布式扩展CRUD 操作访问控制等。FAISS 是算法库,不是数据库。用裸 FAISS 搭建生产系统需要大量工程工作。

❌ 误读 3:“HNSW 在所有场景下都是最优的”

纠偏: HNSW 在中等规模(<1 亿向量)、内存充足、追求最高召回率的场景下确实表现优异。但在以下场景,其他方案更优:

  • 超大规模 + 内存受限: IVF-PQ 或 DiskANN 更经济
  • 需要频繁重建索引: IVF 的构建成本远低于 HNSW
  • 纯批量查询(非实时): IVF-PQ + GPU 在高吞吐场景下可能更有优势
  • SSD 为主的基础设施: DiskANN 专为此设计

❌ 误读 4:“余弦距离和 L2 距离在 ANN 中是等价的”

纠偏: 仅当所有向量(包括查询和库中向量)都经过 L2 归一化后,余弦距离排序才与 L2 距离排序等价(且与内积排序等价)。如果向量未归一化,三者结果不同。实际使用中必须确保索引构建时的度量类型与 embedding 模型的设计一致。


学习路径

入门(2-4 小时)

  1. 阅读 Pinecone 的 “What is ANN?” 系列博客(概念入门)
  2. 用 FAISS 官方 tutorial 跑通一个最基本的 IVF-PQ / HNSW 示例
  3. 理解 Recall、QPS、内存三者之间的权衡

进阶(1-2 周)

  1. 精读 HNSW 原始论文:Malkov & Yashunin, “Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs” (2016/2018 TPAMI)
  2. 精读 IVF-PQ 相关论文:Jégou et al., “Product Quantization for Nearest Neighbor Search” (2011 TPAMI)
  3. 用 FAISS benchmark 工具,对不同索引类型在自己的数据集上跑 Recall-Latency 曲线
  4. 阅读 FAISS 的 Wiki 和 tuning guide

高级(持续跟踪)

  1. 阅读 DiskANN 论文:Subramanya et al., “DiskANN: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node” (NeurIPS 2019)
  2. 了解 ScaNN 的各向异性量化原理:Guo et al., “Accelerating Large-Scale Inference with Anisotropic Vector Quantization” (2020)
  3. 跟踪 ANN-Benchmarks(ann-benchmarks.com)的最新排行榜
  4. 关注 NVIDIA cuVS / RAPIDS 的 GPU ANN 进展
  5. 了解混合检索(Hybrid Search):向量检索 + BM25 的融合排序(RRF / 加权融合)

一句话总结

ANN 检索是 AI 应用从”玩具”走向”生产”的关键基础设施——它用微小的精度折损,让十亿级语义检索从”不可行”变为”毫秒级响应”,是 RAG、推荐、搜索等所有向量化 AI 应用的不可替代的底层引擎。


延伸阅读与来源

学术论文

  1. Malkov, Y. A., & Yashunin, D. A. (2018). Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs. IEEE TPAMI.
  2. Jégou, H., Douze, M., & Schmid, C. (2011). Product Quantization for Nearest Neighbor Search. IEEE TPAMI.
  3. Indyk, P., & Motwani, R. (1998). Approximate Nearest Neighbors: Towards Removing the Curse of Dimensionality. STOC.
  4. Subramanya, S. J., et al. (2019). DiskANN: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node. NeurIPS.
  5. Guo, R., et al. (2020). Accelerating Large-Scale Inference with Anisotropic Vector Quantization. ICML.

开源项目与工具

产业

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型