La récupération est peu coûteuse, montrez-moi le code : Raisonnement multi-sauts exécutable pour la génération augmentée par récupération
Retrieval is Cheap, Show Me the Code: Executable Multi-Hop Reasoning for Retrieval-Augmented Generation
May 13, 2026
Auteurs: Jiashuo Sun, Jimeng Shi, Yixuan Xie, Saizhuo Wang, Jash Rajesh Parekh, Pengcheng Jiang, Zhiyi Shi, Jiajun Fan, Qinglong Zheng, Peiran Li, Shaowen Wang, Ge Liu, Jiawei Han
cs.AI
Résumé
La génération augmentée par récupération (RAG) est devenue une approche standard pour le question-réponse intensif en connaissances, mais les systèmes existants restent fragiles face aux questions à sauts multiples, où la résolution de la tâche nécessite d’enchaîner plusieurs étapes de récupération et de raisonnement. Les principaux défis sont que les méthodes actuelles représentent le raisonnement sous forme de langage naturel libre, où les états intermédiaires sont implicites, les requêtes de récupération peuvent dériver des entités visées, et les erreurs sont détectées par le même modèle qui les produit, rendant l’auto-réflexion un signal peu fiable et non fondé.
Nous observons que le question-réponse à sauts multiples est une forme typique de calcul pas à pas, et que ce processus structuré s’aligne étroitement avec la manière dont les modèles de langage spécialisés dans le code sont entraînés à fonctionner. Motivés par cela, nous introduisons \pyrag, un cadre qui reformule le RAG à sauts multiples comme une synthèse et exécution de programmes. Au lieu de trajectoires de raisonnement en langage libre, \pyrag représente le processus de raisonnement comme un programme Python exécutable utilisant des outils de récupération et de QA, expose les états intermédiaires comme des variables, fournit un retour déterministe via l’exécution, et produit une trace inspectable de l’ensemble du processus de raisonnement. Cette formulation permet en outre une auto-réparation fondée sur le compilateur et une récupération adaptative pilotée par l’exécution, sans aucun entraînement supplémentaire.
Des expériences sur cinq bancs d’essai de QA (PopQA, HotpotQA, 2WikiMultihopQA, MuSiQue et Bamboogle) montrent que \pyrag surpasse systématiquement les bases solides sous des réglages sans entraînement et avec apprentissage par renforcement, avec des gains particulièrement importants sur les ensembles de données compositionnelles à sauts multiples. Notre code, nos données et nos modèles sont disponibles publiquement à l’adresse https://github.com/GasolSun36/PyRAG.
English
Retrieval-Augmented Generation (RAG) has become a standard approach for knowledge-intensive question answering, but existing systems remain brittle on multi-hop questions, where solving the task requires chaining multiple retrieval and reasoning steps. Key challenges are that current methods represent reasoning through free-form natural language, where intermediate states are implicit, retrieval queries can drift from intended entities, and errors are detected by the same model that produces them making self-reflection an unreliable, ungrounded signal.
We observe that multi-hop question answering is a typical form of step-by-step computation, and that this structured process aligns closely with how code-specialized language models are trained to operate. Motivated by this, we introduce \pyrag, a framework that reformulates multi-hop RAG as program synthesis and execution. Instead of free-form reasoning trajectories, \pyrag represents the reasoning process as an executable Python program over retrieval and QA tools, exposing intermediate states as variables, producing deterministic feedback through execution, and yielding an inspectable trace of the entire reasoning process. This formulation further enables compiler-grounded self-repair and execution-driven adaptive retrieval without any additional training.
Experiments on five QA benchmarks (PopQA, HotpotQA, 2WikiMultihopQA, MuSiQue, and Bamboogle) show that \pyrag consistently outperforms strong baselines under both training-free and RL-trained settings, with especially large gains on compositional multi-hop datasets. Our code, data and models are publicly available at https://github.com/GasolSun36/PyRAG.