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

十一月 07, 2024
Vishal Dharmadhikari Product Solutions Engineer
Paige Bailey AI Developer Experience Engineer
Beyang Liu Sourcegraph

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

我们与 Cody AI 编码助理的开发者 Sourcegraph 进行了合作。该助理支持像 Gemini 1.5 Pro 和 Flash 这样的大语言模型。我们的合作旨在探索长上下文窗口在实际编程场景中的潜力。Sourcegraph 专注于将代码搜索和智能整合到 AI 代码生成中,并且已经在拥有大型、复杂代码库的企业(例如 Palo Alto Networks 和 Leidos)中成功部署了 Cody,这些特点使 Sourcegraph 成为了此次探索的理想合作伙伴。


Sourcegraph 所用的方法和结果

Sourcegraph 比较了两个不同版本的 Cody 性能,一个是配备了 1M token 上下文窗口(通过 Google 的 Gemini 1.5 Flash 实现)的版本,一个是生产版本。这种直接对比使他们能够明确区分出扩展上下文带来的好处。Sourcegraph 重点关注技术问题解答,这对于处理大型代码库的开发者来说是一项至关重要的任务。他们使用了一组对代码理解要求颇高的挑战性问题作为数据集。

结果令人瞩目。在 Sourcegraph 的三个关键基准测试,即核心召回率、核心简洁度和帮助性中,使用更长上下文时展现出了明显的改进。

  • 核心召回率:响应中关键事实的比例大幅增加。

  • 核心简洁度:按响应长度归一化后的核心事实比例也有所提高,表明回答更加简洁、相关。

  • 帮助性:按响应长度归一化后的整体帮助性评分显著提升,表明产品更方便用户使用。
Sourcegraph’s key benchmarks

此外,使用长上下文模型大幅降低了整体幻觉率(即生成事实错误信息的情况)。幻觉率从 18.97% 降至 10.48%,在准确性和可靠性方面有了显著的提升。


权衡与未来发展方向

虽然长上下文的好处显著,但也存在一些权衡。首次生成 token 的时间会随着上下文长度的增加而线性增长。为了减轻这一问题,Sourcegraph 实施了预取机制和分层上下文模型架构来进行模型执行状态缓存。借助 Gemini 1.5 Flash 和 Pro 的长上下文模型,这种方法将 1MB 上下文的首次生成 token 时间从 30-40 秒优化到了大约 5 秒,这对于实时代码生成和技术支持而言是一个相当大的改进。

这次合作展示了长上下文模型在革新代码理解和生成方面的变革潜力。我们很高兴能与 Sourcegraph 这样的公司合作,继续探索利用长上下文窗口实现更多创新应用和范式的可能性。

要深入了解 Sourcegraph 的详细评估方法、基准测试和分析,包括说明性示例,欢迎参阅他们的深度博文