2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

提升AI编程助手上下文理解能力:集成RAG与SEM-RAG技术

发布日期:2024-07-24 21:38:18 浏览次数: 3810

基本的 AI 编程助手虽然很有帮助,但由于它们依赖于对软件语言的一般理解和编写软件的最常见模式,因此通常无法提供最相关和上下文准确的代码建议。这些编程助手生成的代码适合解决他们所承担的问题,但通常与单个团队的编码标准、约定和风格不一致。这通常会导致需要修改或优化其建议,以便代码被应用程序接受。

AI 编程助手通常依靠特定大型语言模型 (LLM) 中包含的知识,并在各种场景中应用通用编码原则来发挥作用。因此,典型的 AI 助手通常缺乏理解项目特定上下文的能力,导致建议虽然在语法上正确,但可能与团队的独特准则、预期方法或架构设计不一致。支撑生成式 AI 系统的 LLM 基于一组固定的训练数据运行,这些训练数据不会随着项目的进展而动态发展。这种静态方法可能会导致生成的代码与项目的当前状态或需求不匹配,从而需要开发人员进行进一步的手动调整。



使用 RAG 优化 LLM


有一种误解,即 AI 助手只是与 LLM 交互以生成用户正在寻找的结果。无论您是生成文本、图像还是代码,最好的 AI 助手都会使用一套复杂的准则来确保用户请求的内容(例如,完成特定任务的软件函数)和生成的内容(Java 函数,在正确的版本中,具有正确的应用程序参数)是对齐的。

从任何 LLM 中获得最佳输出的行之有效的技术之一是通过提示提供额外的上下文。这种方法被称为检索增强生成 (RAG),已成为聊天机器人、AI 助手和成功服务于企业用例的代理的关键组成部分。

“使用一个对你现有的代码库和你的编码标准没有充分了解的人工智能编程助手,就像在街上雇佣一个训练有素的软件工程师:有帮助且用心良苦,但可能会创建需要修改以适应你的应用程序的代码”——Peter Guagenti,Tabnine

AI 编程助手与所有生成式 AI 工具一样,使用 LLM 作为代码生成的基础。为编程助手提供高度定制的 RAG 使他们能够生成质量更高、与公司现有代码库和工程标准更紧密一致的代码。

在聊天机器人领域,RAG 考虑以结构化和非结构化格式提供的现有数据。通过全文或语义搜索,它检索足够的上下文,并将其注入到发送到 LLM 的提示中。

AI 编程助手可以使用类似(尽管更复杂)的方法,通过集成开发环境从现有代码库中检索上下文。高性能的 AI 编程助手可以对项目工作区进行爬网,以访问当前文件、打开的文件、Git 历史记录、日志、项目元数据甚至连接的 Git 存储库中的其他上下文。

RAG 通过考虑项目的特定方面(例如现有的 API、框架和编码模式),使 AI 编程助手能够提供高度相关和精确的结果。AI 助手不是提供通用解决方案,而是定制其指导以符合项目的既定实践,例如建议与当前实现一致的数据库连接,或提供无缝整合私有 API 的代码建议。通过使用 RAG,助手甚至可以生成测试函数,这些函数反映了现有测试的结构、样式和语法,从而确保代码在上下文上准确无误且与项目要求保持一致。

这种方法可以带来无与伦比的个性化,开发人员很容易立即接受。



RAG 在编程助手中的工作原理


让我们看一下为编程助手实现 RAG 所涉及的步骤。

第一阶段是索引和存储。最初,当编程助手安装并集成到开发环境中时,它会执行搜索并识别所有可以添加上下文的相关文档。然后,它将每个文档拆分为块,并将它们发送到嵌入模型。嵌入模型负责将每个块转换为向量,而不会丢失其语义表示。生成的向量存储在向量数据库中,以备将来检索。编程助手可以定期扫描工作区并将文档添加到矢量数据库中。

在下一阶段,编码中,开发人员可以创建评论或使用聊天助手生成特定函数。助手使用提示对矢量数据库中存储的先前索引集合执行相似性搜索。检索此搜索的结果,并用于使用相关上下文来增强提示。当 LLM 收到增强的提示和上下文时,它会生成一个代码片段,该代码片段与上下文中已存在的代码保持一致。

