CodeRAG-Bench: Can Retrieval Augment Code Generation?

2024年06月20日
  • 简介
    尽管语言模型(LMs)在生成代码方面表现出色,但许多程序对于仅使用其参数化知识生成代码来说是具有挑战性的。提供外部上下文,例如库文档,可以促进生成准确和功能性的代码。尽管检索增强生成(RAG)在各种面向文本的任务中取得了成功,但其改善代码生成的潜力仍未得到充分探索。在这项工作中,我们通过提出以下问题进行了系统的大规模分析:在哪些情况下可以通过检索来提高代码生成模型的效果?还有哪些挑战需要克服?我们首先策划了一个全面的评估基准,CodeRAG-Bench,包括三类代码生成任务,包括基本编程、开放域和存储库级别问题。我们从五个来源聚合文档,供模型检索上下文使用:竞赛解决方案、在线教程、库文档、StackOverflow帖子和GitHub存储库。我们通过提供从一个或多个来源检索到的上下文来检查CodeRAG-Bench上表现最佳的模型。尽管在各种设置下通过检索高质量的上下文在最终代码生成方面取得了显著的收益,但我们的分析揭示了改进的空间——当前的检索器仍然难以获取有用的上下文,特别是在词汇重叠有限的情况下,而生成器在上下文长度有限或集成其他上下文的能力有限时也无法改进。我们希望CodeRAG-Bench作为一个有效的测试平台,鼓励进一步开发先进的面向代码的RAG方法。
  • 图表
  • 解决问题
    本文旨在探讨检索增强生成(RAG)在代码生成任务中的应用潜力,以及存在的挑战。具体而言,通过提供外部上下文信息,如库文档,来帮助生成准确、功能性的代码。
  • 关键思路
    本文通过构建一个全面的评估基准CodeRAG-Bench,并从竞赛解决方案、在线教程、库文档、StackOverflow帖子和GitHub存储库等五个来源汇总文档,评估了检索增强生成模型在三类代码生成任务中的表现。本文发现,通过检索高质量的上下文信息,可以在各种情况下提高代码生成模型的性能。
  • 其它亮点
    本文的亮点包括:构建了一个全面的评估基准CodeRAG-Bench;通过提供来自不同来源的上下文信息,显著提高了代码生成模型的性能;揭示了当前检索器仍然难以获取有用的上下文信息,并且生成器无法很好地利用额外的上下文信息的问题。
  • 相关研究
    近期的相关研究包括:1.《Generating Pseudo-code from Source Code Using Transformers》;2.《CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation》;3.《Improving Code Generation with Natural Language》等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论