论文

并非所有 RAG 都是一样的:针对软件工程任务的按组件实证研究

Not All RAGs Are Created Equal: A Component-Wise Empirical Study for Software Engineering Tasks

上下文与知识检索增强

摘要

虽然检索增强生成 (RAG) 越来越多地用于让大语言模型(LLM)的回答以软件开发材料为依据,但其组件的最佳配置仍然是软件工程 (SE) 任务的一个悬而未决的问题。缺乏系统的指导迫使从业者进行成本高昂的临时实验。本文提出了一项全面的、逐组件的实证研究,剖析了 RAG 流程,评估了超过 21 种不同的模型和方法。我们的研究系统地分离和评估了 4 种查询处理技术、7 种跨越稀疏、密集和混合范式的检索模型、4 种上下文细化方法和 6 种不同的生成器。我们在一组 3 个核心 SE 任务上测试这些组件:代码生成、摘要和修复。我们的实证研究结果揭示了一个重要的见解:检索器 侧组件,特别是检索算法的选择,通常对最终系统性能产生比生成器模型的选择更重要的影响。引人注目的是,经典的词汇 检索器 BM25 在不同的任务中表现出了异常强大的性能。我们的分析为研究人员和从业者提供了一个实用的、数据驱动的路线图,为在为软件工程环境构建有效的 RAG 系统时确定优化工作的优先级提供了明确的指导。