Page 355 - 《软件学报》2026年第3期
P. 355
1318 软件学报 2026 年第 37 卷第 3 期
等任务中, RAG 通过多种检索机制将相关示例嵌入生成过程中, 指导模型更好地理解代码结构和语义, 生成更加
准确和高可读性的输出. RAG 还被应用于测试生成和代码翻译等场景, 通过检索相关上下文, 指导生成器生成高
质量的单元测试或跨平台翻译代码, 减少模型依赖“猜测”或“编造”知识, 出现“幻觉”的情况.
本文总结了现有的工作, 并回顾了在快速发展的背景下, RAG 在软件工程社区的应用进展. 社区研究人员可
以深入了解现有基于 RAG 的软件工程技术的总体流程进展与优缺点. 为此, 探索了 RAG 如何融入软件工程研究
的典型任务中. 进一步讨论当前存在的挑战, 并建议未来 RAG 在软工社区研究的可能方向. 总之, 本工作对基于
RAG 的软件工程社区进行全面的回顾, 使研究人员能够了解这一蓬勃发展的领域, 并推动后续研究的发展.
综上所述, 本文的主要贡献如下.
(1) 详细对 RAG 技术在软件工程领域研究进行综述.
(2) 对国内外基于 RAG 在软件工程中的研究进行系统的回顾和总结.
(3) 详细分类和总结 RAG 框架在软工中的常见流程和关键组件, 分析不同模型在实际应用中的结构和性能表
现, 提供对比和选择的参考依据.
(4) 总结当前 RAG 技术在软件工程应用中面临的主要挑战, 并提出未来可能的研究方向.
(5) 深入探讨 RAG 在软件开发、软件测试和软件维护等不同软件工程阶段中的具体应用, 展示了 RAG 技术
在提升代码生成质量、自动修复效率和漏洞检测准确性方面的实际效果.
与现有综述比较, 本文工作亦有必要. 文献 [17–20] 对 RAG 在自然语言处理 (NLP)、AI 生成内容以及 LLM
中的应用进行了系统性文献综述, 研究焦点主要集中在 NLP 任务中的 RAG 技术应用, 如文本生成、对话系统、
问答等领域. 其中 Zhao 等人 [18] 的研究涉及关于 RAG for Code 的 5 种具体任务分析, 但缺乏对软件工程中代码任
务的深入分析和针对性讨论, 并未涉及在实际软件工程实践中涉及的挑战. Zhang 等人 [21] 系统综述了 LLM 在软件
工程中的应用, 涉及部分关于 RAG 框架的应用, 但并未针对 RAG 进行总结和分析.
本文第 2 节详细说明我们调查的 3 个研究问题以及采用的调研策略和方法. 第 3 节分析 2021–2024 年间
RAG 在软件工程中的出版趋势, 包括发表数量、主要发表刊物、编程语言分布和使用的模型类型. 第 4 节详细探
讨 RAG 框架中检索器和生成器的关键组件与结构, 包括检索及生成器典型分类与优化策略. 第 5 节分类总结 RAG
在软件工程不同阶段和任务中的具体应用, 分析其在各应用场景中的效果与优势. 第 6 节总结 RAG 技术在软件工
程应用中面临的主要挑战, 如知识库构建、上下文处理和输出结果正确性等问题, 并探讨可能的解决方案和未来
研究方向. 第 7 节对本工作进行总结.
2 调研策略
本节遵循了 Petersen 等人 [22] 和 Kitchenham 等人 [23] 提出的调研准则, 详细介绍所采用的系统文献综述方法.
2.1 研究问题
● 研究问题 1: RAG 在软件工程中的研究趋势是什么?
● 研究问题 2: RAG 处理代码任务的检索器和生成器具体结构是什么?
● 研究问题 3: RAG 在软件工程中的主要应用领域是什么?
2.2 搜索策略
为了系统性地搜集与 RAG 技术在软件工程任务中的应用相关的学术文献, 本研究设计并实施了多阶段、多
数据库的检索策略, 包括关键词构建、多库自动检索、人工筛选与滚雪球补充. 本研究构建的关键词体系由两部
分组成: 一方面涵盖软件工程领域的核心任务, 如 code generation、program repair、code completion、code
summarization、code review、code translation 等; 另一方面聚焦于与 RAG 技术相关的概念和术语, 如 retrieval-
augmented generation、code retrieval、RAG、retrieval and generation 等. 这一双重关键词策略旨在全面覆盖现有
文献中与代码任务结合的 RAG 应用研究.
基于该关键词体系, 在多个国际主流学术数据库中进行了系统性检索, 包括选取了国际知名的学术数据库, 包

