分享

Nov 7, 2024

利用 Gemini 模型长上下文功能增强 AI 编码助理的功能

Beyang Liu

Sourcegraph

Paige Bailey

AI 开发者体验工程师

Vishal Dharmadhikari

产品解决方案工程师

Sourcegraph 展示主图

在长上下文窗口的应用方面,最令人兴奋的前沿领域之一是代码生成和理解。大型代码库需要深入了解复杂的关系和依赖项,而传统 AI 模型难以掌握这一点。通过扩大具有大上下文窗口的代码量,我们可以将代码生成和理解的准确性和实用性提升到新水平。

我们与 Cody AI 编码助理的创建者 Sourcegraph 合作,共同探索长上下文窗口在实际编码场景中的潜力。Cody AI 编码助理支持 Gemini 1.5 Pro 和 Flash 等 LLM。Sourcegraph 专注于将代码搜索和智能功能集成到 AI 代码生成中,并成功将 Cody 部署到 Palo Alto Networks 和 Leidos 等具有庞大复杂代码库的企业,因此成为此次探索的理想合作伙伴。

Sourcegraph 的方法和结果

Sourcegraph 将 Cody 在 100 万个 token 的上下文窗口中的性能(使用 Google 的 Gemini 1.5 Flash)与其正式版进行了比较。通过这种直接比较,他们能够找出扩展上下文的优势。它们专注于技术问题解答,这对于处理大型代码库的开发者来说是一项至关重要的任务。他们使用了一个需要深入了解代码的难题数据集。

结果令人瞩目。Sourcegraph 的三项关键基准(必要召回率、必要简洁性和帮助性)在使用更长的上下文时均表现出显著的改进。



  • 基本事实回忆:回答中关键事实的比例大幅增加。

  • 基本简洁性:按回答长度归一化的基本事实比例也有所提高,表明回答更加简洁相关。

  • 实用性:总体实用性得分(按回答长度进行归一化处理)显著提高,表明用户体验更加友好。

此图片的替代文本:条形图,显示了使用 Gemini 1.5 Flash 时,代码库与 Cody 之间的质量改进

此外,使用长上下文模型可大幅降低总体误区率(生成的事实上不正确的信息)。幻觉率从 18.97% 降至 10.48%,准确性和可靠性显著提高。

条形图:显示了 Code base 和 Cody with Gemini 1.5 Flash 之间的幻觉率差异

权衡和未来方向

虽然长上下文有诸多好处,但也有一些缺点。从开始生成到生成第一个令牌的时间随上下文长度线性增加。为了缓解这一问题,Sourcegraph 实现了预取机制和分层上下文模型架构,用于缓存模型执行状态。借助 Gemini 1.5 Flash 和 Pro 长上下文模型,我们优化了首次生成 token 的时间,将 1MB 上下文的首次生成 token 时间从 30-40 秒缩短到大约 5 秒,这对于实时代码生成和技术支持来说是一项重大改进。

此次合作展示了长上下文模型在彻底改变代码理解和生成方面的巨大潜力。我们很高兴能与 Sourcegraph 等公司合作,继续利用大上下文窗口发掘更多创新应用和范式。

如需深入了解 Sourcegraph 的详细评估方法、基准和分析(包括示例),请务必阅读其深度博文