知识库 / 模型增强
GitHub
← 模型增强

LAYER 05 / MODEL AUGMENTATION

RAG:检索、重排与证据

所属: 模型增强层。本页边界: 怎样在生成前选择外部证据、完成召回与重排,并约束回答来源。

#核心公式

p(y∣q)≈∑d∈TopK⁡(q)pη(d∣q) pθ(y∣q,d) p(y\mid q) \approx \sum_{d\in\operatorname{TopK}(q)} p_\eta(d\mid q)\,p_\theta(y\mid q,d)

该式保留了 RAG 的两个核心部件:检索器 pη(d∣q)p_\eta(d\mid q) 决定哪些证据进入候选,生成器 pθ(y∣q,d)p_\theta(y\mid q,d) 决定怎样依据证据回答。检索概率高不等于证据一定正确,生成概率高也不等于回答一定受证据支持,因此召回质量与证据使用质量必须分开评测。

#符号说明

符号 含义 单位/条件
qq 用户问题或检索查询 文本/token 序列
dd 一条候选文档或 chunk 文本片段
TopK⁡(q)\operatorname{TopK}(q) 检索器为查询返回的前 kk 个候选集合 文档集合
pη(d∣q)p_\eta(d\mid q) 参数为 η\eta 的检索器对文档的相关性分布 [0,1][0,1]
pθ(y∣q,d)p_\theta(y\mid q,d) 参数为 θ\theta 的生成器在证据条件下的回答分布 概率分布
yy 最终生成回答 token 序列
e(q),e(d)e(q),e(d) 稠密检索中的查询与文档向量 Rm\mathbb R^m
s(q,d)s(q,d) 检索或重排相关性得分 标量
τ\tau 对比学习温度 正实数
C,SC,S 后文中的候选集合与已选证据集合 集合
t, f(t,d), IDF(t)t,\ f(t,d),\ \mathrm{IDF}(t) 查询词、词在文档中的频次、逆文档频率 token、次数、标量
k1, b, ∣d∣, ∣d∣‾k_1,\ b,\ \lvert d\rvert,\ \overline{\lvert d\rvert} BM25 的饱和参数、长度归一化参数、文档长度与平均文档长度 正实数、[0,1][0,1]、token 数、token 数
d+,dj−,md^+,d_j^-,m 正例文档、第 jj 个负例文档、负例数量 文档、文档、正整数
Lret\mathcal L_{\mathrm{ret}} 检索器的对比学习损失 非负标量
d∗, λd^*,\ \lambda MMR 当前选中的文档、相关性与冗余的权衡系数 文档、[0,1][0,1]

#技术要点

  • RAG 已从“检索-生成”两段式演进为 Agentic RAG:LLM Agent 主动分解任务、发出探索性查询,通过迭代检索精炼证据。
  • GraphRAG 通过实体-关系图建模知识,支持多跳推理。DCD-RAG 将索引成本降低 24.6%,检索性能提升 37.8%。
  • 多模态 RAG 将文本、图像和结构化数据统一为多模态知识图谱。M3RAG 在多跳多模态理解上超越现有方法 18.4%。
  • RAG 评估需要区分检索错误(正确文档不在候选集中)与生成错误(证据在上下文中但未被正确使用)。主张支持率要求对每条关键主张检查是否存在片段使其被证据蕴含。
  • 索引更新后若向量、原文和元数据不在同一版本,可能出现“检索到新向量,却引用旧文档”的错位。权限过滤应在候选产生前执行。

#原理与演进

#RAG 执行链

RAG 执行链为:qq → 初检候选 {d1,…,dk}\{d_1,\ldots,d_k\} → rerank → 基于 d1:kd_{1:k} 生成回答。

  1. 切块与索引:文档按语义和结构拆分;块太短丢上下文,太长则匹配不准并占用窗口。
  2. 召回:BM25 匹配稀有词和精确术语;稠密向量适合语义近似。混合检索覆盖两类信号。稠密检索原论文
  3. 重排:对少量候选做更细的 query–document 交互,换取更好的前 kk 排序。
  4. 生成:把选中的证据与问题放入上下文;模型仍可能误读或不按证据回答。RAG 原论文

