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

news2024/11/13 8:59:34

作者:来自 Bahubali Shetti

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

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

  • 来自内部 GitHub 存储库、Jira 等的问题
  • 来自 Confluence 等内部 wiki 站点的文档
  • 来自你的支持服务的客户问题
  • 还有更多

在此博客中,我们将引导你了解如何:

  1. 将包含代码和问题的外部 GitHub 存储库(OpenTelemetry demo 存储库)导入 Elastic。应用 Elastic Learned Sparse EncodeR (ELSER) 并将其存储在 AI Assistant 的特定索引中。
  2. 将包含运行手册信息的内部 GitHub 存储库导入 Elastic。应用 ELSER 并将处理后的数据存储在 AI Assistant 的特定索引中。
  3. 使用 AI Assistant 分析 Elastic 中 OpenTelemetry demo 的问题时,请使用这两个索引。

未来运维之道:Elastic AI 助手的高效运维与数据智能

使用 AI Assistant 的 GitHub 数据回答 3 个简单问题

在我们介绍设置 GitHub 数据的步骤之前,让我们先回顾一下 SRE 可以使用 AI Assistant 和 GitHub 存储库做什么。

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

通过 ELSER 加载和解析这两个文件后,我们向 AI 助手询问一些分析过程中常见的简单问题。

OpenTelemetry demo 中有多少问题尚未解决?

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

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

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

有适用于 Cartservice 的运行手册吗?

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

在阅读这篇博客时,我们将讨论 AI 助手如何使用 ELSER 发现这些问题,以及如何配置它以使用你自己的 GitHub 存储库。

使用 Elastic AI Assistant 进行检索增强生成 (RAG)

Elastic 拥有最先进的基于 RAG 的 AI Assistant,可实现可观察性和安全性。它可以帮助你使用以下方法分析数据:

  • 你最喜欢的 LLM(OpenAI、Azure OpenAI、AWS Bedrock 等)
  • 你可以连接或带入 Elastic 索引的任何内部信息(GitHub、Confluence、客户问题等)

Elastic 的 AI Assistant 之所以能做到这一点,是因为它支持 RAG,这有助于检索内部信息以及基于 LLM 的知识。

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

  • 当数据进入时(例如在你的 GitHub 存储库中),ELSER 会应用于数据,并添加嵌入(权重和标记到稀疏向量字段中)以捕获数据的语义含义和上下文。
  • 这些数据(GitHub、Confluence 等)使用嵌入进行处理,并存储在 AI Assistant 可以搜索的索引中。

当你向 AI Assistant 查询信息时:

  • 查询使用 ELSER 经过与摄取数据相同的推理过程。输入查询生成一个“稀疏向量”,用于在摄取的数据(GitHub、Confluence 等)中找到最相关的高排名信息。
  • 然后将检索到的数据与查询相结合,并发送给 LLM,然后 LLM 将添加自己的知识库信息(如果有任何内容需要添加),或者它可能会要求 Elastic(通过函数调用)进行分析、绘制图表甚至进一步搜索。如果对 Elastic 进行了函数调用并提供了响应,LLM 会将其添加到其响应中。
  • 结果将是基于上下文的答案,结合了 LLM 和你内部数据中的任何相关内容。

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

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

  • Elastic Cloud 帐户 - 立即注册
  • OpenTelemetry demo 正在运行并连接到 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 token
  • URL open-telemetry/opentelemetry-demo

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

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

为了添加我们在上面部分讨论的嵌入,我们需要向连接器添加以下内容:

  • 在配置向导中创建管道。
  • 创建自定义管道。
  • 添加 ML 推理管道。
  • 选择 ELSERv2 ML 模型以添加嵌入。
  • 选择需要作为推理管道的一部分进行评估的字段。
  • 测试并保存推理管道和整体管道。

同步数据

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

嵌入

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

  • 当数据从 GitHub 存储库进入时,ELSER 将应用于数据,并添加嵌入(权重和标记到稀疏向量场中)以捕获数据的语义含义和上下文。
  • 这些数据使用嵌入进行处理,并存储在 AI 助手可以搜索的索引中。

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

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

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

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

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

