立即咨询

电话咨询

微信咨询

立即试用
商务合作

腾讯云RAG技术:提升代码质量的秘籍

2024-11-04

icon背景

无论是敏捷开发还是传统瀑布开发流派,软件质量不仅依赖于架构和项目管理,而且与代码质量紧密相关。 ---《代码整洁之道》

随着企业代码规模的增长,代码质量成了企业研发管理重要的一环,通过代码规范来规范研发人员编码习惯,从而提升代码质量是大多企业主要的举措。

在AI时代,在编码阶段研发人员是否就能按编码规范去编写代码,降低返工?AI 代码助手能否帮研发人员进行代码自检和自修复,来提升代码质量?

近期腾讯云 AI 代码助手上线了 RAG 知识库,我们可将代码规范文档上传到自定义知识库中实现代码自检和自修复,提升代码质量,支持个人/企业自定义 RAG 知识库,下面我们进行了解腾讯云AI代码助手 RAG 如何落地实践的。

iconRAG 技术设计规范

RAG 通过工程化手段,解决 LLM 知识更新困难的问题。其核心方法是利用外挂方式,将企业的 LLM 知识数据库(通常使用向量数据库)未训练数据集、领域数据等数据进行外挂给大模型。RAG 将知识问答分成三个阶段:索引、知识检索和基于内容的问答。另外,RAG 包含两个核心要素,即数据和系统。

企业使用 RAG 的目的是提升模型返回效果,主要为以下方面:

  • 减少大模型在回答问题时的幻觉问题

  • 让大模型的回答可以附带相关的来源和参考

  • 消除使用元数据注释文档的需要

1. 数据层面  

数据即“知识库”,通常支持文档、压缩包、代码等多类型知识库。

  • 文档:支持 .md, .markdown, .docx, .pdf 格式

  • 压缩包:支持.zip, .tar, .tgz, .tar.gz, .gz, .gzip格式

  • 代码:非二进制的代码文件

注:知识库文档本身的质量也要注意,正如说过的 “Quality In, Quality Out”

2、系统层面

知识库收集和数据预处理

知识库内容获取,包括文档、代码、配置文件、编译文件等等;需要有一套常规的流程对文件进行区分,不同的文件后续可能会有不同的处理逻辑,区分开来能够大幅提高后续处理效率。

文档:需对内容进行切片,包括进阶操作,分段切片、chunk overlap、关键词提取、内容标签等。

代码:需要对内容进行切片,包括进阶操作,添加注释总结提示。

配置文件:这类信息针对性强,独立信息有效性,依赖上下文,需回归到文档引用处或代码调用处进行展开,不建议单独构成索引

编译文件:这些内容经编码和加密,其内容具有一定的噪声,需清洗过滤。

代码切分

代码的检索在以往是一个较少见的领域,不同于文本的切分,代码具有严格的格式规范,贸然切分往往会丢失有用的上下文信息,从而使效果变差。

在切分的时候,我们尝试使用 AST 的代码结构树来提取不同语言的代码块,以 function 为最小提取粒度,旨在合理化的切分整个代码文件。

注释生成

为了防止代码匹配带来过多的噪声引入,我们尝试为代码块提供注释(总结)的生成,以便增加代码块的信息密度,提升其与问题(自然语言)之间的匹配准确率。

切片和向量化

切片:知识库文件种类繁多长短参差不齐,如果以完整的文档作为索引的基本单位往往会引入大量无关的噪声影响召回效果,因此合理的切片是保证召回内容准确性的核心步骤之一。

向量化:除了传统的全文召回,为了提升语义匹配和上下文理解匹配的效果,还需要引入基于向量的匹配模式。

问答知识库检索召回

在索引构建完毕后,就能够根据用户的问题在知识库索引中找到与之相匹配的内容。索引的过程作为 RAG 的核心之一,对后续大模型生成的影响尤为明显。索引的召回同样对于 RAG 的流程而言至关重要,采用多路召回的策略可以有效提高内容的命中率,有效贯彻 deep&wide 的思想。

通常召回包括以下三类:

  • 大模型向量库召回

  • 基于 bert 语义向量/张量召回

  • 统计自然语言召回

icon在 AI 代码助手上操作实践 RAG

基于 RAG 技术,腾讯云 AI 代码助手团队在 RAG 进行深入研究,并进行产品化落地,在腾讯集团内也接入大量知识库规范,并获得不错的反馈效果。

下面以 JavaScript 和 JAVA 代码规范为例,通过腾讯云 AI 代码助手 RAG 功能帮助研发人员发现变量命名、路径错误、正则表达式、变量赋值及异常处理不规范的问题,从而提升代码质量。

1、前提条件

注册腾讯云AI代码助手旗舰版,点击“原文链接” 进行抢先免费注册

2、创建代码规范知识库