#1. Agentic RAG:从被动检索到主动探索

传统 RAG 是“一次性”的:用户提问 → 检索 → 生成。Agentic RAG 改变了这一模式:LLM Agent 主动分解任务、发出探索性查询,通过迭代检索精炼证据。

#1.1 架构差异

维度 传统 RAG Agentic RAG
检索模式 单轮或固定轮次 迭代、自适应
任务处理 直接检索-生成 分解→检索→验证→再检索
错误处理 无自纠正机制 可识别证据不足并重新检索
适用场景 直接事实问题 多跳推理、复杂分析

#1.2 实证效果

Agentic-RAG 在 HotpotQA 上将上下文精确度从 0.1682 提升至 0.2462,在 ASQA 上将上下文精确度和召回率分别从 0.5045/0.2783 提升至 0.6522/0.4783。

SPARKLE 框架在三个域内和四个域外 QA 基准上,相比最先进的自适应 RAG 基线平均提升 9.17% 和 2.85%。

ChronoSeek 将时间优先的 Agentic RAG 与事件知识图谱结合,在 118K 图像和 33,471 个事件上实现亚 6ms 的 Neo4j 查询延迟,在 LSC'26 任务 3 中取得满分。

#2. GraphRAG 与多模态 RAG

#2.1 GraphRAG 的索引成本优化

GraphRAG 通过从文本构建知识图谱来增强 RAG 的多跳推理能力。但传统 GraphRAG 的索引成本高昂。DCD-RAG 基于动态图存储的增量式方法,将索引成本降低 24.6%,同时检索性能提升 37.8%。

Relink 在五个开放域 QA 基准上,相比领先的 GraphRAG 基线平均提升 5.4% 的 EM 和 5.2% 的 F1。

#2.2 多模态 RAG

M3RAG 编排多 Agent 推理用于多跳、多模态理解,在多跳任务上比现有方法提升最高 18.4%。

SCMRAG 2.0 将文本、图像和结构化数据统一为多模态知识图谱,支持跨模态推理。

Patho-AgenticRAG 面向病理学视觉语言模型,基于权威病理学教科书的页级嵌入构建数据库,在多模态 Agentic RAG 上显著优于现有方法。

#3. 两种错误要分开测

错误 判断方式 修复方向
没检到 正确文档不在候选中 改切块、召回与索引
检到了却答错 证据在上下文中但未被正确使用 改重排、上下文组织、模型或验证

评估召回可看 Recall@kk;回答还要检查“结论是否被引用段落支持”,不能只看有没有引用标记。检索库更新能改变可见证据,但不会改模型参数;文档访问权限应在检索阶段执行,而不是交给模型自行判断。

#4. RAG 评估的标准化

#4.1 评估框架

UniEval-RAG 提供统一的端到端 RAG 评估框架。Double-Bench 是大规模、多语言、多模态的评估系统,包含 3,276 份文档,能够对文档 RAG 系统的每个组件进行细粒度评估。

MIRAGE 是专门为 RAG 评估设计的 QA 数据集,引入噪声脆弱性、上下文可接受性、上下文不敏感性等新评估维度。

#4.2 评价矩阵

同时报告 Recall@kk、MRR/nDCG(排序)、上下文中答案覆盖率、回答正确率、主张支持率、引用准确率、权限越界率、延迟。检索测试集应有明确相关文档标注;生成答案测试须分辨“正确但无引用”和“有引用但错误”。

#5. 证据并不等于答案

情况 诊断 应对
检索命中但段落不含答案 匹配主题而非问题 query 重写、细粒度重排
多文档互相冲突 版本/时间不同 显示时间与来源,必要时拒绝单一结论
引用了文档但不支持结论 生成器过度推断 逐主张—证据核对
文档含恶意指令 数据越过指令边界 视作不可信文本;见安全

