RAG:索引召回框架概述

背景与边界

索引(Indexing)与召回(Retrieval)强耦合:索引方式决定可检索信号,召回策略决定信号利用方式。

要完成的工作

  • 输入:标准 Chunk、元数据与查询请求。
  • 处理:索引构建(dense/sparse/graph/multimodal)与召回编排(single/hybrid/router)。
  • 输出:候选文档集(含得分、通道、解释)。

实现目标

  • 高召回、高稳定、低时延、可解释。

阶段指标

评测本阶段时冻结切分结果与生成提示,只改索引形态与召回路径。

段末注释:精确率@k(Precision at k,Precision@k) = 前 $k$ 条中相关条数占比;平均倒数排名(Mean Reciprocal Rank,MRR) = 第一条相关结果排名的倒数再对查询平均;归一化折损累计增益(Normalized Discounted Cumulative Gain,nDCG) = 按位置折损的排序质量,相对理想排序归一化。

召回率@k

  • 含义:生成窗口看到证据的前提;漏召回无法被下游补回(除非再检索)。
  • 计算:金标准相关集合 $R_q$,本检索器前 $k$ 条 $T_k(q)$,
    $$
    \mathrm{Recall}@k=\frac{1}{|Q|}\sum_{q\in Q}\frac{|R_q\cap T_k(q)|}{|R_q|}
    $$
  • 适配:漏检敏感(基因名、试剂、多条件方法);定 top_k 下限。
  • 不适配:已召回但排序很差——Recall 仍高,需看 nDCG / MRR。

精确率@k

  • 含义:前 $k$ 条里有多少是真相关,对应噪声占比
    $$
    \mathrm{Precision}@k=\frac{|R_q\cap T_k(q)|}{k}
    $$
  • 适配:无重排的 Naive;上下文会被弱相关段带偏。
  • 不适配:后面必接 Cross-encoder 精排时,召回阶段可容忍低 Precision、优先 Recall。

平均倒数排名

  • 含义:第一条相关结果有多靠前。单答案事实问句很敏感。
    $$
    \mathrm{MRR}=\frac{1}{|Q|}\sum_{q}\frac{1}{\mathrm{rank}_q}
    $$
    $\mathrm{rank}_q=\infty$ 时该项为 $0$。
  • 适配:单一事实(「上限/剂量是多少」);相关段落通常只有 1~2 段。
  • 不适配:需要多段拼齐的方法对比/综述,MRR 不惩罚「第二、第三条也很重要」。

nDCG@k

  • 含义:有分级相关(完全/部分/无关)时的排序质量。
    $$
    \mathrm{DCG}@k=\sum_{i=1}^{k}\frac{rel_i}{\log_2(i+1)},\quad
    \mathrm{nDCG}@k=\frac{\mathrm{DCG}@k}{\mathrm{IDCG}@k}
    $$
  • 适配:ColBERT、Hybrid、Fusion 比高低;部分相关段落也有用。
  • 不适配:只有二值标注且每问仅 1 条金标准——与 MRR 高度同向,不必双报。

主要难点

  • 语义匹配与关键词匹配的权衡。
  • 多通道融合后的去重、归一化、校准。
  • 跨模态与长尾术语一致性问题。

成熟解决方案

  • Hybrid 检索(BM25 + dense + Rerank)。
  • Sparse/Boolean 精确过滤。
  • ColBERT 高精度 token 匹配。
  • Query Rewrite 与 Retrieval Router。
  • Graph / Multimodal 专项索引。

二级方法对比(含 100 篇生物学文献量级)

假设:约 100 篇生物学 PDF(约 10–15 页/篇),经切分后约 3k–8k chunks(与 chunk 大小强相关);离线建索引 + 抽样查询评测;硬件参考 单卡 A10 24GB + 32GB RAM。下表为量级估算

二级方法 适用范围 特点 主流实现框架 100 篇文献·资源消耗(估算) 100 篇文献·时间消耗(估算)
Naive RAG POC、小规模内部库 单向量 + top-k,链路最短 FAISS / Qdrant / Milvus + bge-m3 或 e5 嵌入阶段 GPU 8–12 GB 峰值;向量索引磁盘 约 1–4 GB 仅嵌入+建 HNSW:约 0.3–1.2 GPU·h
Advanced RAG 高准企业问答 多查询/多路召回 + 重排 + 可选压缩 LlamaIndex / Haystack 流水线(改写+多路+重排) 多模型叠加,GPU 16–24 GB;磁盘 3–8 GB 建库同量级 Naive;单次查询延迟常为 Naive 的 2–6×
Hybrid RAG 通用企业库、术语+语义并存 BM25 + dense 互补 OpenSearch / Elasticsearch hybrid,或 Weaviate / Milvus 稀疏+稠密 倒排 + 向量,磁盘 约 2–6 GB;GPU 用于 dense 双索引构建:约 0.6–2 GPU·h(含 BM25)
Boolean Retrieval 元数据强约束(物种、期刊、年份) 标注/词项硬过滤,再在小集合上语义;非 ES 特有 ES filter / 向量库 payload / SQL WHERE 倒排为主,内存 4–12 GBGPU 非必需 建倒排:约 5–30 min;适合作前置筛
Sparse Vector 术语密集、需可解释权重 SPLADE 等稀疏语义,点积检索 SPLADE + Pyserini;ES learned sparse GPU 12–16 GB;稀疏索引 约 3–7 GB 编码+建库:约 0.8–2.5 GPU·h
ColBERT 高精度语义、段落级对齐 late interaction(MaxSim),索引大 RAGatouille / Stanford colbert-ai;Vespa late interaction GPU 16–24 GB;ColBERT 索引常 8–25 GB 建库:约 2–8 GPU·h(与 token 截断策略相关)
Graph RAG 基因/通路/引用关系、多跳问题 实体关系子图 + 文本回填 生产综述:Microsoft GraphRAG;轻量:LightRAG + Neo4j 图存储 2–10 GB;实体抽取 额外 NLP 资源 建图:约 5–25 CPU·h(100 篇可到数十小时若细粒度 IE)
Multimodal RAG 电镜/凝胶图、机制图、附表 图文联合编码与检索 SigLIP/CLIP 向量库 + Qwen2.5-VL / LlamaIndex 多模检索 GPU 24–48 GB 常见;多模索引 显著大于 纯文本 图像/图编码 + 索引:约 4–14 GPU·h
Query Rewrite 短查询、口语、缩写 多查询扩展后再合并召回 LangChain query transform;LlamaIndex HyDE 改写侧 小模型/API;索引体量同底库 在线:每问 +50–300 ms(视改写条数);离线建库不变
Retrieval Router 查询类型差异大(事实 vs 关系) 先路由再选检索器,降平均成本 LlamaIndex RouterRetriever;LangChain 路由链 路由模型 轻量;需维护多路索引 路由开销 约 1–8 ms/问;建库不变
Fusion 多通道结果需稳定融合 RRF/分数校准,与通道排名强相关 Elasticsearch RRFranx / PyTerrier 计算轻;内存随候选并集增大 融合本身 毫秒级;主要成本在各通道前序检索

与二级文档映射

-------------本文结束感谢您的阅读-------------