当前位置: 首页 > news >正文

仓库级代码补全:选择性检索提速70%

使用选择性检索增强仓库级代码补全

一种自监督方法,用于学习何时从代码仓库检索上下文信息,可在提升准确率的同时,将代码补全速度提升70%。

代码大语言模型是在源代码而非自然语言文本上进行预训练的模型。它们非常擅长仅根据上下文补全任意程序函数的代码。然而,在面对全新的大型软件开发项目时,它们会显得力不从心,因为正确的代码补全可能依赖于代码仓库其他位置定义的 API 调用或函数。

检索增强生成通过从仓库中获取相关上下文来解决这个问题,丰富了模型的理解并改善了其输出。但执行检索需要时间并会减慢生成速度:它总是最佳选择吗?

在提交给今年国际机器学习大会的一篇论文中,研究人员对这个问题进行了研究,发现事实上,80%的情况下,检索并未提升代码生成的质量。

方法

为解决这一低效问题,研究人员微调了一个大语言模型,使其能够判断检索是否可能有帮助,并根据判断结果输出两个特殊标记中的一个。

用于微调的数据集是通过从开源许可证仓库中采样代码构建的,其步骤包括:随机屏蔽代码行、从仓库其他位置检索相关代码,然后比较大语言模型在有和没有额外上下文两种情况下对屏蔽代码的重建结果。最后根据检索是否改善了生成结果对样本进行标记。

实验中,在代码补全任务上,基于该数据集微调的代码大语言模型表现甚至优于始终执行检索的模型——但由于采用了选择性检索,其推理速度提升了70%。论文中还报告了广泛的实验,旨在证明该方法能很好地泛化到不同的模型和不同的代码补全任务中。

创建数据集的所有步骤——采样和屏蔽代码、检索相关代码、以及在有无检索上下文的情况下进行代码生成——都可以自动化,这使得该方法具有自监督的特性:它不需要任何人工标注,并且可以扩展到任意大的数据集规模。

研究人员试验了多种从仓库中检索上下文信息的方法,包括使用基于Transformer的语义嵌入来匹配代码序列的 UniXCoder,以及使用 n-gram 数据、语法树和代码流语义的 CodeBLEU。然而,这些方法的表现都不及效率高得多的 Jaccard 相似度。因此,在大部分实验中,研究人员使用 Jaccard 相似度进行检索。同时假设,通过使用结构感知的分块而非固定的行数分块,可以用语义检索获得更好的性能,并将其留作未来工作。

对于模型微调,研究人员使用了填空机制,即从代码序列中移除被屏蔽的代码,并用特殊标记标识其前后的部分。训练目标是在输入字符串的末尾附加被屏蔽的代码,同样用特殊标记标识。这使得模型能够利用屏蔽代码之前和之后的上下文信息。

在微调过程中,有两个训练目标:正确重建缺失的代码,以及准确评估检索信息何时有助于重建。

准确性评估

与现有模型(如 StarCoder)相比,这种称为 Repoformer 的方法在包括 RepoEval 和 CrossCodeEval(一个针对长形式代码补全新的基准)在内的各种基准测试上,均提高了准确率并降低了推理延迟。

延迟评估

研究人员在一个真实的“在线服务”环境中展示了 Repoformer 降低延迟的能力。假设工作仓库已经被索引。给定一个包含当前文件的代码补全请求,系统同时启动三个进程:

  1. 使用 Repoformer 做出检索决策;
  2. 使用代码大语言模型生成不带跨文件上下文的代码补全;
  3. 检索跨文件上下文并使用它生成代码补全。

在一系列固定的选择阈值下,Repoformer 的选择性检索既能提高准确性,也能提高推理速度。该性能在广泛的阈值设置下依然保持稳定。

更有趣的是,Repoformer 可以作为一个即插即用的策略模型,在检索增强生成中作为生成模型时,降低各种强大的代码大语言模型的推理延迟。凭借超过85%的检索决策准确率,Repoformer 确保了上下文检索仅在增加价值时才被使用。

进一步的分析表明,所提出的策略提高了 Repoformer 对检索的鲁棒性,减少了有害的检索行为,并增加了通过检索得到改进的实例数量。FINISHED
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

http://www.jsqmd.com/news/398847/

相关文章:

  • 嵌入模型与Chroma向量数据库 - 嵌入模型与向量数据库简介 - AI大模型应用开发必备知识
  • Qwen2.5-VL在医疗影像分析中的应用案例
  • 给你一张清单 10个降AIGC软件测评对比 本科生必看降AI率神器
  • 格式总出错?9个AI论文网站测评:本科生毕业论文+学术写作必备工具推荐
  • 深度网络正在消亡,更可怕的事物正在取而代之
  • 提升SEO效果的精准长尾关键词运用技巧与策略分析
  • 效率直接起飞 8个AI论文网站测评:研究生毕业论文+科研写作必备工具推荐
  • 交稿前一晚!10个AI论文平台:继续教育毕业论文写作全测评
  • 车载摄像头核心知识点结构化总结
  • 互联网大厂Java求职面试实战——微服务、缓存与AI技术深度解析
  • 少走弯路:8个降AI率平台深度测评,研究生必看!
  • 《信号与系统》季节、股票、模拟放大电路(截止区/放大/饱和/击穿)、产品、企业、行业、国家、人生(孕育/成长/成熟/老化)、易经等统一的四阶段模型详解
  • 没有方向盘、没有脚踏板,特斯拉新车来了......
  • 微信立减金回收哪里最划算?精选三大高效渠道 - 京顺回收
  • 研究生收藏!口碑爆棚的降AI率平台 —— 千笔·专业降AI率智能体
  • 用过才敢说!专科生专属论文神器 —— 千笔·专业学术智能体
  • 电池销售系统|基于springboot + vue电池销售系统(源码+数据库+文档)
  • 大庆2026口碑工控产品供应商,看看都有谁,电气自动化/工控产品/施耐德电气/中低压电气,工控产品直销厂家口碑排行 - 品牌推荐师
  • 香薰爱好者必看!2026年液体香薰实力品牌推荐,写字楼香氛/孕婴香薰/晶石香氛/液体香氛/豪车香薰,香薰生产厂家哪个好 - 品牌推荐师
  • Chord视频时空理解工具JavaScript深入浅出:前端视频处理实战
  • 大学生心理测评与分析系统|基于java+ vue大学生大学生心理测评与分析系统(源码+数据库+文档)
  • AIGlasses OS Pro Linux系统开发:从入门到实战
  • 无需显卡!Z-Image-Turbo云端部署生成明星图片教程
  • DeerFlow保姆级教学:DeerFlow中Python编码员Agent编写自定义脚本方法
  • AnythingtoRealCharacters2511对比测评:看看转换前后的惊人差异
  • 研究生收藏!领军级的AI论文工具 —— 千笔·专业学术智能体
  • 写代码自动把长视频切成适合短视频平台的片段,颠覆剪辑要学很久。
  • iMOVE:网联摩托车安全总结报告(英) 2025
  • 做工具自动把读书笔记整理成可复习卡片,颠覆看书记不住。
  • 干货来了:降AI率平台千笔AI VS 笔捷Ai,本科生专属神器!