将 RAG 应用于编程助手可以提高 LLM 生成的代码的性能、准确性和可接受性。它显著增强了工具的实用性,并减少了开发人员花费在重写或调整 AI 生成的代码上的时间。与项目现有代码库直接对齐可以提高代码建议的准确性,并大大提高开发人员的工作效率和代码质量。

“使用一个没有充分了解你现有代码库和编码标准的人工智能编程助手,就像在街上雇佣一个训练有素的软件工程师:乐于助人且用心良苦,但可能会创建需要修改以适应你的应用程序的代码。当你在正确的上下文级别(包括本地文件、项目或公司的代码库以及相关的非代码信息源)中分层时,这就像让一位在公司拥有多年经验的高级工程师与你的开发人员坐在一起,“Tabnine总裁Peter Guagenti说,“数字证明了这一点。允许我们使用他们现有代码作为上下文的 Tabnine 用户可以在不修改的情况下接受 40% 的更多代码建议。Tabnine 连接到公司的整个存储库时,这个数字会攀升得更高。”

这是单向的 RAG 解决了阻碍传统编程助手的可扩展性和适应性的限制。随着项目的发展和发展,配备 RAG 的工具会不断学习和适应,根据从代码库收集的新模式和信息来完善他们的建议。这种发展能力使 RAG 成为动态开发环境中高度强大的工具。



用语义记忆增强 RAG


语义检索增强生成 (SEM-RAG) 是 RAG 技术的高级迭代,旨在扩展 RAG 的准确性和情境化。它通过使用语义记忆而不是向量搜索来增强编程助手,将语义理解集成到检索过程中。

与主要依靠向量空间模型来检索相关代码片段的传统 RAG 不同,SEM-RAG 采用了更细致的语义索引方法。这种方法利用静态分析来深入了解代码库的结构和语义,识别代码元素中的关系和依赖关系。

例如,SEM-RAG 可以分析 Java 和 TypeScript 等语言的导入语句,使其能够从库中提取上下文相关的代码元素——即使无法直接访问源代码也是如此。此功能使 SEM-RAG 能够理解和利用导入的库的字节码,从而有效地利用这些见解来丰富提供给语言模型的上下文。

虽然传统的 RAG 通过将代码片段的矢量化表示与查询进行匹配,显著提高了代码建议的相关性,但它有时缺乏深度,无法完全掌握复杂软件项目的语义细微差别。SEM-RAG 通过关注代码中的语义关系来解决这一限制,从而更精确地与项目的编码实践保持一致。例如,通过理解项目架构中定义的关系和依赖关系,SEM-RAG 可以提供的建议不仅在上下文上准确,而且在架构上也是连贯的。这通过生成与现有系统无缝集成的代码来提高性能,从而降低引入错误或不一致的可能性。

SEM-RAG 将代码视为互连元素而不是孤立的片段的方法比传统 RAG 提供的更深入的上下文化。这种理解的深度促进了编码任务的更高程度的自动化,特别是在代码库内的相互依赖性至关重要的复杂领域中。因此,SEM-RAG 不仅保留了传统 RAG 的所有优点,而且在理解代码更深层次的语义和结构方面的环境中也超越了它。这使得 SEM-RAG 成为大规模和企业级软件开发的宝贵工具,在这些软件开发中,保持架构完整性与代码正确性同样重要。



利用 AI 提高代码质量和开发人员工作效率


选择一款通过 RAG 和 SEM-RAG 等先进技术整合上下文感知的 AI 编程助手,标志着软件开发工具发展的变革性一步。通过嵌入对代码库上下文的深入理解,这些助手可以显著提高它们生成的代码的准确性、相关性和性能。这种上下文集成有助于确保建议不仅在语法上正确,而且与您的特定编码标准、架构框架和项目特定的细微差别保持一致,从而有效缩小 AI 生成的代码与人类专业知识之间的差距。

支持 RAG 的 AI 助手可显著提高开发人员的工作效率并提高代码质量。开发人员可以依靠这些增强的 AI 助手来生成代码,这些代码不仅适合任务,而且无缝融入更大的项目上下文,从而最大限度地减少修订需求并加快开发周期。通过高精度地自动化编码的更多方面,这些上下文感知编程助手正在为软件开发设定新的标准,推动人工智能工具能够像开发人员本身一样全面地理解和适应项目环境的复杂动态的未来。




END

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