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

FDE知识库

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


收藏

预生成上下文:重构 RAG 的关键工程,构建 AI 编程底座

发布日期:2025-05-09 16:58:14 浏览次数: 2308
作者:phodal

微信搜一搜,关注“phodal”

推荐语

探索AI编程的新趋势,了解预生成上下文如何优化RAG模型。

核心内容:
1. 预生成上下文在AI编码领域的应用与优势
2. RAG技术流程中的不确定性因素分析
3. 索引与检索阶段面临的挑战及优化思路

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

在上一篇文章《AI 友好架构:平台工程赋能 AI 自动编程》,我们提及了 DevOps 平台应该大量的预先生成项目、模板、上下文等信息。在这一篇文章中, 我们将详细展开其中的一个核心实践:预生成上下文。

最近的几个月里,预先生成上下文在 AI 编码领域成为了一个热门话题,或者说技术趋势。开发人员受益于这些 AI 生成的 Wiki,用于 快速理解开源项目的用途、技术架构。尽管,从理解深度来说,现在的基于 RAG、文档检索的方式还有待提升,还需要加入基于 AST 的上下文分析,来 提升准确度和覆盖度。但是从效率上来说,预生成上下文的方式已经成为了一个趋势。

因此,我们开始为 AutoDev 开发一个新功能 Context Worker,旨在通过预生成上下文来提升 RAG 的效果。如果你对这个功能感兴趣,欢迎加入我们的 GitHub:https://github.com/unit-mesh/autodev-work

引子:谁都会,但谁都做不好的 RAG

2023 年,LangChain 框架的出现从某种意义上简化(也从某种意义上复杂化)了 AI 应用的开发,RAG (Retrieval Augmented Generation) 也成为了一个热门的应用开发领域概念。RAG 的核心思想是将检索和生成结合起来,通过检索相关信息来增强生成模型的能力。

技术因素:不确定的 RAG,随机的模型生成

RAG 流程中的每一个环节都可能引入变数,这些变数累积起来,形成了影响最终效果的“不确定性链条”。

通常,主流的 RAG 实现包含两个主要阶段:

  1. 索引阶段。将非结构化、结构化的数据(个人无法理解)以某种拆分方式拆分,进行向量化(可选),存储到数据库中。

  2. 检索阶段。对用户的输入进行转换,进行向量化(可选),在数据库中进行检索,返回相关的上下文信息,再经过一定的处理(可选),传递给生成模型进行生成。

这个过程中存在大量的不确定性因素,导致了 RAG 的效果往往不如预期。

索引阶段:知识库构建的质量直接决定了后续检索的上限。其核心难点包括:如何合理分块以保留语义完整性(尤其是代码边界)、 选择合适的嵌入模型进行向量化、以及针对多源数据进行有效预处理,避免“垃圾进、垃圾出”。

检索阶段的挑战:即使用户查询意图明确,从索引中高效准确地找到相关信息也非易事。精准检索需解决查询歧义、提升搜索能力(如混合搜索、HyDE)、 进行结果重排序(Re-ranking),并控制上下文长度以防信息丢失或干扰生成。

最后,由于 LLM 本身在生成回复时也会引入随机性。模型对查询意图的理解以及对检索到的上下文信息的解读都可能存在偏差,这导致即使输入完全相同, 输出结果也可能不一致或不准确。RAG 系统非常依赖外部数据的质量和相关性;如果检索过程出现偏差,生成阶段的质量必然会受到影响。

业务因素:大量的垃圾知识在影响到 RAG 的效果

去年,我们在与大量企业交流时发现:企业中海量的文档和代码(“文档太多”)带来了重大挑战。代码的版本化和文档的版本化方式是不一致的。通常来说,你 在流水线上通过的代码就是可以 work 的,但是你很难从 04-03.docx 和 修订版 12.docx 中判断出哪个是最新的版本。即使你能判断出哪个是最新的版本,你也很难判断出这个版本是否是正确的版本。

因此,质量参差不齐(“质量不齐”)进一步使问题复杂化,因为模型在即时处理时可能会从次优或错误的示例中学习或检索信息(用户查询)。如果引导不当,生成式 AI 可能会产生有害的、虚假的或剽窃的内容,当输入数据庞大且未经整理(即未经过预处理和筛选)时,这些风险会放大。

在这种文档数据背景下,即使拥有最优秀的文本分块、向量嵌入和检索算法,它们也只能在充满噪声、过时或错误的数据之上运行。其结果是,RAG 系统非但不能解决企业原有的信息混乱问题,反而可能延续甚至放大这些问题。

代码检索:从结构化检索到 DeepWiki

生成式 AI 能很好解决创建新项目的问题,但是对于理解和修改存量的代码,依然会有大量的挑战。在软件工程师和 AI 研究员各自有各自不同的思考, 工程师讲究的是经典的工程化思维,AI 更多的是大力飞砖的新一代方式,两种思维方式在过去的几年里不断的交融。

当前主流的 AI 编程工具在代码检索方面采用了多样化的策略,它们通常结合了传统的基于关键字和结构的方法与新兴的 AI 技术,以期在速度、准确性和上下文理解之间取得平衡。

关键信息检索:工程思维与结构化索引

当你的检索需要在客户端运行的时候,你需要考虑到性能和效率的问题。你需要考虑到如何在本地的机器上进行高效的检索,而不是依赖于云端的计算能力。

