选择性检索增强代码补全技术解析

news/2025/11/28 20:05:01/文章来源:https://www.cnblogs.com/codeshare1135/p/19284044

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

大型代码模型在基于上下文完成任意程序函数代码方面表现出色,但在处理新的大型软件开发项目时却遇到困难,因为正确的代码补全可能依赖于代码仓库中其他位置定义的API调用或函数。

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

在今年国际机器学习会议上发表的一篇论文中,我们研究了这个问题并发现,实际上80%的情况下检索并不会提高代码生成的质量。

方法概述

为了解决这种效率低下的问题,我们微调了一个大型语言模型来确定检索是否可能有所帮助,并根据答案发出两个特殊标记之一。

对于微调,我们使用了一个通过从开源许可证仓库中采样代码、随机掩码代码行并从仓库其他地方检索相关代码构建的数据集。然后我们比较了大型语言模型在有和没有额外上下文情况下对掩码代码的重建效果。这些示例根据检索是否改进了生成而被标记。

在实验中,我们发现在代码补全任务上,在我们数据集上微调的代码大型语言模型甚至比总是执行检索的模型表现更好——但由于选择性检索,推理速度提高了70%。

技术实现

创建我们数据集的所有步骤——采样和掩码代码、检索相关代码、以及有和没有检索上下文的代码生成——都可以自动化,这使得我们的方法具有自监督性:不需要人工标注,并且可以扩展到任意大的数据集规模。

我们试验了多种从仓库检索上下文信息的方法,包括使用基于Transformer的语义嵌入来匹配代码序列的UniXCoder,以及使用n-gram数据、语法树和代码流语义的CodeBLEU。然而,这两种方法都没有比更高效的Jaccard相似度表现得更好,Jaccard相似度是两个符号序列交集与并集的比率。因此在大多数实验中,我们使用Jaccard相似度进行检索。

对于模型微调,我们使用了"填充中间"机制,其中掩码代码从代码序列中切除,前面和后面的部分用特殊标记标识。训练目标包括在字符串末尾附加掩码代码的输入字符串,再次用特殊标记标识。这允许模型利用掩码代码之前和之后的上下文信息;已被证明比训练模型在前后部分之间插入生成代码产生更好的结果。

在微调期间,我们有两个训练目标:正确重建缺失代码和准确评估检索信息何时有助于重建。

性能评估

与现有模型相比,我们的方法在代码补全任务上提高了准确性,并在各种基准测试中减少了推理延迟。

在现实的"在线服务"设置中,我们展示了该方法减少延迟的能力。假设工作仓库已被索引,给定包含当前文件的代码补全请求,系统同时启动三个过程:

  • 使用该方法进行检索决策
  • 使用代码大型语言模型生成没有跨文件上下文的代码补全
  • 检索跨文件上下文并使用它生成代码补全

在一系列固定选择阈值中,选择性检索能够提高准确性和推理速度。这种性能在各种阈值设置下也保持不变。

更有趣的是,该方法能够作为即插即用的策略模型,减少各种强大代码大型语言模型作为检索增强生成中生成模型的推理延迟。

通过超过85%的检索决策准确率,该方法确保上下文检索仅在增加价值时使用。

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

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/980058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

W55MH32 网络继电器三模自由控制:小程序按键网页随选 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Day49(19)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management

登录设置HTTP:无状态响应:本次响应不携带上一次响应内容cookieJWT令牌老版本 package com.itheima;import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; impor…

Azure DevOps Server 2022.2 补丁(Patch 7)

Azure DevOps Server 2022.2 补丁(Patch 7)Azure DevOps Server RC版本在持续改进中,但是不影响上一个大版本的修复补丁进度;今天,微软又按照管理发布了月度补丁:Azure DevOps Server 2022.2 补丁(Patch 7),补…

U636462 无根树

noip 前一天锻炼手感。 设 \(f_i\) 为 \(i\) 到终点的答案。 那么每次转移 \(u\) 这个点的时候,令其出点 \(v\) 的贡献为 \(w + f_v\),那么敌人一定会选择最小的 \(d\) 个点办掉,此时你的答案一定为第 \(d + 1\) 小…

人工智能:用Gemini3一分钟生成手势控制3D粒子交互系统

