Repoformer: Selective Retrieval for Repository-Level Code Completion

2024年03月15日
  • 简介
    最近检索增强生成(RAG)的进展在代码补全的存储库级别上开启了一个新时代。然而,现有方法中检索的不变使用暴露了效率和鲁棒性的问题,其中大部分检索到的上下文对于代码语言模型(代码LM)来说是无益或有害的。为了解决这些挑战,本文提出了一种选择性RAG框架,其中在不必要的情况下避免了检索。为了支持这个框架,我们设计了一种自监督学习方法,使得代码LM能够准确地自我评估是否检索能够提高其输出质量,并且能够鲁棒地利用潜在的嘈杂检索上下文。使用这个LM作为选择性检索策略和生成模型,我们的框架在各种基准测试中一直优于具有不变检索方法的最先进的提示方法,包括RepoEval、CrossCodeEval和一个新的基准测试。同时,我们的选择性检索策略在不损害性能的情况下,可以显著提高70%的推理速度。我们证明了我们的框架有效地适应了不同的生成模型、检索器和编程语言。这些进展使我们的框架成为更准确和高效的存储库级别代码补全的重要一步。
  • 作者讲解
  • 图表
  • 解决问题
    本文旨在解决现有方法中检索效率和鲁棒性问题,提出一种避免不必要检索的选择性RAG框架,以及一种自监督学习方法,使代码LM能够准确评估是否需要检索并利用潜在的嘈杂上下文。
  • 关键思路
    提出了一种选择性RAG框架,通过自监督学习方法,让代码LM自我评估是否需要检索,避免了不必要的检索,从而提高了检索效率和鲁棒性。
  • 其它亮点
    实验结果表明,该框架在多个基准测试中表现优异,同时提高了70%的推理速度。该框架适用于不同的生成模型、检索器和编程语言。
  • 相关研究
    最近的相关研究包括《CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing》和《CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation》等。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问