而代码本身是结构化的,但是并不意味着主流的代码检索方式是结构化的。我们在之前的文章中提到过,主流的代码检索方式有两种:

  • 基于关键信息的检索:如 Cline、Copilot、Cursor 等

  • 基于代码和文本的检索:如 Bloop、SourceGraph Cody 等

而从现有的方式来看,主流的是基于关键信息的检索方式。诸如于:

  • Cline:AST(抽象语法树) + 正则检索

  • Copilot(2024):生成关键词 + TreeSitter AST(抽象语法树)中的关键信息(类、方法名等)搜索

  • Cursor:Ripgrep 文本搜索 + 云端的向量化

  • Continue:基于 SQLite 的文本搜索 + LanceDB 本地向量化

  • ……

简单来说,它们都是基于关键信息来进行检索的,只需要对代码的类名、方法名、变量名等进行检索即可。所以,用户的输入是一个关键词,或者是一句话,再交由 模型来转换成查询条件,最后交给模型总结即可。

不过,关键词检索速度快,但其对用户意图的理解有限,容易产生不相关的结果。而基于抽象语法树的检索虽然能理解代码结构,但在处理语义相似性方面存在不足。

关键文档生成:预生成代码库文档

当你的检索可以在云端运行的时候,又需要考虑到性能和效率的问题,预先生成文档就变成一个非常好的方案:它可以解决存量大量文档的老旧问题,并且可以 提升非常高效的检索效率。

如下是我们结合 DeepResearch 调研的:代码文档工具中预生成策略对比分析

如我们开头所说,尽管从理解深度来说,现在的基于 RAG、文档检索的方式还有待提升,但是一旦成为技术趋势,那么就会有大量的工具和平台开始支持这个趋势。

而这些工具在面对复杂或包含隐式逻辑的代码时,由于缺少准确的代码关联关系,对于缺少文档或者大型项目来说,就变得非常有限。

与之相似的,在模型能力进一步加强之后,AI 友好的文档也是一个非常重要的话题。文档中的代码准确性就变得更加重要,错误的文档和知识,刚会 让你的 AI 助手变得难以信任。

预生成上下文

预生成上下文是指在用户发起查询或生成请求之前,系统针对特定代码仓库、文档或 SDK,离线构建一组结构化的上下文数据。这些上下文经过理解、 加工与组织,使其在运行时能够被快速检索和引用,从而提升代码智能体在生成、解释或检索代码时的准确性、相关性和响应速度。

其核心要素包含:

  • 文档与代码的抽取与解析:包括 API 文档、源码注释、示例代码、变更日志等;

  • 语义理解与摘要生成:提取关键能力、用途、限制等元信息;

  • 向量化与索引构建:为快速语义检索构建 embedding 索引;

  • 版本绑定与内容更新策略:确保上下文始终与特定版本保持一致;

AutoDev 探索:AutoDev Context Worker

基于上述的想法和研究,我们开始构建 AutoDev Context Worker。结合我们的 AutoDev IDE 插件的能力,以下是我们的基本思路:

  • 深度项目解析与 AST 构建结构化,Context Worker 对整个项目(或指定的模块范围)进行深度解析。这包括构建完整的 AST,识别所有的函数、类、接口及其签名、注释(docstrings)。同时,分析项目依赖(内部模块间和外部库依赖),构建初步的依赖图。

  • 自动化代码摘要与“意图”标注:对于缺乏良好注释的代码块(函数、复杂逻辑段),尝试使用 LLM 预先生成简洁的摘要或“意图描述”。对于一些关键的架构组件或核心算法,可以预先打上特定的标签或元数据。

  • 构建项目级知识图谱:将解析出的代码实体(类、函数、变量等)及其关系(调用、继承、实现、引用等),并围绕领域模型构建知识图谱, 标注实体的语义和上下文信息。

  • ……

通过这些预计算和预组织工作,Context Worker 旨在为 AI 辅助研发功能(如代码生成、缺陷修复、代码重构、需求理解等)提供高质量、即时可用、 深度结构化的上下文。解决了传统 RAG 在处理复杂代码时可能出现的上下文不完整、不准确、检索效率低等问题,从而更好地实现 “AI 友好架构”的理念, 赋能更高级别的 AI 自动编程能力。

总结

本文探讨了预生成上下文作为增强 AI 编程能力的关键机制。传统 RAG 方法面临的不确定性和知识质量问题,使得预生成上下文成为一种更可靠的替代方案。通过对比分析了当前代码检索方法的局限性,我们看到基于关键信息检索虽快速但理解有限,而 DeepWiki 等预生成文档工具虽有进步但在处理复杂代码逻辑时仍有不足。

预生成上下文代表了 AI 友好架构的重要实践,它将传统软件工程的结构化思维与AI大模型的生成能力相结合,为下一代智能编程工具铺平了道路。通过主动构建而非被动检索代码上下文,我们能够更好地赋能AI理解和修改现有代码库,使开发者能够更专注于创造性工作,而非重复性任务。


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

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

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

联系我们

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

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

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

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

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

一、 定义

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

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

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

二、 账号注册与登录

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

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

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

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

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

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

三、 服务内容与规范

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

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

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

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

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

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

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

四、 知识产权声明

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

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

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

五、 个人信息保护

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

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

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

六、 免责声明

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

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

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

七、 违约责任

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

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

八、 法律适用与争议解决

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

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

九、 其他

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

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

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


已查阅