@目录前言一、Gemini3 Build界面准备二、精准提示词设计(核心步骤)提示词设计逻辑解析:三、效果演示(生成后功能实测)1. 手势控制粒子缩放与扩散2. 多模型切换功能3. 颜色自定义功能4. 简洁现代的界面与全屏控制预…

酶蛋白定向进化难题?泰克生物酵母展示服务,高效筛选“高活性酶”突变体

在工业催化、生物制药、酶制剂研发领域,天然酶往往存在活性不足、稳定性差、特异性低等局限,难以满足实际应用需求。而酶的定向进化是解决这一问题的核心技术 —— 通过构建突变文库、筛选高活性突变体,让酶的性能实…

2025年免费简历模板排行榜:媲美付费版的优质选择

全球经济格局持续演变,求职市场呈现出新的挑战与机遇。在这样的背景下,简历不再仅仅是个人信息的罗列,更是求职者专业能力、个人品牌以及与岗位匹配度的综合体现。然而,对于预算有限的求职者而言,如何免费获得媲美…

考场备忘录

策略相关 核心思想是先保证一等,然后冲 300,有可能就冲击队线。 先看题,确保理解题意的情况下可以进行若干时间思考,但是要 15min 内看完所有题目。A、B 有多快写多快,最坏要控制在 10 点前写完。如果真的 1.5h 还…

软件测试:基本概念二

无文档情况下的测试 这是一个非常现实且常见的问题。在很多中小企业或敏捷团队中,正式的需求文档(PRD)确实可能缺失或不完善。但这并不意味着测试无法进行,反而对测试人员提出了更高的要求——从“需求验证者”转变…

docker 复制远程镜像本地并创建容器

#!/bin/bash # 简化版Docker镜像迁移脚本 # xx.sh root@127.0.0.1 xxx:latest containername set -e#if [ $# -ne 3 ]; then # echo "用法: $0 <远程主机> <镜像名> <容器名>" # ec…

上两个GPT写的锁,一个是文件锁,一个是Redis锁,写的那是相当的完美

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 简易文件锁(多进程通用)- 基于 fcntl.flock(POSIX 系统:Linux / macOS) - 支持超时等待、轮询间隔 - 支持 with 上下文管理 ""&qu…

DP动态规划进阶

摘自其他小组的总结Part 0 引言 dp(Dynamic Programming,动态规划),如何理解?动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 ——OI-Wiki感性理解,你有一个问题,输入一个数 \(n…

笔记本电脑外接显示器偶尔不亮

我的笔记本电脑通过一条雷电4转dp1.4的线连接了一个显示器,显示设置为只在这个外接显示器上显示。 最近Windows11系统更新之后,电脑开机,有时候外接显示器不能接收到信号源,无法正常亮起,笔记本本身的屏幕会正常亮…

11月27号

今天上午数据结构上机,还有跆拳道体育课

小马算力助力”欧陆词典翻译引擎“

ai-api 小马算力助力“欧陆词典翻译引擎“ 1 打开欧陆词典 1.1 欧陆词典-自定义大模型引擎 打开欧陆词典-自定义大模型引擎1.2 进入页面如下,2 设置api 推荐使用小马算力第三方,量大管饱。(大模型可以用我这个第三方…

2025-11-27-模拟赛

难受啊,怎么让我 3h 还是比我搞 100pts??? 考试中 T1 很贪心啊,然后写写写,过不了大样例?哦,好像知道正解了,写写写,不知道哪里错了,但是确实就是正解思路! T2 最后 1h 开的,看到这个数据范围:\(n \le 2…

软件测试:基础概念一

软件测试的定义和分类 一、软件测试的定义 软件测试的定义可以从不同角度理解,但核心思想是一致的。 1. 经典定义: 软件测试是使用人工或自动化的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定…

11月28号

今天上午没课,下午形势与政策

了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数

在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函…

2025全年套管、绝缘套管、热收缩套管、热缩套管、热缩管厂家综合推荐与选购指南

摘要 随着新能源、智能制造等行业的快速发展,热收缩套管作为重要的绝缘保护材料,在2025年迎来更广阔的应用前景。本文基于行业发展趋势和用户实际需求,整理了五家值得关注的热收缩套管品牌(排名不分先后),重点推…