欢迎来到「多跳 RAG 复杂推理」的世界。想象一位名叫小李的侦探接手了「仓库失窃案」:现场勘验报告写着「嫌疑人张三当晚出现在仓库附近」,可问题是——出现在附近就代表能进仓库吗?钥匙在谁手里?谁把钥匙给了他?答案散落在档案室好几份不同的卷宗里,任何一份单独读都拼不出真相。小李不会只翻一份档案就下结论。他会规划调查路线:先查什么、再问谁;随身带一本笔记本,把每一轮查到的线索记下来供下一步使用;走进死胡同时果断回头重查;最后在结案报告里,把「为什么锁定张三」的证据链一条条列给法官看。这套「侦探破案」的完整过程,就是多跳 RAG 复杂推理的生动写照。接下来的文章,我们将像跟着小李办案一样,把这份「侦探智慧」拆解给每一位 AI 从业者。
掌握多跳 RAG 复杂推理,你就能让 AI 从「翻文档的检索工具」升级为「会多步思考的推理专家」,在科研、法律、医疗等深度场景中真正独当一面。
可视化演示
动态演示多跳RAG复杂推理的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
多跳RAG复杂推理:多跳RA 多跳RAG复杂推理的架构与推理 跨文档因果链推导与多维度对比分 核心机制可视化 多跳RAG复杂推理整体架构与关键组件
多跳检索基础
侦探小李接手「仓库失窃案」后,先翻开了现场勘验档案,上面写着「嫌疑人张三案发当晚出现在仓库附近」。可问题是:出现在附近就代表能进仓库吗?钥匙在谁手里?谁把钥匙给了他?这些问题的答案根本不在第一份档案里,而是被拆散在好几个卷宗中。任何一份卷宗单独看都不完整——这就是让新手侦探头疼的「信息缺口」。
普通 RAG 就像只翻一份档案的新手侦探:问一句、查一次、答完收工。面对「张三怎么进的仓库」这种问题,第一次检索只能捞回「张三在仓库附近」这类片段,而「钥匙」「借出」「进入」等关键要素全在别的文档里。单跳检索会留下巨大的信息缺口。多跳检索则不同,它像侦探顺着线索连环追查:第一份卷宗里提到钥匙,就带着「钥匙」去查第二份卷宗;第二份提到李四,再带着「李四」去查第三份。每次「带着新线索重新检索」就是一跳。信息就是这样逐跳补齐的。
多跳 RAG 的核心思想,就是把复杂问题拆成多个子查询,逐跳填平信息缺口。这里的「跳」(hop)指「带着当前疑问去检索文档并提取线索」的完整过程,跳数就是检索轮次。跳数越多能覆盖的事实碎片越多,但每一跳也会带来噪声,所以目标是「用最少的跳覆盖最多的信息」。一个复杂问题需要的事实要素总量,减去单次检索能捕获的数量,就是缺口的大小:
侦探每翻完一个卷宗,就在本子上划掉一个待查项。多跳检索做的正是同一件事:用一次次的查询把信息缺口逐步填满,直到所有待查项打勾,案件才真正清晰起来。
- Q_facts(问题的事实碎片集)把复杂问题拆解成必须回答的小事实点,比如「谁进的仓库」要拆出「谁有钥匙」「谁在现场」「如何进入」。
- |Q_facts| 事实碎片总数竖线表示求集合大小,即答完这个问题总共需要多少个事实点。
- R_captured(单跳捕获的事实)一次检索能从文档中捞到的信息点数量。
- gap 信息缺口两者相减,得到的差值就是还缺多少信息。差值越大,需要的跳数越多。
推理路径规划
小李的办公桌上摊着一张白纸,画着人物关系网:张三、李四、王五……先查谁?是从张三的邻居们问起,把所有在场证人过一遍?还是盯住「钥匙」这条线一路追下去?调查顺序不同,破案效率天差地别。这份「排程表」就是侦探的推理路径规划。
多跳 RAG 同样面临「先检索什么、再检索什么」的选择。推理路径规划算法把「回答复杂问题」变成「在文档空间中寻找一条最优路径」:当前子问题检索到文档,从文档中抽出新线索,再变成下一跳的子查询。规划策略有两种典型:广度优先扩展,先铺开探索所有可能的新线索,确保不遗漏任何一个方向;深度优先扩展,抓住一条线索深挖到底,快速推进结论。实际系统还会用「路径代价」来指导选择——每一跳都能估算这条路有多「靠谱」,总代价最小的路径优先执行。这里的「靠谱」就由检索相关性来衡量:
小李会根据每条线的「性价比」决定今早先查谁:线索明确、证据多的优先,模棱两可的往后放。推理路径规划,就是 AI 版的「侦探排程表」。
- p 候选路径一条由 k 次检索跳转组成的完整推理路线,形如「问题 → 文档 → 新问题 → 新文档」。
- sim(q_i, d_i) 语义相似度第 i 跳的子问题和检索到的文档内容有多相关,取值在 0 到 1 之间。
- 1 - sim 不相关程度相似度越低,这一跳的「代价」越高,表示白跑一趟。
- Σ 累加把整条路径上所有跳的代价加总,规划器挑选代价最小的路径来走。
跨文档因果链
小李查了三份卷宗:A 卷说张三案发当晚在仓库附近;B 卷说仓库钥匙由李四保管;C 卷说李四上周把钥匙借给了张三。单看任何一份都没有定罪力,但按逻辑串起来,「在现场 → 有钥匙 → 能进仓库」的因果链立刻浮现。侦探的看家本领,就是把散落在不同卷宗里的证据编成一条因果链。
跨文档因果链推导,就是让模型识别不同文档中实体与事件之间的因果关系,并按「前因 → 后果」的顺序拼接成证据链。比如科研场景中,论文 P1 说「某蛋白磷酸化激活通路 X」,论文 P2 说「通路 X 抑制细胞凋亡」,跨文档一接,就能推断出一条全新的结论。时间线推理是其中最典型的特例:把各文档中的时间信息提取出来排序,还原事件发生的先后顺序。每一对相邻节点之间的关系强度,用 rel 来表示,表示两个证据互相佐证的程度。整条链的可信度,就是所有环节关系强度的乘积:
法官不怕链条长,就怕链条上有锈蚀的一环。跨文档因果链要做的,就是确保每一环都经得起推敲。
- e_i 事件/实体节点因果链上的每一环,例如案件里的「张三」「钥匙」「仓库」。
- → 因果方向箭头表示前因后果的连接方向,不能随意调换顺序。
- rel(e_i, e_{i+1}) 关系强度相邻两个节点之间的证据能互相支持的程度,取值 0 到 1。
- Π 连乘整条链的可信度等于所有环节强度相乘,任何一环接近 0,整条链都会显著贬值。
中间结论管理
小李随身带一本笔记本。每查完一个卷宗,他就把要点记下来:「张三当晚在现场」「钥匙在李四手里」「李四曾借钥匙给张三」。下一轮查证时,他翻着笔记决定下一步问谁。要是忘了记,回头就得重查一遍。这本笔记本,就是侦探的「中间结论管理」。
多跳 RAG 每完成一跳,都会产生一条中间结论。这条结论必须传给下一跳检索使用——作为新查询的背景信息,让下一轮检索更有针对性。但中间结论绝不能在上下文里无限堆积:全部塞进去会淹没重点、撑爆窗口。所以系统要做三件事:缓存中间结论供后续跳数读取;压缩上下文,每跳只提炼与目标问题最相关的实体和断言;去重合并,把多篇文档中重复的信息揉成一条。中间结论的更新就像旧笔记加新证据后重新整理:
笔记本的价值在于「该记的记、该扔的扔」。三年不整理的笔记和垃圾堆没有区别,中间结论管理就是那根「整理线」。
- c_{t-1} 上一跳中间结论侦探笔记本上已有的旧笔记,是前 t-1 跳积累的信息精华。
- d_t 当前文档第 t 跳新检索到的证据原文。
- ⊕ 拼接把旧笔记和新证据放在一起,表示「结合已有信息理解新信息」。
- compress 压缩去掉重复、提炼要点、删除无关细节,得到更新后的精简结论 c̃_t。
错误恢复纠偏
小李顺着「王五」这条线查了一个礼拜,突然发现王五当晚在市中心看电影,有监控为证。之前的推测全线崩塌。普通人可能就此卡住,老练的侦探却会平静地合上卷宗,把「王五」这条线划掉,回到上一个分支点改查「李四」。走错路不可怕,可怕的是不知道回头。
多跳 RAG 也会走错路:检索噪声、文档矛盾、路径发散都会让推理链偏离正轨。错误恢复与自我纠偏机制专门处理这类状况,包含三个环节。第一,错误检测:监控每一跳检索的置信度,也就是证据与当前结论的相关性强度,一旦分数骤降或证据间出现逻辑矛盾,就判定疑似走错。第二,回溯重规划:撤销错误路径的最后若干跳,把误导文档拉黑,回到分岔点改选其他方向。第三,停滞保护:连续多次回溯却没有进展时,果断终止这条推理链,避免陷入无限循环。是否回溯,取决于一条简单的分段决策:
划掉错误线索不是失败,而是成本最低的止损。有了纠偏机制,AI 才敢放手探索复杂路径——因为它知道自己永远不会被困死。
- conf(p) 路径置信度当前推理链综合可信度,由每跳的证据相关度累积而来。
- τ 阈值人为设定的可信度及格线,比如 0.6,代表「这条链还站得住」的最低标准。
- 分段决策高于阈值继续前进,低于阈值判定走错、触发回溯重规划。
推理可解释性
案子破了,小李走进法庭。法官问的第一句话永远是:「为什么锁定张三?证据呢?」小李必须把推理过程摊开:哪份档案说的、中间经过了哪几步、链条怎么连上的。他不能只丢下一句「他就是凶手」。可解释性,是侦探的职业道德,也是 AI 面向真实世界的入场券。
推理可解释性设计,就是让多跳 RAG 的推理过程变得透明。核心有四个方面。路径可视化:把「问题 → 第 1 跳 → 第 2 跳 → 答案」的检索路径画出来,用户一眼就能看出答案是怎么一步步走出来的。证据溯源:每个中间结论都绑定产生它的文档 ID 和原文片段,支持点击验证。推理日志:记录每一跳的子问题、候选文档、置信度评分和纠偏事件,生成完整履历。透明度设计:在界面与接口层面合理安排信息呈现,让非技术用户也能读懂。要量化每份证据对最终答案的贡献,可以用归因占比:
法官判案靠的是看得见的证据链,而不是侦探的直觉。可解释性,就是 AI 的证据链。
- score(d_i) 证据得分第 i 份文档在整条推理链中对最终答案的贡献评分。
- Σ 分母求和把所有证据的得分加总,用于归一化。
- attr(d_i) 归因占比第 i 份证据贡献分占总分的比例,占比越高,说明该证据越核心。
复杂推理场景
侦探不是只在凶案现场工作。小李今天帮科研团队梳理论文之间的因果脉络,明天帮律所整理判例与法条的推理链条,后天又坐在医院里帮医生把症状、检查、病史串成诊断线索。同一套「多跳推理」技能,只是换了不同的案卷。
多跳 RAG 的实际应用场景非常广泛。科研文献问答:问题「A 蛋白通过什么通路影响细胞凋亡?」需要跨多篇论文检索、拼接因果链,甚至比对不同论文的实验结论是否一致。法律案例推理:问题「该行为是否构成正当防卫?」需要把案件事实、法律构成要件、类似判例三个维度的证据串起来,逐条比对适用条件。医疗诊断辅助:问题「患者反复腹痛 3 个月可能是什么?」需要串联主诉、检查报告、病史线索,多跳推理逐步缩小诊断范围。多维度对比分析:比如「A 和 B 两套数据库哪个更适合我们?」需要从性能、成本、生态、学习曲线等多个维度分别检索、加权比较。多维对比的数学本质是加权相似度:
换一个案卷,换一套术语,内核永远是同一套侦探功夫:拆问题、找线索、串证据、给结论。
- A_k、B_k 维度分量两个对象在第 k 个维度上的特征表示,例如数据库 A 和 B 在「性能」维度上的评分。
- w_k 维度权重第 k 个维度的重要性,权重越大,该维度对最终结论的影响越大。
- 加权平均分子按权重累加各维度相似度,分母是权重总和,得到 0 到 1 的综合相似度。
专家推理能力
小李刚入行时,破案靠蛮力——把档案室从头到尾翻一遍。十年后,他扫一眼卷宗就能判断哪里有问题、哪条线索值得追、哪个结论违背常识。同样是查案,老侦探的推理质量高出一大截。差在哪里?
专家级推理能力有四个标志。逻辑一致性:最终结论与所有已采信的证据不矛盾、不自相矛盾。常识校验:结论如果与基本常识冲突,比如「当晚下大雨但现场没有湿脚印」,就会触发重新审视。全局视野:不只看单个证据,而是把全部中间结论放到全局视角检查是否完整、自洽。深度思考:愿意多跳几步、多查几个方向,而不是拿到一个检索结果就收工。多跳 RAG 的最终目标,正是把「检索增强」升级为「推理增强」,让 AI 从数据库搬运工进化为能跟人类专家对话的推理者。推理链的整体健康度,可以用自洽证据的占比来衡量:
小李的成长轨迹就是多跳 RAG 的发展路线:先学会多查几步,再学会查得聪明,最后学会像专家一样思考。
- E_total 全部证据整条推理链上用到的所有证据文档集合。
- E_consistent 自洽证据与其它证据在逻辑上不冲突的证据子集。
- 比值一致性自洽证据数量除以总证据数量,结果越接近 1,推理越可信。
AI 应用场景
科研文献问答助手
阶段:检索增强生成(多跳推理阶段)
解决的问题:科研人员调研时,最耗时的往往不是读单篇论文,而是把几十篇论文里的因果关系串起来。传统关键词搜索只能按篇返回,无法直接回答「A 蛋白通过什么通路抑制凋亡?」这类跨论文问题。多跳 RAG 把「A 蛋白 → 通路 X → 凋亡抑制」的因果链逐跳拼出来,并附上每一跳的论文出处。
具体案例:某药企研究员提问「CDK4/6 抑制剂在乳腺癌中的耐药机制是什么?」系统先检索「CDK4/6 + 乳腺癌」相关论文,得到线索「Rb 通路失活」,再带着「Rb 通路」检索耐药文献,拼接出「Rb 磷酸化异常 → 细胞周期再活化 → 耐药」的完整因果链,并输出每跳来源文献。研究员从「读几十篇论文」变成「验证一条推理链」。
法律案例推理辅助
阶段:推理路径规划 + 可解释性设计
解决的问题:律师检索法条和判例时,需要把「案件事实」「法律构成要件」「判例适用情况」三者对齐。传统检索返回一堆文档让律师自己读,多跳 RAG 自动规划「事实 → 要件 → 判例」的检索链,每跳更新中间结论,最终输出分析报告,并展示每一步的推理依据。
具体案例:某法律科技公司上线「正当防卫分析助手」。输入「当事人深夜入室被主人打伤,是否构成正当防卫?」系统第一跳检索案情事实要点,第二跳检索正当防卫的构成要件,第三跳匹配类似判例,最终输出带证据链的结论:「构成防卫过当」+ 对应法条 + 相似判例,供律师复核。
医疗诊断辅助
阶段:中间结论管理 + 错误恢复纠偏
解决的问题:医生面对复杂病例时,需要跨「主诉、检查报告、病史」多份资料推理,信息分散且可能互相矛盾。多跳 RAG 能串联「反复腹痛 → 体重下降 → 排除器质性病变 → 疑诊功能性肠病」的推理路径,在证据冲突时触发纠偏,避免误诊方向被带偏。
具体案例:某医院导诊系统收到患者「反复腹痛 3 个月」的主诉。系统第一跳检索腹痛的鉴别诊断框架,第二跳结合「体重下降」症状缩小范围到慢性炎症领域,第三跳匹配对应的检查建议并注明证据来源;当某条检查结果与主诉矛盾时,系统自动回溯重新检索。医生拿到的不只是建议,还有「为什么这么建议」的完整链路。
Python 演示
# -*- coding: utf-8 -*-"""多跳RAG复杂推理演示:检索-拼接-回溯的小型模拟器""" class MultiHopRAG: """用关键词命中模拟语义检索,演示多跳推理与回溯纠偏""" def __init__(self, docs, keywords, min_hits=1): self.docs = docs # 文档库 {id: 文本} self.keywords = keywords # 文档关键词 {id: [词]} self.min_hits = min_hits # 检索最低命中数 self.visited = set() # 已纳入推理链的文档 self.blacklist = set() # 已判为死路的文档 self.path = [] # 推理路径 self.backtrack_count = 0 # 纠偏次数 self.conclusion = "" # 中间结论 self.last_score = None # 上一跳置信度 def retrieve(self, conclusion): """模拟语义检索:按关键词命中数对文档打分排序""" scored = [] for did, kws in self.keywords.items(): if did in self.blacklist or did in self.visited: continue hits = sum(1 for kw in kws if kw in conclusion) if hits >= self.min_hits: scored.append((hits, did)) scored.sort(reverse=True) return scored def backtrack(self): """回溯纠偏:撤销最后一跳并对该文档拉黑""" if not self.path: return False hop, did, text = self.path.pop() self.blacklist.add(did) self.visited.discard(did) self.conclusion = self.conclusion.replace(text, "").strip() self.backtrack_count += 1 self.last_score = None return True def reason(self, question, max_hops=6): """多跳推理主循环:检索 -> 拼接 -> 死路回溯""" self.conclusion = question for hop in range(1, max_hops + 1): cands = self.retrieve(self.conclusion) if not cands: if not self.backtrack(): break continue score, did = cands[0] if self.last_score is not None and score < self.last_score: if len(cands) > 1: score, did = cands[1] self.backtrack_count += 1 else: self.backtrack() continue self.last_score = score self.visited.add(did) text = self.docs[did] self.path.append((hop, did, text)) self.conclusion += " " + text if "答案" in text: return text return "未找到答案" def run_case(question): """跑通一个多跳推理案例""" docs = { "d1": "嫌疑人张三案发当晚出现在仓库附近,说明张三有接近仓库的条件。", "d2": "仓库钥匙由管理员李四保管,取钥匙需要经过李四。", "d3": "李四案发前一周曾把钥匙借给张三,二人存在钥匙交接记录。", "d4": "王五案发当晚在市中心看电影,不具备作案时间。", "d5": "答案:张三通过李四交接的钥匙进入仓库,李四是关键中间人。", } keywords = { "d1": ["张三", "仓库", "案发"], "d2": ["钥匙", "李四", "保管"], "d3": ["钥匙", "李四", "张三"], "d4": ["案发", "张三", "王五"], "d5": ["钥匙", "李四", "答案"], } rag = MultiHopRAG(docs, keywords) answer = rag.reason(question) print("问题:", question) print("最终结论:", answer) print("推理路径:", [did for _, did, _ in rag.path]) print("回溯纠偏次数:", rag.backtrack_count) print("中间结论:", rag.conclusion) if __name__ == "__main__": run_case("张三如何进入仓库?")
hits = sum(1 for kw in kws if kw in conclusion)统计文档关键词在中间结论中的命中数,模拟语义检索的评分过程。if did in self.blacklist or did in self.visited:跳过已读文档与已判死路的文档,避免重复检索与循环。scored.sort(reverse=True)把候选按得分从高到低排序,让路径优先走向最相关的文档。score, did = cands[0]贪心选出当前最优候选作为本跳的选择。if self.last_score is not None and score < self.last_score:检测到本跳相关度比上一跳骤降,判定推理链可能走偏。self.backtrack()撤销最后一跳并把误导文档拉黑,回到岔路口重选路径。self.conclusion += " " + text把新检索的信息拼进中间结论,实现跨跳信息传递。if "答案" in text:命中终点文档则结束推理,返回最终结论。run_case("张三如何进入仓库?")运行一个完整的侦探式多跳推理案例。
常见误区
误区「多跳不就是多调几次检索接口嘛,第一次查不到就再查一次,撞运气呗。」
正解多跳检索是「有策略的推理」,不是随机重试。每一次跳转的查询词都由上一跳的中间结论精心构造,路径由规划算法选择,还会评估代价与置信度。盲目重试只是把同一批文档换种顺序再查一遍,信息缺口不会自动填上,反而浪费算力。
为何常见:「多次检索」和「多跳推理」表面都发起了多次查询,初学者容易只看到次数,忽略了跳与跳之间的信息传递这一真正关键的部分。
误区「推理多跳了,中间结论肯定要全留着,信息越多越准嘛。」
正解中间结论需要压缩与去重。全量拼接会让上下文越来越长、重点被稀释,模型在长文本中「迷失注意力」,噪声也会逐跳累积。优秀系统会提炼关键实体、删除重复信息、保留与目标最相关的证据,让「侦探笔记本」始终保持精炼。
为何常见:直觉上「信息 = 有用」,忽略了注意力资源有上限;笔记本不整理,记再多也等于没记。
误区「发现答案不对?把 prompt 换个说法再问一次不就行了。」
正解纠偏的核心是维护推理状态:知道当前走到哪、哪些方向已被否决(黑名单)、下一步该从哪个分岔点继续。重新问一遍会把已走的路径全部丢弃、从零开始,既浪费算力又可能重蹈覆辙。真正的自我纠偏是「带着错误记忆绕开它继续前进」。
为何常见:普通 LLM 对话中「重新提问」的体验深入人心,人们容易把无状态重试与有状态回溯混为一谈。
误区「我在答案下面放几个来源链接,不就可解释了吗?」
正解多跳推理的可解释性不止于「哪些文档被用到」,而是「推理路径本身可读」:第几跳得到什么结论、置信度多少、为什么回溯、最终答案如何由每一步推导而来。用户要验证的是「这条推理链合不合理」,而不只是「这段文字出自哪里」。
为何常见:单跳 RAG 中引用列表足以解释答案,人们容易把单跳经验平移到多跳场景,忽视了链式推理特有的验证需求。
误区「多跳嘛,跳得越多显得推理越深,10 跳肯定比 3 跳厉害。」
正解每多一跳就多一次引入噪声和错误累积的机会。推理链变长的同时,链式置信度连乘会让整体可信度不升反降。优秀系统的目标是找到最短的有效路径,而不是炫技式地拉长链条。跳数只是手段,准确率才是目的。
为何常见:把「深度」形式化,以为链条长等于智能,忽略了噪声累积与效率成本。
面试题
Q1. 单跳检索面对复杂问题时的核心局限是什么?
- A.检索速度太慢无法实时响应
- B.答案线索分散在多份文档中← 正确答案
- C.只能处理英文无法处理中文
- D.每次检索都会返回空结果
答案:B。复杂问题需要的事实碎片散落在多份文档里,单跳只查一次,信息缺口补不上。速度、语言能力、空结果都不是单跳的本质局限。
Q2. 多跳 RAG 中的「跳」最准确的理解是什么?
- A.模型神经网络的层数
- B.一次「检索-提取线索」的完整过程← 正确答案
- C.数据库中表的联接次数
- D.用户交替提问的轮数
答案:B。跳指带着当前疑问去检索文档并提取新线索的完整过程。网络的层数、表的联接、对话轮数都与「跳」无关。
Q3. 多跳 RAG 适合处理哪类问题?
- A.单文档关键词快速查找
- B.需要跨文档串联线索的复杂问题← 正确答案
- C.固定模板的天气查询
- D.只有唯一答案的常识问题
答案:B。多跳 RAG 的价值在于跨文档串联线索、填补信息缺口。单文档查找、模板查询和常识问答用单跳检索就足够了。
Q4. 广度优先与深度优先扩展的本质区别是什么?
- A.两者在实现方式上完全没有区别
- B.广度优先先铺开所有方向,深度优先沿一条线深挖← 正确答案
- C.一个消耗算力少一个消耗时间少
- D.一个返回更快一个结果更准
答案:B。广度优先是「先铺开再深入」,优先探索所有可能方向;深度优先是「沿一条线深挖到底」,优先快速推进单链。两者只是探索策略不同,没有绝对的优劣。
Q5. 因果链置信度采用「连乘」的直接后果是什么?
- A.链条越长置信度必然升高
- B.任意一环薄弱会显著拉低整条链可信度← 正确答案
- C.每个证据的权重都变得完全相等
- D.计算结果永远等于零
答案:B。连乘让每个环节都成为「乘数」,任何一个接近 0 都会大幅拉低整条链的置信度。这正是链式推理的直觉:一环锈蚀,全链危险。
Q6. 中间结论管理中「压缩」解决的核心问题是什么?
- A.文档格式不统一难以解析
- B.跨跳拼接导致上下文冗余超长← 正确答案
- C.检索服务响应速度太慢
- D.模型无法理解专业术语
答案:B。多跳推理会把每轮的中间结论拼进上下文,若不压缩,上下文会指数级膨胀、重点被稀释。压缩负责提炼关键信息、丢弃冗余,是跨跳传递可持续的前提。
Q7. 回溯纠偏机制的正确工作方式是什么?
- A.清空所有记录从头开始
- B.维护路径状态,撤销错误跳转并绕开重试← 正确答案
- C.无条件相信当前最高分的答案
- D.无限重试直到碰巧成功
答案:B。纠偏的关键是「有状态」:保留已走路径、将误导文档拉黑、回到分岔点重选。清空重来、盲目相信最高分、无限重试都会丢失推理进度或陷入循环。
Q8. 哪些场景适合使用多跳RAG?
- A.科研文献因果链问答← 正确答案
- B.法律案例推理← 正确答案
- C.单文档关键词查找
- D.医疗诊断辅助← 正确答案
答案:ABD。科研、法律、医疗都需要跨文档串联线索、多步推理。单文档关键词查找是单跳任务,用普通检索即可,不需要多跳。
Q9. 推理可解释性通常包含哪些能力?
- A.推理路径可视化← 正确答案
- B.证据溯源← 正确答案
- C.推理日志记录← 正确答案
- D.自动改写文档内容
答案:ABC。可解释性三件套是路径可视化、证据溯源、推理日志。自动改写文档与解释推理无关,属于内容生成范畴。
Q10. 多跳推理中发现证据矛盾(如时间线冲突)时,合理的做法有哪些?
- A.随机采信其中一个时间
- B.触发矛盾检测并回溯重新检索← 正确答案
- C.忽略时间细节只保留实体
- D.降低该证据的置信度← 正确答案
答案:BD。证据矛盾是纠偏的重要触发信号。正确做法是回溯重检索,或降低矛盾证据的置信度权重。随机采信会引入错误,忽略时间则丢失关键信息,都不可取。