“有引用”只验证回答包含指针;证据支持要求对每条关键主张 cic_i 检查是否存在片段 djd_j 使 dj⊨cid_j\models c_i。自然语言蕴含判断自身也会错,重要任务应人工或规则复核。

#6. 自适应检索与迭代检索

始终检索会给简单问题带来延迟和噪声;按需检索可降低开销,却可能错误判断“无需检索”。单轮检索适合直接问题;复杂问题可能需分解子问题、逐轮检索与证据合并,但轮数增加会放大偏差和成本。

SeaRAG 通过陈述-实体自适应排序,在 TriviaQA 上比 Always Retrieve 提升最高 11.1%,同时将检索频率从 45.2% 降低。

路线:参数记忆回答(不可更新/不可溯源)→ 一次检索拼接(可能漏召回)→ 混合召回与重排(提升前 kk 质量)→ 引用核对与自适应检索(控制无证据生成)→ 多步证据搜索(覆盖复杂问题但成本更高)。

#7. 为什么 BM25 与稠密检索会互补

BM25 的简化得分为

BM25(q,d)=∑t∈qIDF(t)f(t,d)(k1+1)f(t,d)+k1(1−b+b∣d∣∣d∣‾). \mathrm{BM25}(q,d)=\sum_{t\in q}\mathrm{IDF}(t)\frac{f(t,d)(k_1+1)}{f(t,d)+k_1\left(1-b+b\frac{|d|}{\overline{|d|}}\right)}.

f(t,d)f(t,d) 是词频,∣d∣/∣d∣‾|d|/\overline{|d|} 调整长度,IDF 提高稀有词权重。它对精确设备号、缩写和数字敏感,但不会天然识别“变压器过热”与“绕组温升异常”的语义关联。

稠密检索用双编码器 eq(q),ed(d)e_q(q),e_d(d),通过对比损失提高正例分数、压低负例:

Lret=−log⁡exp⁡(s(q,d+)/τ)exp⁡(s(q,d+)/τ)+∑j=1mexp⁡(s(q,dj−)/τ). \mathcal L_{\mathrm{ret}}=-\log\frac{\exp(s(q,d^+)/\tau)}{\exp(s(q,d^+)/\tau)+\sum_{j=1}^{m}\exp(s(q,d_j^-)/\tau)}.

其效果高度依赖正负样本:如果“同主题但答案不同”的困难负例缺少,模型可能只学会粗主题匹配;若负例其实也含正确证据,训练标签会冲突。

#8. 召回越多为什么不一定越好

Recall@kk 常随 kk 增大,但上下文预算固定。过多相似或无关块会挤掉互补证据,也增加生成器误引用概率。候选去冗余可借最大边际相关性思想:

d∗=arg⁡max⁡d∈C∖S[λs(q,d)−(1−λ)max⁡d′∈Ss(d,d′)]. d^*=\arg\max_{d\in C\setminus S}\Big[\lambda s(q,d)-(1-\lambda)\max_{d'\in S}s(d,d')\Big].

第一项保证与问题相关,第二项惩罚与已选片段重复;但过度惩罚可能移除同一事实的必要佐证。多证据任务需要区分“冗余证据”与“互补证据”。

#9. 更新与权限的特殊难题

索引更新后,向量、原文和元数据若不在同一版本,可能出现“检索到新向量,却引用旧文档”的错位。删除文档时也需处理缓存与备份中的可见性。权限过滤应在候选产生前或至少进入重排/生成前执行,并确保模型无法通过相似片段绕过文档级 ACL。权限相关机制见安全。

原始资料: BM25;DPR;RAG;Self-RAG。

交叉阅读: 数据清洗决定索引文本是否忠于原文;长上下文决定证据进入窗口后能否被利用;Prompt负责证据组织;评测区分召回、答案和引用质量。

#原始资料

本页由仓库中的 Markdown 生成。具体技术结论请结合正文引用与实验条件理解。

输入关键词,探索整个知识库

↑ ↓ 选择 ↵ 打开36 篇笔记,一次搜索