结论

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

  • 使用 Elastic AI Assistant 和 APM 分析 OpenTelemetry 应用程序
  • Elastic AI Assistant for Observability 逃离 Kibana!
  • 开始使用 Elastic AI Assistant for Observability 和 Microsoft Azure OpenAI
  • Elastic 8.13:Elastic AI Assistant for Observability 中的 Amazon Bedrock GA
  • 使用 AI Assistant for Observability 和你组织的运行手册增强 SRE 故障排除
  • 使用 Elastic AI Assistant for Observability 获得上下文感知洞察
  • 开始使用 Elastic AI Assistant for Observability 和 Amazon Bedrock

试用

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

所有这些功能也可以在你的环境中实现。立即了解如何开始使用。

本文中描述的任何特性或功能的发布和时间均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付或根本无法交付。

在这篇博文中,我们可能使用或提到了第三方生成 AI 工具,这些工具由其各自的所有者拥有和运营。Elastic 无法控制第三方工具,我们对其内容、操作或使用不承担任何责任,也不对你使用此类工具可能产生的任何损失或损害承担任何责任。将 AI 工具用于个人、敏感或机密信息时,请谨慎行事。你提交的任何数据都可能用于 AI 培训或其他目的。我们无法保证你提供的信息会得到安全或保密。在使用任何生成 AI 工具之前,你应该熟悉其隐私惯例和使用条款。

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

原文:Elastic's RAG-based AI Assistant: Analyze application issues with LLMs and private GitHub issues — Elastic Observability Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

麒麟V10系统 arm架构 安装docker

查看服务器环境 ## 查看系统版本,确认版本 cat /etc/kylin-release## 操作系统 uname -p## 内核版本(≥ 3.10) uname -r## iptables 版本(≥ 1.4) iptables --version iptables v1.8.1 (legacy)# 我这边是arm64/v8 架…

首届中文NL2SQL挑战赛亚军比赛攻略_BugCreater

关联比赛: 首届中文NL2SQL挑战赛 1. 任务描述 本次比赛的任务:根据Question、表格信息(包含列名、列类型、内容),预测对应的SQL语句(下图黄色部分)。比赛只涉及单表查询,需要预测的有4部分&a…

pointofix下载与调整中文

想要在屏幕上批注,用pointofix最好,本篇文章告诉你如何下载pointofix和把pointofix语言弄成中文。 首先打开pointofix官网下载pointofix的安装包。 Pointofix - Herunterladen - Downloadhttps://www.pointofix.de/download.php点击这个pointofix180de…

基于CentOS Stream 9平台搭建Nacos2.4.0.1集群,并使用OpenResty反向代理集群,GRPC协议配置

目录展示 Nacos2.4.0.1集群搭建1. 下载2. 解压3.修改配置3.1分别修改下启动类中JDK路径以及启动大小3.2 分别配置数据源 修改端口去掉前面的#注释(修改数据库地址、数据库用户名、密码)If use MySQL as datasource:Count of DB:Connect URL of DB:密钥鉴…

SQL注入实例(sqli-labs/less-9)

0、初始页面 1、爆库名 使用python脚本 def inject_database1(url):name for i in range(1, 20):low 32high 128mid (low high) // 2while low < high:payload "1 and if(ascii(substr(database(),%d,1)) > %d ,sleep(2),0)-- " % (i, mid)res {"…

项目管理证书 PMP 的含金量高吗?详解分析

有用就是好的&#xff0c;我觉得PMP在项目管理领域非常实用。特别是对我这样刚入门的新手来说&#xff0c;PMP证书和项目管理思维方式对我有很大帮助。因为我刚开始接触这个领域&#xff0c;所以能够接受正确的思维指引&#xff0c;比起那些有经验但可能存在错误思维的经理来说…

word操作技巧

查看word的标题和大纲 参考自&#xff1a; ​​​

C++ 80行 极简扫雷

一共5346个字符&#xff0c;MinGW编译通过&#xff08;强烈不建议写这种代码&#xff01;&#xff01;&#xff01;&#xff09; 压行规则&#xff1a;一行不超过80个字符 代码&#xff1a; #include<windows.h> #include<stdio.h> #include<time.h> #def…

JVM知识总结(垃圾收集算法)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 垃圾收集算法 分代收集理论 分代思想就是将堆分为新生代和老年代…

Tkinter 转载 (来自C语言中文网)

