AIOps探索 | 基于大模型构建高效的运维知识及智能问答平台(2)案例分享
原作者:擎创科技产品专家 布博士
案例分享
所需要的软件列表
本次案例的实现,全部采用开源或SAAS的产品来提供,并不涉及到私有化部署的软件产品。软件列表如下所示,如何申请apikey请自行研究,在这里不再详细说明:

以上软件只是实现该系统的作者推荐列表,在实际的应用中有很多开源、saas、商业版本的软件产品供使用,在这里不再详说明,各位可以根据自己企业的性质自行选择合作的解决方案产品。
私有化知识样例说明
由于采用大模型对私有化的知识库数据进行智能问答和知识库系统的实现,因此需要说明私有化知识提供给大模型时一般采取什么格式,会取得比较好的效率。
通常情况下,可以支持各种文档数据,包括work、pdf、markdown、json等,在flowise中都有相应的解析组件可以完成解析,本例中我采用jsons格式,最佳格式是包括两个字段内容prompt和completion,这样大模型可以比较容易识别为“问题”和“答案”。如下示例所示:
{"prompt": "Redis内存使用率高","completion": "Redis内存使用率高可能是由于数据存储的增长或未使用的数据未过期引起的。需要定期清理不必要的数据、优化内存配置以减少内存使用率。"}
注意:在实际应用中,一定要考虑如果一份文档中包括多个知识点,如何做知识点切分的情况,因此建议采用json格式的数据,比较容易切分,一个“{}”即为一个知识点,pdf、word格式的知识块切分,可自行探索。
在告警的场景中,可以将告警的内容抽象成一段简单明了的问题存放到prompt字段中,将针对该事件的分析及处置过程整理到completion字段中,completion中可以详细记录产生问题的场景报错信息、问题产生的原因、解决的办法等信息,这样可以提供给大模型更好的推理能力。下面有一份Atlassian的产品报障信息及处置结果的总结,供参考:
-
圈1:标题,即为prompt字段的问题
-
剩下的问题、原因、解决方案,都可以放到completion字段中


准备知识数据
在开始之前需要先要有知识数据,本例我们为事件管理的智能问答系统,即在统一事件管理的工作台,事件分析及处置人员在对事件进行处置时,可以直接使用大模型推送的知识,并可以通过反覆盖的交互来完成问题的排查过程。
由于缺少这类的数据,以下知识为通过互联网搜索所得到的知识,比较简漏,但是通过构建这样私有化的知识内容,可以帮助我们走通整个构建的流程。
{"prompt": "Unix服务器保留CPU利用率异常", "completion": "Unix服务器的CPU利用率异常可能是由于不正确的进程管理或资源争用导致的。通过查看系统进程、性能监控工具和日志,可以帮助确定问题的来源,并采取适当的措施来解决它。"}{"prompt": "GC次数", "completion": "GC次数表示垃圾回收的频率,它受到多种因素的影响,包括应用程序的负载和内存管理设置。要减少GC次数,可以优化代码,减少对象创建,增加堆内存,或者调整垃圾回收策略,以提高系统性能和稳定性。"}{"prompt": "业务成功率低", "completion": "业务成功率低可能是由于网络问题、系统故障或应用程序错误引起的。需要进行详细的故障排除,包括检查日志、监视系统性能、验证网络连接,以找到并解决问题的根本原因。"}{"prompt": "Unix服务器保留CPU利用率异常", "completion": "Unix服务器的CPU利用率异常可能是由于不正确的进程管理或资源争用导致的。通过查看系统进程、性能监控工具和日志,可以帮助确定问题的来源,并采取适当的措施来解决它。"}{"prompt": "Weblogic中间件JVM使用的堆栈空间百分比", "completion": "Weblogic中间件的JVM堆栈空间百分比表示堆栈空间的使用情况。可以通过调整JVM参数、垃圾回收策略和应用程序代码来优化堆栈空间的使用,以提高性能和稳定性。"}{"prompt": "Linux可用内存少", "completion": "Linux可用内存不足可能是由于运行的进程占用了太多内存,或者内存泄漏导致的。需要检查系统资源使用情况,释放不必要的进程或服务,以增加可用内存。"}{"prompt": "ESX服务器内存使用率", "completion": "ESX服务器的内存使用率表示服务器内存的利用情况。通过监视内存使用情况、调整虚拟机配置和分配更多内存资源,可以改善性能和避免内存不足问题。"}{"prompt": "Weblogic中间件JVM使用的Heap空间异常", "completion": "Weblogic中间件的JVM Heap空间异常可能是由内存泄漏或不正确的堆设置引起的。需要分析堆转储文件、调整JVM参数以及检查应用程序代码,以解决问题。"}{"prompt": "Unix服务器磁盘忙", "completion": "Unix服务器磁盘忙可能是由于磁盘读写操作过多或者磁盘故障引起的。需要查看磁盘活动、日志和性能监控数据,以找到问题并采取适当的措施。"}{"prompt": "Ping成功率低", "completion": "Ping成功率低通常是由于网络故障或丢包问题引起的。需要检查网络连接、路由、防火墙设置以及网络设备的状态,以提高Ping成功率。"}{"prompt": "数据存储占用率高", "completion": "高数据存储占用率可能是由于数据积累或未清理的旧数据引起的。需要定期清理、归档或扩展存储资源,以处理数据存储占用率高的问题。"}{"prompt": "NGINX连接数达上限", "completion": "当NGINX连接数达到上限时,可能是由于并发请求过多或配置限制不当引起的。需要增加连接数限制、优化配置和增加服务器资源以解决问题。"}{"prompt": "系统成功率低", "completion": "系统成功率低可能是由于软件错误、硬件故障或网络问题引起的。需要进行详细的故障排除,包括检查日志、监视系统性能和验证网络连接,以找到并解决问题的根本原因。"}{"prompt": "Redis内存使用率高", "completion": "Redis内存使用率高可能是由于数据存储的增长或未使用的数据未过期引起的。需要定期清理不必要的数据、优化内存配置以减少内存使用率。"}
构建向量数据库
我们需要登录pinecone,点击indexes,可以看到创建的index列表,本例中我们已经创建即了work index,基本上每个index对应一个领域的知识库,针对其它业务领域的可以再创建一个新的index。

