Bahubali Shetti

Elastic 基于 RAG 的 AI 助手:使用 LLM 和私有 GitHub 问题分析应用程序问题

在本博客中,我们将回顾如何将来自内部和外部 GitHub 存储库的 GitHub 问题和其他 GitHub 文档用于 Elastic 基于 RAG 的 AI 助手的根本原因分析。

10 分钟阅读
Elastic's RAG-based AI Assistant: Analyze application issues with LLMs and private GitHub issues

作为 SRE,分析应用程序比以往任何时候都更加复杂。您不仅要确保应用程序以最佳状态运行以确保良好的客户体验,而且在某些情况下,您还必须了解其内部运作方式以帮助进行故障排除。分析基于生产的服务中的问题是一项团队合作。它需要 SRE、DevOps、开发和支持来找出根本原因并可能进行补救。如果它正在产生影响,情况会更糟,因为这在与时间赛跑。无论情况如何,都需要消耗和处理大量信息。这不仅包括客户正在体验的内容,还包括内部数据,以帮助提供最合适的解决方案。

Elastic 的 AI 助手有助于改进 SRE、DevOps、开发人员和其他人员的分析。在一个窗口中使用自然语言问题,您不仅可以使用一般信息进行分析,还可以将其与以下内容结合使用:

  • 来自内部 GitHub 存储库、Jira 等的问题

  • 来自 Confluence 等内部 wiki 网站的文档

  • 来自您的支持服务的客户问题

  • 以及更多

在本博客中,我们将引导您了解如何:

  1. 将外部 GitHub 存储库(OpenTelemetry 演示存储库)中的代码和问题摄取到 Elastic 中。应用 Elastic Learned Sparse EncodeR (ELSER) 并将其存储在 AI 助手的特定索引中。

  2. 将包含运行手册信息的内部 GitHub 存储库摄取到 Elastic 中。应用 ELSER 并将处理后的数据存储在 AI 助手的特定索引中。

  3. 在使用 AI 助手在 Elastic 中分析 OpenTelemetry 演示的问题时,使用这两个索引。

使用 AI 助手和 GitHub 数据的 3 个简单问题

在我们逐步介绍如何设置来自 GitHub 的数据之前,让我们回顾一下 SRE 可以使用 AI 助手和 GitHub 存储库做些什么。

我们最初使用 Elastic GitHub 连接器连接到 GitHub,并摄取和处理两个存储库:OpenTelemetry 演示存储库(公共)和一个内部运行手册存储库(Elastic 内部)。

通过 ELSER 加载和解析这两个存储库后,我们向 AI 助手提出一些在分析期间通常会问的简单问题。

OpenTelemetry 演示有多少个未解决的问题?

由于我们摄取了整个存储库(截至 2024 年 4 月 26 日),文档计数为 1,529,我们提出了一个关于未解决问题总数的简单问题。我们特别告诉 AI 助手搜索我们的内部索引,以确保 LLM 知道要求 Elastic 搜索其内部索引以获取问题总数。

Video Thumbnail

基于 Rust 的 shippingservice 是否有任何问题?

Elastic 的 AI 助手使用 ELSER 遍历加载的 GitHub 存储库,并找到针对 shippingservice 的未解决问题(在撰写本文时是以下问题)。

Video Thumbnail

Cartservice 是否有运行手册?

由于我们加载了一个包含一些示例运行手册的内部 GitHub 存储库,因此 Elastic AI 助手正确找到了该运行手册。

Video Thumbnail

在浏览本博客的过程中,我们将讨论 AI 助手如何使用 ELSER 查找这些问题,以及如何配置它以使用您自己的 GitHub 存储库。

使用 Elastic AI 助手的检索增强生成 (RAG)

Elastic 拥有最先进的基于 RAG 的 AI 助手,可用于可观测性和安全性。它可以帮助您使用以下工具分析数据:

  • 您最喜欢的 LLM(OpenAI、Azure OpenAI、AWS Bedrock 等)

  • 您可以连接或带入 Elastic 索引的任何内部信息(GitHub、Confluence、客户问题等)

Elastic 的 AI 助手可以做到这一点的原因是它支持 RAG,这有助于检索内部信息以及基于 LLM 的知识。

将 SRE 的相关内部信息添加到 Elastic

  • 当数据进入时,例如在您的 GitHub 存储库中,ELSER 会应用于数据,并且会添加嵌入(权重和标记到稀疏向量字段中)以捕获数据的语义含义和上下文。

  • 此数据(GitHub、Confluence 等)经过嵌入处理,并存储在可以由 AI 助手搜索的索引中。