创建自定义知识库只需要如下几步操作即可

第一步,创建知识库空间

第二步,上传代码规范 zip

点击并下载成 ZIP 包后,然后拖拽到当前页面后,点击确定后,会解压并返回到知识库的首页展示文件列表,每个文件都有直观的索引状态展示。

第三步,等待索引完毕后开启知识库

返回知识库首页,开启知识库。

3、以 VSCode 中使用 RAG 知识库为例

准备事项:

1、安装腾讯云 AI 代码助手插件

2、准备一个代码工程

3、准备一个代码规范知识库

场景一:使用 AI 代码助手检查代码规范,修复问题

第一步,选中我们需要优化的代码,会基于现有规范进行检测

第二步,点击腾讯云 AI 代码助手图标,在侧边栏 chat 区域输入 @workspace /fix #CodeStyle 指令解析,发现问题

除了可以一键优化代码之外,AI 代码助手还会帮我们总结修改的问题,便于参考

场景二:使用 AI 代码助手 技术对话 + RAG 方式生成符合代码规范的代码

这里我们以 JAVA 实现 SSH 远程执行命令为列:

实现效果展示

icon结语

以上是基于腾讯云 AI 代码助手 RAG 新特性,将企业内部规范通过 RAG 方式来提升代码质量的实践。

更多产品了解

欢迎扫码加入云巴巴企业数字化交流服务群

产品交流、问题咨询、专业测评

都在这里!

 

热门数字化产品

航信云享·票据管理系统航信云享·票据管理系统为全量票据收集,建立企业全量票据中心。自动处理价格、折扣、税率和合计等发票信息,大大减少人工处理的误差,提高了工作效率。对企业的票据管理进行系统化、统一化的管理,提高了票据管理的效率和准确性,为企业节省了时间和人力成本。
Zoho Projects项目管理软件Zoho Projects项目管理软件,帮助您轻松地进行项目规划、进度跟踪、内外协作。它利用工时统计、Bug管理、项目知识库管理等功能,帮助您实现业务目标。为您的项目管理工作提供全面综合的解决方案,从而帮助您和您的企业大幅创造价值。
跨境云手机跨境云手机,基于自主知识产权的磐玉蜂巢服务器及创新的容器化技术, 跨境云产品以“ 高安全性、高能效比、高性价比” 为价值理念, 持续构建丰富的ARM云产品矩阵, 帮助客户以更低成本获得安全稳定、绿色节能、高效敏捷的ARM云服务和云算力,为跨境直播带货,海外市场营销和进出口贸易,跨境电商出海创造更多可能。
堆雪球 SCRM私域运营管理系统堆雪球科技有限公司,是一家专注微信生态,帮助客户进行风控管理、销售提效、私域运营、自动化营销,致力于让企业营销高效可控,过程更聪明。 堆雪球目前旗下拥有: 客户营销解决方案、私域营销系统、线索导流方案、上下游配套资源。
腾讯电子签腾讯电子签是一款为企业及个人提供安全、便捷的电子合同签约及证据保存服务的产品。 您可以在实名认证的前提下,与约定方完成线上签约,并将签约过程进行存证保全以确保签约公信力。 腾讯电子签致力于降低您的运营成本,提升多端签署效率。
为你推荐
2025腾讯产业合作伙伴大会|云巴巴荣获双项大奖,载誉而归

1月16日,2025腾讯产业合作伙伴大会在三亚召开。云巴巴,荣膺“2024腾讯云卓越合作伙伴奖—星云奖”和“2024腾讯云AI产品突出贡献奖”双项大奖

2025-01-17
传统AI代码工具效率低下?TAPD MCP Server让开发效率与质量双倍飙升

腾讯TAPD作为国内领先的敏捷研发管理平台,可以说是最早拥抱MCP的研发管理工具之一,凭借其全生命周期的研发管理能力,成为AI代码助手的“最强外挂”,其创新功能直击开发痛点。

2025-04-25
如何提升政企客户服务效率?协同管理+规模触达成政企服务质量选型新标准

基于预设规则和对象特征,让消息推送更智能更精准,帮助企业打通内外部系统的数据系统,实现更多灵活、更个性化的营销和服务能力开发。

2025-04-25
如何利用数据分析做好活动营销?海纳嗨数让活动策划执行更加高效便捷

海纳嗨数凭借其专业的数据分析能力,为企业提供从数据采集到深度洞察的一站式解决方案,助力活动策划与执行实现质的飞跃。

2025-04-25
复杂网络环境下,如何通过弱网加速与源站高可用技术架构保障业务零中断?

网宿科技全站加速产品以弱网优化与源站灾备技术矩阵,构建全链路加速体系,通过核心技术为多场景提供端到端保障,实现弱网效率跃升、源站切换无感,助企业突破网络桎梏。

2025-04-24
查看更多