对知识进行向量化之后,会有什么不同,我们可以看一下pingcone数据库存储的信息即可:我们无需创建任何表结果,embeddings方法会将原始数据即圈1位置的原始内容向量化转换为圈2的内容,并将这些信息都存储到一条记录中,一个分割的知识点一条记录。

所需要的软件列表
本次案例的实现,全部采用开源或SAAS的产品来提供,并不涉及到私有化部署的软件产品。软件列表如下所示,如何申请apikey请自行研究,在这里不再详细说明:

以上软件只是实现该系统的作者推荐列表,在实际的应用中有很多开源、saas、商业版本的软件产品供使用,在这里不再详说明,各位可以根据自己企业的性质自行选择合作的解决方案产品。
流程配置步骤说明

flowiseai是一个可视化的大模型构建工具,提供了非常丰富的算子,可以满足不同情况下用户的建模需求,如上图所示,本例中主要使用了7个关键算法,构建步骤说明如下:
1. 构建一个基于大模型的对话式应用
Flowise 是一个大模型构建工具,可以通过流程化的方式构建不同的应用,在本例中我们构建的是一个对话式机器人,因此,我们从chain中选择conversational retrieval QA Chain,它可以满足我们的需求,将其托动到红圈1所示的位置。

-
Language Model:用于选择大语言模型,可以选择flowise 已经支持的大语言模型,这里不仅仅支持openai,也支持亚马逊的、google的、Facebook等主流场景,因为flowise是一个开源的产品,您也可以将自己私有的大模型填加进来。
-
Vector Store Retriever:大模型进行知识存放的向量化数据库,下面的章节中会介绍向量数据库中存储的到底是什么。
-
Memory:大模型的上下文记忆能力,如果没有配置这个,则每一次问答就结束,没有办法根据上下文会话的内容进行推理。
还有一个更重要的参数,点击Conversation Retrieval QA Chain界面的“Additional Parameters”按钮来配置Prompt,你也可以理解为规则,大致可以说明为你想要大模型角色扮演什么,他的知识从哪里来,回答知识时有些什么样的规则,本例中我配置如下:
You are currently an ITOM expert, responsible for providing solutions to all alarms that occur. You will provide me with answers from the given info. If the answer is not included, say exactly “Hmm, I’m not sure” and stop after that. Refuse to answer any question not about the info. Never break character. Follow these five instructions below in all your responses . Use Chinese lanquage only. 2. Use Chinese characters whenever possible, 3. Do not use English except in programming languages if any;4. Avoid the Latin alphabet whenever possible. 5 Translate any other language to the Chinese language whenever possible
2. 配置QA Chain的大语言模型
本例中我们使用OpenAI来完成,因此选择LLMs中的ChatOpenAI,在这里也可以选择一些其它厂商的模型(如aws、facebook、google等,甚至包括一些国内的大模型),如下图所示:

未开通4.0,在这里model Name配置为gpt3.5,connect Credential配置链接 openai 的apikey,其它参数选择默认即可。
3. 配置向量数据库
在本例中我们选择pingcone这一SAAS软件。

1.向量数据库创建index,获取api key :需要登录pingcone获取一个api key,然后在pinecone中创建一个新的数据库索引,我这边命名为workindex。
2.配置参数:
-
document:代表知识库中输入的知识源,可以是一个或一批文件(pdf、json、word、markdown)等,在flowise 中包括各种解析这种文件的算子。
-
Embeddings:是一个对文件转成文本之后对其进行向量化的算法,把document中的文本进行转向量化的处理,也是有许多开源的算法和厂商提供。
-
connect Credential:是配置连接pinecone数据库的api key参数。
-
Pinecone index:用于配置数据库的索引,在这里选择work index,如果企业内部有多个不同业务领域,则可以配置为不同的index,这样可以使回答更准确,而不易混淆,尤其是业务描述比较相近的情况下。
4. 配置导入知识库
在本例中由于知识内容比较简单,没有大量的数据,我们直接以文本的方式导入,如下图所示:

我们直接将知识内容放入text文本框中即可。针对该文本的内容需要切分为不同的知识点,所在还有一个text splitter参数,进入第5步。
5. 配置文本切分方法
文本切分主要是为了将一个大文件中会包括多个知识点,切分成一个个的独立知识点,存入向量数据库中,由于本例我们使用的json格式,切分比较简单,按“}”来进行切分即可,如下图所示:

6. 针对切分好的知识点进行向量化转换
如下图所示,本例也使用open ai 的embeddings算法:

7. 配置智能问答机器人的上下文记忆能力
选择buffer memory算法,参数如下图所配置即可:

8. 验证创建的机器人是否能正常工作
我们输入“cpu利用率异常“,系统已经从我们构建的知识库中找到了答案,并且整个流程也能够跑通了:

9. 智能问答机器人应用场景集成
集成操作也比较简单,提供了多种集成方法,建议选择javascript方法,只需要在场景中创建一个单独的页面,将javascript的代码嵌入,即可如第8步中看到的样子进行工作了,最后只要调整一下窗口的大小即可。

