检索廉价,代码为王:基于可执行程序的多跳推理检索增强生成
Retrieval is Cheap, Show Me the Code: Executable Multi-Hop Reasoning for Retrieval-Augmented Generation
针对多跳检索增强生成(RAG)中推理过程隐式、检索漂移及错误难以自查的问题,研究团队提出PyRAG框架,将多跳推理任务重构为程序合成与执行过程。该框架将推理步骤编写为可执行的Python程序,通过显式调用检索与问答工具实现多步计算,使中间状态变量化、反馈确定化,并生成完整可检查的推理轨迹。该方法无需额外训练即可支持基于编译器的自我修复与执行驱动的自适应检索。在PopQA、HotpotQA等五个问答基准测试中,PyRAG在无需训练和强化学习训练两种设定下均显著优于基线模型,尤其在组合式多跳数据集上提升显著。相关资源已开源。
把多跳RAG变成可执行的Python程序,中间状态全透明,实验在五个数据集上都压住了基线,做检索增强的值得看一眼。
检索增强生成(RAG)已成为知识密集型问答任务的标准方法,但现有系统在多跳问题上仍然脆弱——这类任务需要通过链式组合多个检索与推理步骤才能解决。关键挑战在于:当前方法通过自由形式的自然语言进行推理,中间状态是隐式的,检索查询可能偏离目标实体,且错误检测由产生错误的同一模型完成,这使得自我反思成为一种不可靠、缺乏依据的信号。我们观察到,多跳问答是一种典型的逐步计算形式,而这种结构化过程与代码专用语言模型的训练运作方式高度契合。受此启发,我们提出了 PyRAG 框架,该框架将多跳 RAG 重新定义为程序合成与执行。与自由形式的推理轨迹不同,PyRAG 将推理过程表示为基于检索与问答工具的可执行 Python 程序,通过变量暴露中间状态,通过执行产生确定性反馈,并生成整个推理过程的可检查轨迹。这种形式化方法进一步实现了基于编译器的自我修复和执行驱动的自适应检索,且无需任何额外训练。在五个问答基准(PopQA、HotpotQA、2WikiMultihopQA、MuSiQue 和 Bamboogle)上的实验表明,PyRAG 在无训练和基于强化学习的设置下均持续优于强基线方法,在组合式多跳数据集上尤其取得了显著提升。我们的代码、数据和模型已在 https://github.com/GasolSun36/PyRAG 公开提供。
来源:HuggingFace Daily Papers(社区热门论文) · arxiv.org