ReACC:一种检索增强型代码补全框架
研究发现传统的语言模型在生成代码方面有一定困难,通过提供外部上下文信息如库文档可以改善代码生成效果。通过系统性的大规模分析,发现在何种场景下使用检索增强生成模型能够对代码生成产生帮助,并且存在改进的空间。通过创建了一个综合评估基准,CodeRAG-Bench,涵盖了基本编程、开放域和代码库级别的代码生成任务,实现从五个来源中检索上下文,结果显示在不同设置中通过检索高质量上下文能够提升最终代码生成效果,同时也揭示了当前检索器在词汇重叠有限的情况下仍然难以获取有用的上下文,并且生成器在上下文长度有限或者无法整合额外上下文的能力上存在不足。希望 CodeRAG-Bench 能够成为有效的测试平台,促进进一步开发针对代码导向的检索增强生成方法。
Jun, 2024
近年来,代码语言模型在代码智能任务中的部署日益增多,但是预训练模型要在私有仓库中生成正确的自动补全是具有挑战性的。本文提出了一种名为 DraCo 的数据流引导检索增强方法,用于仓库级别的代码自动补全,其通过扩展的数据流分析将私有仓库解析为代码实体并建立它们之间的关系,形成一个仓库特定的上下文图。每当触发代码自动补全时,DraCo 会精确地从仓库特定的上下文图中检索相关的背景知识,并生成良好的代码查询提示。此外,我们构建了一个包含更多不同补全目标的大型 Python 数据集 ReccEval。实验证明了 DraCo 的卓越准确性和适用性,与最先进的方法相比,在精确匹配代码方面平均提升了 3.43%,在标识符 F1 - 分数方面平均提升了 3.27%。
May, 2024
RepoGenix 提出了一种独特的解决方案,融合了代码类比的类比环境和包含深度语义关系的理由环境,通过有效压缩这些上下文成为限制大小的提示,从而提高仓库级代码补全的准确性和推断效率。
Feb, 2024
本研究旨在探索是否通过使用上下文数据使代码易于理解会提高预训练代码语言模型完成代码补全任务的性能,并建议在训练、微调或选择此类模型时做出适当的设计选择,以改善自动补全的实用性和准确性。
Apr, 2023
该研究提出了一个检索增强框架 REDCODER,用于检索相关的代码或摘要,作为代码生成或总结模型的补充,实现了与检索数据库的交互。这个机制可以扩展检索技术的功能,适用于含有不同模态的检索数据库,并在 Java 和 Python 的代码生成和摘要的基准数据集上得到了良好的实验结果。
Aug, 2021
基于大型语言模型的 R2C2-Coder 方法增强和评估了真实世界的代码仓库级代码补全能力,其中 R2C2-Coder 包括 R2C2-Enhance 方法和 R2C2-Bench 基准测试。
Jun, 2024
该论文通过引入可检索增强的大型语言模型(LLMs),拓展了检索增强 LLMs 的应用领域,以代码生成为例,并提出了一种新颖的可训练架构,将可检索实体注入到 LLM 解码器中,以解决现有模型在相似实体名之间无法分配相关性分数的问题,并在多个场景下超越常见基准模型,包括项目级代码生成、Bash 和 SQL 脚本。
Dec, 2023
RepoCoder 是一个简单,通用且有效的框架,它通过结合基于相似度的检索器和预训练的代码语言模型来简化存储库级代码完成流程,并允许在不同的粒度级别生成代码。同时,它还利用一种新的迭代检索 - 生成范式来弥合检索上下文和完成目标之间的差距。此外,我们通过对 RepoEval 的测试表明,在各种设置中,RepoCoder 显著提高了零样本代码完成基线,始终优于普通的增强检索式代码完成方法。
Mar, 2023
本文介绍了一个名为 RepoFusion 的新型框架,其可以训练模型根据相关的代码库上下文以提供更加准确的代码自动补全建议,并且在单行代码完成任务中展示出比训练数据规模大 70 倍的模型表现 F1 分数更加优秀。我们还发布了一个 Java 代码库数据集 Stack-Repo 和模型检查点及源代码,以便进一步的研究。
Jun, 2023