Retrieval is Cheap, Show Me the Code: Executable Multi-Hop Reasoning for Retrieval-Augmented Generation

2026年05月13日
  • 简介
    检索增强生成(RAG)已成为知识密集型问答任务的标准方法,但现有系统在处理多跳问题时仍十分脆弱——这类问题的求解需串联多个检索与推理步骤。其核心挑战在于:当前方法依赖自由形式的自然语言进行推理,导致中间状态隐含不显、检索查询易偏离目标实体,且错误检测由生成该错误的同一模型完成,使得“自我反思”成为一种不可靠、缺乏依据的信号。 我们观察到,多跳问答本质上是一种典型的分步计算过程,而这种结构化流程与专精于代码的大型语言模型所接受的训练范式高度契合。受此启发,我们提出了 \pyrag 框架,将多跳 RAG 任务重新建模为程序合成与执行任务。不同于自由形式的推理轨迹,\pyrag 将整个推理过程表示为一段可执行的 Python 程序,该程序调用预定义的检索工具与问答工具;中间状态以显式变量形式呈现,反馈则通过程序的实际执行获得、具备确定性,整个推理过程亦由此生成一条清晰可查的执行轨迹。这一建模方式进一步支持了“编译器层面锚定”的自我修复机制,以及无需额外训练即可实现的、由执行结果驱动的自适应检索。 我们在五个问答基准数据集(PopQA、HotpotQA、2WikiMultihopQA、MuSiQue 和 Bamboogle)上开展了实验,结果表明:无论是在零样本(无需训练)设置下,还是在强化学习微调后的设置下,\pyrag 均持续显著优于各类强基线方法,尤其在具有强组合性特征的多跳数据集上提升幅度尤为突出。我们的代码、数据及模型均已开源,详见 https://github.com/GasolSun36/PyRAG。
  • 作者讲解
  • 图表
  • 解决问题
    多跳问答(multi-hop QA)中现有RAG系统因依赖自由形式的自然语言推理而表现脆弱:中间状态隐式、检索查询易漂移、错误检测不可靠(自指性反馈)。该问题虽非全新,但论文聚焦其根本性结构缺陷——将计算密集型、需显式状态追踪的多步推理强行映射到非确定性语言生成上,尚未被系统性重构为可执行计算过程。
  • 关键思路
    提出PyRAG框架,将多跳RAG重新定义为程序合成与执行任务:用可执行Python代码显式编排检索(retrieve)、问答(qa)等工具调用,中间结果作为变量暴露,推理轨迹变为确定性、可调试、可检查的执行流;由此天然支持编译器级语法/类型检查驱动的自我修复(compiler-grounded self-repair)和基于执行失败信号的自适应检索(execution-driven adaptive retrieval),全程无需额外训练。
  • 其它亮点
    在PopQA、HotpotQA、2WikiMultihopQA、MuSiQue、Bamboogle五大基准上全面超越强基线(包括训练-free和RL微调版本),在组合性强的多跳数据集(如MuSiQue、Bamboogle)上提升尤为显著;所有实验均零训练依赖,验证了‘结构化执行’本身即为强大归纳偏置;代码、数据、模型全部开源;未来方向包括:扩展至异构工具生态(如数据库/API/计算器)、结合轻量符号验证增强执行鲁棒性、探索程序合成中的认知建模先验。
  • 相关研究
    Chain-of-Thought Prompting (Wei et al., 2022); Self-Refine (Madaan et al., 2023); ReAct (Yao et al., 2023); Toolformer (Schick et al., 2023); Program-Aided Language Models (PAL, Gao et al., 2023); Algorithmic Reasoning with LLMs (Chen et al., 2024); RAG as Code (Liu et al., 2024 workshop paper)
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问