背景
无论是敏捷开发还是传统瀑布开发流派,软件质量不仅依赖于架构和项目管理,而且与代码质量紧密相关。 ---《代码整洁之道》
随着企业代码规模的增长,代码质量成了企业研发管理重要的一环,通过代码规范来规范研发人员编码习惯,从而提升代码质量是大多企业主要的举措。
在AI时代,在编码阶段研发人员是否就能按编码规范去编写代码,降低返工?AI 代码助手能否帮研发人员进行代码自检和自修复,来提升代码质量?
近期腾讯云 AI 代码助手上线了 RAG 知识库,我们可将代码规范文档上传到自定义知识库中实现代码自检和自修复,提升代码质量,支持个人/企业自定义 RAG 知识库,下面我们进行了解腾讯云AI代码助手 RAG 如何落地实践的。
RAG 技术设计规范
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 语义向量/张量召回
统计自然语言召回
在 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 远程执行命令为列:
实现效果展示
结语
以上是基于腾讯云 AI 代码助手 RAG 新特性,将企业内部规范通过 RAG 方式来提升代码质量的实践。
更多产品了解
欢迎扫码加入云巴巴企业数字化交流服务群
产品交流、问题咨询、专业测评
都在这里!
2022-11-22 16:13:02
2023-08-17 16:52:31
甄选10000+数字化产品 为您免费使用
申请试用
评论列表