背景与边界
索引(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 GB;GPU 非必需 | 建倒排:约 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 RRF;ranx / PyTerrier |
计算轻;内存随候选并集增大 | 融合本身 毫秒级;主要成本在各通道前序检索 |