当您向 AI 助手查询信息时

  • 该查询使用 ELSER 经历与摄取数据相同的推理过程。输入查询生成一个“稀疏向量”,该向量用于在摄取的数据(GitHub、Confluence 等)中查找最相关的、排名最高的信息。

  • 然后,将检索到的数据与查询结合,并也发送到 LLM,LLM 会添加自己的知识库信息(如果有任何需要添加的信息),或者可能会要求 Elastic(通过函数调用)进行进一步分析、图表绘制,甚至是搜索。如果向 Elastic 发出函数调用并提供响应,则 LLM 会将其添加到其响应中。

  • 结果将是基于上下文的答案,该答案结合了 LLM 和来自您内部数据的任何相关内容。

应用程序、先决条件和配置

如果您想尝试本博客中的步骤,以下是一些先决条件:

  • 一个 Elastic Cloud 帐户 — 立即注册

  • OpenTelemetry 演示正在运行并已连接到 Elastic (APM 文档)

  • 您要使用的任何内部 GitHub 存储库,其中包含一些对分析有用的信息(在我们的演练中,我们将使用一个 GitHub 存储库,该存储库包含 Elastic 在演示时用于不同场景的运行手册)。

  • 拥有您最喜欢或批准的 LLM 的帐户(OpenAI、Azure OpenAI、AWS Bedrock)

将 GitHub 存储库添加到 Elastic

第一步是设置 GitHub 连接器并连接到您的 GitHub 存储库。Elastic 具有来自 GitHub、Confluence、Google Drive、Jira、AWS S3、Microsoft Teams、Slack 等的多个连接器。因此,尽管我们将在本博客中介绍 GitHub 连接器,但不要忘记其他连接器。

选择 GitHub 连接器并为其命名后,您需要添加两个项目:

  • GitHub 令牌

  • URL open-telemetry/opentelemetry-demo

接下来,将其添加到向导中的索引。

创建管道并使用 ELSER 处理数据

为了添加我们在上一节中讨论的嵌入,我们需要将以下内容添加到连接器:

  • 在配置向导中创建管道。

  • 创建自定义管道。

  • 添加 ML 推理管道。

  • 选择 ELSERv2 ML 模型以添加嵌入。

  • 选择需要作为推理管道一部分进行评估的字段。

  • 测试并保存推理管道和整个管道。

同步数据

现在管道已创建,您需要开始同步 github 存储库。当来自 github 存储库的文档进入时,它们将通过管道,并添加嵌入。

嵌入

设置好管道后,同步连接器中的数据。当 GitHub 存储库进入时,推理管道将按如下方式处理数据:

  • 当数据从您的 GitHub 存储库进入时,ELSER 会应用于数据,并且会添加嵌入(权重和标记到稀疏向量字段中)以捕获数据的语义含义和上下文。

  • 此数据经过嵌入处理,并存储在可以由 AI 助手搜索的索引中。

当您查看摄取的 OpenTelemetry GitHub 文档时,您将看到如何将权重和标记添加到索引中的 predicted_value 字段。

这些嵌入现在将用于查找当用户向 AI 助手提出查询时,在上下文中最为相关的文档,这可能会用到这些嵌入。

检查 AI 助手是否可以使用索引

Elastic 的 AI 助手使用 ELSER 遍历加载的 Github 存储库,并找到针对 shippingservice 的未解决问题。(在撰写此文时,该问题是 此问题)。

Video Thumbnail

根据响应,我们可以看到 AI 助手现在可以使用索引来查找问题,并将其用于进一步的分析。

结论

您现在已经了解了 Elastic 基于 RAG 的 AI 助手是多么容易设置。您可以从多个位置(GitHub、Confluent、Slack 等)引入文档。我们展示了 GitHub 和 OpenTelemetry 的设置。这些内部信息在管理问题、加速解决和改善客户体验方面非常有用。请查看我们的其他博客,了解 AI 助手如何帮助 SRE 进行更好的分析,降低 MTTR 并改善整体运营。

尝试一下

现有的 Elastic Cloud 客户可以直接从 Elastic Cloud 控制台 访问许多这些功能。还没有利用云上的 Elastic?开始免费试用

所有这些也可以在您的环境中实现。了解如何立即开始

此帖子中描述的任何特性或功能的发布和时间安排仍由 Elastic 自行决定。任何当前不可用的特性或功能可能不会按时交付,或者根本不会交付。

在此博客文章中,我们可能使用了或引用了第三方生成式 AI 工具,这些工具由其各自的所有者拥有和运营。Elastic 不对第三方工具进行任何控制,并且我们对其内容、操作或使用,以及因您使用此类工具而可能造成的任何损失或损害不承担任何责任。在使用具有个人、敏感或机密信息的 AI 工具时,请谨慎行事。您提交的任何数据都可能用于 AI 训练或其他目的。我们无法保证您提供的信息会被安全或保密。您应该在使用任何生成式 AI 工具之前,熟悉其隐私做法和使用条款。

Elastic、Elasticsearch、ESRE、Elasticsearch Relevance Engine 和相关标记是 Elasticsearch N.V. 在美国和其他国家的商标、徽标或注册商标。所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。

分享这篇文章