一个最简单的Tkinter程序至少应包含以下4个部分&#xff1a; 导入tkinter模块、创建主窗口、也称root窗口&#xff08;即根窗口&#xff09;、添加人机交互控件&#xff0c;同时编写相应的事件函数、通过主循环&#xff08;mainloop&#xff09;来显示主窗口。 以上&#xff…

[Git] fatal: the remote end hung up unexpectedly

1 问题介绍 在使用Git进行代码管理和版本控制的过程中&#xff0c;许多开发者可能会遇到这样一个错误提示&#xff1a;fatal: the remote end hung up unexpectedly。这是一种常见的错误&#xff0c;通常出现在将本地代码推送&#xff08;push&#xff09;到远程仓库&#xff…

新加坡物理服务器详细测评数据

新加坡物理服务器因其地理位置优越、网络连接质量高以及数据中心设施完善等因素&#xff0c;成为了许多企业和个人选择托管其业务的理想之地。以下是对新加坡物理服务器的一些详细测评数据的科普文&#xff0c;旨在帮助读者更好地了解这类服务器的性能和特点。 新加坡物理服务器…

智能制造与工业物联网CC2530——串口通讯、定时器唤醒

一、项目目的&#xff1a; 1.1 任务1&#xff1a;ZigBee 模块串口通信 任务背景&#xff1a; 熟悉 ZigBee 模块的硬件接口是使用该技术的基础。通过学习如何利用 IAR 开发环境设计程序&#xff0c;可以实现 CC2530 与 PC 机终端之间的串口通信&#xff0c;从而更好地理解和应用…

中断、异常

文章目录 概念CPU怎么直到中断/异常跳过来执行哪一个函数呢&#xff1f;LR 中断硬件框架&#xff1a;对于F103这块芯片&#xff0c;如果要PA0发出中断&#xff0c;那要做的操作有&#xff1f;GPIO中断编程具体代码 概念 中断属于一种异常 保存现场、处理异常&#xff08;中断…

C# 植物大战僵尸---杂交版

开发框架&#xff1a;.Net Fra,ework4.0 游戏名称&#xff1a;植物大战僵尸-杂交版 游戏介绍&#xff1a;植物大战僵尸-杂交版是一款结合了经典塔防游戏《植物大战僵尸》的元素和创新杂交机制的游戏。玩家需要种植各种植或英雄物来抵御一波又一波的僵尸入侵。游戏的特色在于各…

迅为RK3588开发板可以实现双屏同显、双屏异显、三屏同显、三屏异显、标异屏切换

RK3588可以实现双屏同显、双屏异显、三屏同显、三屏异显、标异屏切换这主要取决于RK3588芯片内置了VOP控制器&#xff0c;支持三路视频同时输出可有效提高行业定制的拓展性。

《码农职场》(IT人求职就业手册)导读和理性书评

《码农职场》是为IT行业求职者量身定制的一本实用指南&#xff0c;涵盖了从求职准备到成功就业的全方位内容。书中分为“职前调整”和“就业指南”两大部分&#xff0c;每一部分都详尽地介绍了求职过程中的各个关键环节&#xff0c;旨在帮助求职者在竞争激烈的职场中脱颖而出。…

锡废水再生回收的回收处理

锡废水再生回收是一个涉及环境保护和资源再利用的重要过程&#xff0c;主要目的是从含有锡的废水中提取有价值的锡资源&#xff0c;同时减少环境污染。以下是对锡废水再生回收的详细解析&#xff1a; 一、锡废水再生回收的重要性 环境保护&#xff1a;回收废水中的锡可以减少对…

C# Null 合并运算符 ??

int&#xff1f; 在 C# 中&#xff0c;int? 是一个可空的 int 类型&#xff0c;它能够存储一个 32 位带符号整数或者 null 值。当你声明一个 int? 类型的变量并将其初始化为 null&#xff0c;你实际上是在创建一个可以容纳整数值的变量&#xff0c;但是初始时并没有赋予它任…

C++转Java基础知识

目录 1. Java基础知识 1.1 JDK和JVM 1.2 Java基础代码演示 1.3 Java中的注释 1.4 Java中的关键字 1.5 Java中的println和print的区别 2. Java中的数据类型 2.1 常量 2.2 标识符 2.3 变量 2.4 类型转换 2.5 自动类型转换 2.6 强制类型转换 3. 运算符 3.1 自增运算…