【RAG 论文】IRCoT:基于 CoT 的交叉检索解决多步骤问题

论文:Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions

⭐⭐⭐⭐

ACL 2023, arXiv:2212.10509

Code: github.com/stonybrooknlp/ircot

论文速读

大多数 RAG 都是一次检索来辅助 LLM 生成,但是面对多步骤推理问题,往往需要多次检索多次推理才能解决。

本文提出了 IRCoT:交叉进行 CoT 指导 retrieval 和使用 retrieval result 提升 CoT。也就是说,retrieval 和 reason 两个步骤必须相互通知。下图给了一个例子:

对于如上的问题, "In what country was Lost Gravity manufactured?" 单独问 LLM 或者单独在维基百科上搜索, 都很难得到答案. 但是通过如下步骤或许可以得到最终的答案:

  1. 首先将该问题在维基百科上搜索, 得到关于 《Lost Gravity》 的一些信息.
  2. LLM 能够从该信息中抓取到 《Lost Gravity》 的制作公司为 Mack Rides.
  3. 接着在维基百科中搜索 "The Lost Gradvity was manufactured by Mack Rides", 我们会得到一些关于 Mack Rides 的信息.
  4. 基于该信息我们能够得到 (通过 LLM 抓取) "Mack Rides" 是一家德国公司的信息.
  5. 最终我们能够得到答案为: Germany.

上面的例子就是告诉我们,很多问题是需要检索 + 提取信息交替进行最后才能得到答案的。

整体思路如下图:

首先使用 question 从 Wikipedia 中检索出 K 个文档,之后交叉重复如下两个步骤,直到终止:

  1. reason-step:把 "question"、"目前为止收集到的所有 retrieved paragraphs"、"LLM 生成的所有 CoT 句子" 填充入下面的 prompt template,并输送给 LLM,让他做 generation,保留其生成的第一个句子作为本轮生成的 CoT sentence:
  1. retrieve-step:使用上一个 reason-step 得到的 CoT sentence,去 Wikipedia 检索出 K 个 paragraphs,将其加入到 retrieved paragraphs 中

重复交叉进行以上两个步骤,直到生成的 CoT sentence 中包含有 "answer is" 或者迭代轮数超过了 threshold。

实验与分析

该论文提出的 IRCoT:

  • 在多个 dataset 上均超过了 one-step retrieval 的模型
  • 在 OOD setting 中表现不错
  • 显著减少了 CoT 的事实错误
  • 对于较小 size 的 LLM 仍然有用
  • few-shot multi-step ODQA 的 SOTA 模型
相关推荐
guslegend2 分钟前
第5节:动态切片策略与重叠机制提升RAG召回率
人工智能·大模型·rag
V搜xhliang02462 分钟前
AI大模型在临床决策与手术机器人领域的应用
大数据·人工智能·机器人
Devin~Y7 分钟前
高并发电商与AI智能客服场景下的Java面试实战:从Spring Boot到RAG与向量数据库落地
java·spring boot·redis·elasticsearch·spring cloud·kafka·rag
数据堂官方账号9 分钟前
数据竞赛 | 第二届多语种对话语音语言模型(MLC-SLM)挑战赛正式开启
人工智能·语言模型·自然语言处理·语音语言模型
Agent产品评测局14 分钟前
企业数据处理自动化落地,抓取分析全流程实现方案 —— 2026企业级智能体选型与技术路径深度解析
运维·人工智能·ai·自动化
大强同学25 分钟前
对比 VS Code:Zed 编辑器编码体验全面解析
人工智能·windows·编辑器·ai编程
豆沙糕34 分钟前
RAG文档切分最佳实践:企业级方案+主流策略+生产落地
数据库·人工智能
minglie135 分钟前
zynq环境用opencv测摄像头
人工智能·opencv·计算机视觉
xyz_CDragon1 小时前
OpenClaw Skills 完全指南:ClawHub 安装、安全避坑与自定义开发(2026)
人工智能·python·ai·skill·openclaw·clawhub
断眉的派大星1 小时前
pytorch中view和reshape的区别
人工智能·pytorch·python