检索与推理交替(IRCoT)
IRCoT 把思维链与检索交错进行:每写一步推理就提取一次查询去检索,用新拿到的证据指导下一条推理,如此循环直到推出结论。它和「先检索一次再作答」的差别在于检索次数随推理深度增加,每一步都建立在新的证据上。适合多跳问答、事件因果链和跨文档对比。
基本信息
| 适用 | 多跳问答、因果链推演、跨文档对比 |
|---|---|
| 循环 | 推理一句 → 检索一次 → 并入上下文 → 再推理 |
| 成本 | 检索次数与轮数同阶增长,必须设轮数上限 |
| 输出 | 结论附引用编号,便于核对 |
| 失败信号 | 检索结果与推理句无关,说明查询提取跑偏 |
典型使用场景
- 多跳事实核查:需要先确认实体再确认关系才能定论
- 竞品调研:每一步结论都要落到具体文档片段
- 故障根因分析:从现象出发逐层追问到具体变更记录
- 合同条款链式解读:定义条款与适用条款分散在不同章节
- 知识库问答:单次检索召回不足,需要边推边找
循环模板
循环模板
步骤 1:写一条推理句(含待验证的实体或关系)
步骤 2:按该句提取查询并检索(记录命中的文档编号)
步骤 3:把检索结果并入上下文,写下一句推理
步骤 4:重复 1-3,直到足以推出结论
收尾:给出结论 + 引用编号列表
约束:
- 最多 6 轮;连续 2 轮检索无新增证据则提前停止
- 每轮检索结果只保留摘要句与引用编号,不堆全文每个环节的要点
| 环节 | 要点 | 常见风险 |
|---|---|---|
| 推理句 | 包含可检索的实体或关系 | 写出无检索价值的空泛句 |
| 查询提取 | 从推理句抽出关键词,去掉口语 | 把整段推理当查询,召回噪声大 |
| 证据并入 | 只保留摘要与引用编号 | 上下文被全文淹没,后续推理被带偏 |
| 停止条件 | 轮数上限 + 无新增证据即停 | 无上限循环,成本失控 |
| 引用 | 结论逐条对应编号 | 结论与引用错配,无法核查 |
每轮把检索全文都塞进上下文,是最常见的成本与质量双输:上下文膨胀导致关键证据被稀释,后续推理跟着跑偏。保留摘要句加引用编号即可。
推理句里的错误实体会污染后续检索,链条越走越偏。建议每两轮回看一次原始问题,确认当前方向仍与问题相关。