重写代码:大型语言模型增强代码搜索的简单方法
本文提出了一个以生成扩展查询为基础的框架,利用强大的代码生成模型来提高代码检索任务。该方法优化了嵌入到潜空间的文档 - 代码对,利用生成的代码片段将文档查询扩展与目标代码片段匹配。该方法在 CodeSearchNet 数据集上实验,并取得了迄今为止最好的性能结果。
Dec, 2022
通过使用 Syntax Graph Retrieval Augmented Code Generation (CodeGRAG) 模型,可以提高大型语言模型在单轮代码生成任务中的性能,填补编程语言和自然语言之间的差距,并使用外部结构化知识作为不同编程语言之间的桥梁,从而显著提高语言模型的代码生成能力。
May, 2024
该研究提出了一个检索增强框架 REDCODER,用于检索相关的代码或摘要,作为代码生成或总结模型的补充,实现了与检索数据库的交互。这个机制可以扩展检索技术的功能,适用于含有不同模态的检索数据库,并在 Java 和 Python 的代码生成和摘要的基准数据集上得到了良好的实验结果。
Aug, 2021
使用基于子树检索的方法来生成程序源代码。通过动态规划的句子相似性评分方法检索与输入句子相似的句子,提取建立相应抽象语法树的动作序列的 n-gram,并增加导致检索到的 n-gram 动作子树出现在预测代码中的动作的概率。在两个代码生成任务中,ReCode 方法提高了高达 2.6 BLEU 的性能。
Aug, 2018
基于大型语言模型的检索模型和嵌入式检索模型的结合,对零样本检索问题,即无目标领域标记数据的情况下,综合了生成增强检索和检索增强生成两种范式,并通过新颖的 GAR-meets-RAG 循环公式在零样本环境中迭代改进检索和重写阶段,实现了对系统召回率的提升和最终精准度的提高。
Oct, 2023
该论文通过引入可检索增强的大型语言模型(LLMs),拓展了检索增强 LLMs 的应用领域,以代码生成为例,并提出了一种新颖的可训练架构,将可检索实体注入到 LLM 解码器中,以解决现有模型在相似实体名之间无法分配相关性分数的问题,并在多个场景下超越常见基准模型,包括项目级代码生成、Bash 和 SQL 脚本。
Dec, 2023
研究发现传统的语言模型在生成代码方面有一定困难,通过提供外部上下文信息如库文档可以改善代码生成效果。通过系统性的大规模分析,发现在何种场景下使用检索增强生成模型能够对代码生成产生帮助,并且存在改进的空间。通过创建了一个综合评估基准,CodeRAG-Bench,涵盖了基本编程、开放域和代码库级别的代码生成任务,实现从五个来源中检索上下文,结果显示在不同设置中通过检索高质量上下文能够提升最终代码生成效果,同时也揭示了当前检索器在词汇重叠有限的情况下仍然难以获取有用的上下文,并且生成器在上下文长度有限或者无法整合额外上下文的能力上存在不足。希望 CodeRAG-Bench 能够成为有效的测试平台,促进进一步开发针对代码导向的检索增强生成方法。
Jun, 2024
本文介绍了一种新的代码到代码搜索技术,通过包括静态和动态特征以及在训练过程中利用相似和不同的示例来提高大型语言模型的性能。我们展示了第一个能够在训练期间编码动态运行时信息的代码搜索方法,在推断时间无需执行搜索语料库或搜索查询,同时还是第一个训练正负参考样本的代码搜索技术。我们通过一系列研究验证了我们方法的有效性,并展示了增强 LLMs 执行跨语言代码到代码搜索的能力。我们的评估表明,我们的方法的效果在各种模型架构和编程语言中都是一致的。此外,我们的消融研究表明,即使在训练过程中只有一个正面和负面参考样本,也会产生相当大的性能提高,这证明了相似和不同的参考是代码搜索的重要部分。重要的是,我们展示了精心制作的、经过调整的模型在性能上始终优于未调整的更大的现代 LLMs,即使是在增强最大可用 LLMs 时也是如此,这凸显了开源模型的重要性。为了确保我们研究的可重复性和可扩展性,我们介绍了一个名为 Cosco 的开源实现和培训过程
May, 2023
通过改善数据质量,例如进行代码转换和模块化,自然语言生成代码的性能可以得到显著提升。研究结果还表明,使用较少但高质量的数据进行模型微调可以优于在原始数据集上进行微调。
Nov, 2023