相关文章:
AIOps探索 | 基于大模型构建高效的运维知识及智能问答平台(2)案例分享
原作者:擎创科技产品专家 布博士 案例分享 所需要的软件列表 本次案例的实现,全部采用开源或SAAS的产品来提供,并不涉及到私有化部署的软件产品。软件列表如下所示,如何申请apikey请自行研究,在这里不再详细说明&…...
【ESP32接入国产大模型之文心一言】
1. 怎样接入文心一言 随着人工智能技术的不断发展,自然语言处理领域也得到了广泛的关注和应用。在这个领域中,文心一言作为一款强大的自然语言处理工具,具有许多重要的应用价值。本文将重点介绍如何通过ESP32接入国产大模型之文心一言api&am…...
保湿剂,预计2026年市场规模将达到约230亿美元
全球市场分析 从全球市场来看,保湿剂市场规模正在快速增长。主要集中在欧美和亚太地区的市场,据市场调研机构的数据显示,预计2026年,全球保湿剂市场规模将达到约230亿美元。保湿剂的应用领域不断拓展,包括从化妆品到个…...
CodeWhisperer:编码世界中的声音启迪者
人烟 导语: 在数字化时代,编码已经成为了一种不可或缺的技能。而 CodeWhisperer(编码世界中的声音启迪者)则以其卓越的技术和深厚的知识为人们带来了独特的启发和指导。本文将介绍 CodeWhisperer 的背景和成就,探讨他是…...
golang学习专栏
GOLANG专栏 Golang基础教程 Golang基础教程 Golang练手算法 Golang练手算法 Golang设计模式 Golang设计模式 Golang数据结构和算法 Golang数据结构和算法 Golang并发编程 Golang并发编程 ORM框架Gorm Golang ORM框架gorm Golang源码分析 Golang源码分析 MySQL教程 MySQ…...
el-table表格动态添加列。多组数据拼接和多层级数据的处理
提示:el-table表格动态添加列 文章目录 前言一、多组数据拼接二、多层级处理三、实际应用中,为避免闪屏,可以表格数据统一渲染总结 前言 需求:富文本编辑器 一、多组数据拼接 <template><div class"test">…...
ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现
ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建安装thinkphp6漏洞信息配置 漏洞利用 修复建议 漏洞名称 漏洞描述 2020年1月10日,ThinkPHP团队发布一个补丁更新,修复了一处由不安全的SessionId导致的任意文…...
短说社区运营的使用工具分享(一)
本文是一篇针对短说社区运营的使用工具分享帖,是小编结合日常使用,总结的一些可以帮助网站管理员和运营人员进行日常操作和管理的工具。 1. 想天工作台之运营面板 想天工作台可以将桌面划分不同的类型来辅助办公,我分享下我当前的桌面情况&…...
关于.gitignore文件
.gitignore文件用于忽略git同步文件。 git上创建项目时,默认的.gitignore文件配置比较少,不太适合于windows下vs的开发设置。 下面是vs中.gitignore条目样例: # Prerequisites *.d# Compiled Object files *.slo *.lo *.o *.obj*.iobj *.V…...
Cell 文章图复现
多组差异火山图复现 参考文章: A Spatiotemporal Organ-Wide Gene Expression and Cell Atlas of the Developing Human Heart Figure 2. H 图里主要是单细胞数据不同cluster之间的差异火山图, 所以说白了就是散点图和柱状图的结合, 散点图用差异基因绘制, 柱状图利用logFC最…...
只需一招彻底解决SOLIDWORKS不显示缩略图预览
SOLIDWORKS缩略图能够让工程师便于识别想要打开的模型,但经常会有用户遇到在资源管理器中查看SOLIDWORKS文件时,仅显示SOLIDWORKS的图标,而没有相关文件的预览缩略图。 Windows文件夹选项设置 首先确保Windows文件夹选项设置,显…...
nccl 源码分析 从 ncclAllReduce 的执行开始认识nccl源代码
文字没有提及的代码内容,不需要太在意,当然也可以瞟两眼; 首先,总体而言函数 ncclAllReduce 的功能在于将携带了一个操作的info结构体,放入了队列中,待后面执行; 排队的函数调用是 ncclEnqueue…...
仿照AirDrop(隔空投送)优雅地在局域网中传输文件
基于WebRTC的局域网文件传输 在前一段时间,我想在手机上向电脑发送文件,因为要发送的文件比较多,所以我想直接通过USB连到电脑上传输,等我将手机连到电脑上之后,我发现手机竟然无法被电脑识别,能够充电但是…...
【PHP】TP5.0及Fastadmin中将查询数据返回对象转为数组
目录 方法一:使用collection助手函数 方法二:设置返回数据集的对象名 在 ThinkPHP 5.0 中,对模型查询返回的对象进行了优化,默认情况下,使用 all 或 select 方法查询数据库将返回一个对象数组集合。这个集合是模型的…...
大公司里怎样开发和部署前端代码?
前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello,大家好,我是 Sunday。 昨天的时候有同学问到前端部署相关的内容,正好在知乎中看到…...
API接口:原理、设计与实践
一、引言 随着互联网的发展,应用程序之间的交互变得越来越频繁,API接口成为了不同应用程序之间进行数据交换的重要手段。本文将详细介绍API接口的原理、设计与实践,以期帮助读者更好地理解和应用这一技术。 二、API接口概述 API࿰…...
2023年TIOBE指数TOP50的编程语言写“Hello World!”
这篇文章列出了TIOBE指数TOP50的编程语言(TIOBE Index - TIOBE)如何写“Hello World!”。“Hello World!”代码应该是每个程序员学习一门编程语言最先实现的程序,给我们带来了很多美好的回忆,下面我们就一次…...
spring、springmvc、springboot、springcloud简介
spring简介 spring是什么? spring: 春天spring: 轻量级的控制反转和面向切面编程的框架 历史 2002年,首次推出spring雏形,interface 21框架2004年,发布1.0版本Rod Johnson: 创始人,悉尼大学,音乐学博士…...
立仪科技光谱共焦位移传感器:应用领域的广泛性
在科技日新月异的今天,光谱共焦位移传感器以其精确、稳定的特性,在各个领域得到了广泛的应用。本文将详细介绍光谱共焦位移传感器的应用情况,以期让大家对其有更深入的了解。我们来理解一下什么是光谱共焦位移传感器。 它是一种通过测量物体表…...
neo4j图数据库安装和测试
neo4j图数据库安装和测试 1. 下载合适的neo4j软件版本。 https://we-yun.com/doc/neo4j/ https://neo4j.com/deployment-center/#enterprise 2. 下载JAVAJDK 由于neo4j是一个用Java编写的图形数据库,因此在安装和运行Neo4j之前,需要先安装Java Developm…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
