背景信息
数据库故障问题通常会导致系统性能下降、数据丢失等严重后果。目前的数据库故障诊断方法大多依赖于DBA手动分析和经验积累,这种方式效率低下且容易受限于DBA个体的经验水平。
目前,一些数据库管理系统(DBMS)利用简单的规则引擎或基于统计学的方法来进行故障检测,但这些方法往往缺乏足够的智能化和自适应性。
一些研究关注于利用机器学习技术对数据库故障进行自动识别。然而,这些方法往往依赖于大量标记好的训练数据,且对于复杂多变的故障场景适应性较差。
大模型技术出现之后,基于大语言模型的数据库自动故障诊断系统则具有更强的泛化能力,能够从大规模语言数据中学习丰富的语境和知识,为故障诊断提供更全面的背景信息。但当直接使用大语言模型时我们发现模型很难直接对一个复杂问题有一个全面的认知,经常在排查的初期阶段就下结论。综上所述,各种现有技术中对数据库故障诊断执行方面均存在缺陷,需要一种新的故障诊断执行解决方案。
技术方案
我们的系统通过以下几个关键部分来提高故障诊断的准确性和实时性。
-
数据处理部分:
-
知识库构建:首先,我们通过导入历史工单构建了一个庞大的知识库。这个知识库包含了问题的摘要、问题描述、问题原因以及解决方法,为系统提供了丰富的背景信息。
-
批量预处理:我们将数据分为四个部分进行预处理,以便后续的检索和分析。这一步确保了系统对历史故障案例的充分了解,并为后续的智能分析提供了强大的基础。
-
-
检索部分:
- 检索增强生成(RAG)技术:我们结合了知识库检索和联网检索。知识库检索基于预处理过的历史工单,通过向量检索算法快速定位相关信息。联网检索则允许系统动态地从互联网上获取最新的信息和解决方案。这种综合检索方式确保了系统对各类问题的全面而及时的信息获取。
-
查询转写部分:
-
QA数据向量化与存储:我们对多条QA数据进行向量化表示,并将其存储在系统数据库中。
-
相似问题检索:利用向量检索技术,系统将用户的查询与存储的QA数据进行相似度匹配,从而提供相关问题作为提示词,帮助用户更准确地表达问题。
-
大语言模型的智能转写:基于相似问题的提示词,系统将用户的输入与大语言模型进行转写,提高了系统对用户问题的理解能力。
-
实时更新与优化:建立实时更新与优化机制,定期更新QA数据的向量表示,并根据用户反馈不断优化大语言模型。
-
-
多代理系统:
-
代理职责分工:系统采用了多代理策略,包括原因代理、计划代理、计划校准代理和方法代理,各自承担不同的责任
- 原因代理(ReasonAgent):负责分析故障原因,使用多轮检索总结原因。
- 计划代理(PlanAgent):生成排查计划,基于单轮检索。
- 计划校准代理(PlanObserver):检查排查计划的逻辑正确性,避免重复冗余,并补充排查方案。
- 方法代理(MethodAgent):生成具体的排查指令,分析用户返回的结果,形成闭环反馈。
-
代理之间的通信策略:采用同步通信策略,确保消息的准确传递。例如,当PlanObserver发现计划逻辑错误时,会通知PlanAgent进行修改。
-
检索增强生成策略:提出重排序策略,基于高维度向量空间的语义相似度进行初步检索,再在小规模知识库中进行进一步召回,提高检索准确性。
-
Observer代理:在每个代理中引入Observer角色进行监督,通过指令微调的小参数量模型实现高效推理。




