随着大模型的飞速发展, AI 技术开始在更多场景中普及。在数据库运维领域,我们的目标是将专家系统和 AI 原生技术相融合,帮助数据库运维工程师高效获取数据库知识,并做出快速准确的运维决策。传统的运维知识库系统主要采用固化的规则和策略来记录管理操作和维护的知识,这些系统的知识检索方式主要基于关键字搜索和预定义的标签或分类,用户需要具备一定的专业知识才能有效地利用这些系统。这已不足以满足现在复杂多变的运维环境。因此,借助大模型来提供运维知识并协助决策成为趋势。这将在运维能力、成本控制、效率提升和安全性等方面带来深刻的变革。在数据库领域,AI 技术应用可以划分为不同场景,例如知识库学习(包括知识问答和知识管理)、诊断与推理(包括日志分析和故障诊断)、工作辅助(包括 SQL 生成和 SQL 优化)等。本文将主要着重介绍「知识库智能问答系统」的设计与实现,旨在为读者提供深入了解该领域应用的思路。
架构设计和实现
技术方案选型
目前,大模型已经可以通过对自然语言的理解揣摩用户意图,并对原始知识进行汇总、整合,进而生成更具逻辑和完整性的答案。然而,仍存在以下几个问题,导致我们不能直接使用这些模型来对特定领域知识进行问答。专业性不足:作为通用大模型,对专业领域知识的训练不足,可能会产生虚假陈述、准确性不足以及信息丰富度不足的问题。时效性问题:模型的训练数据基于某个时间之前的数据,缺乏最新的信息,每次添加新数据都会导致高昂的训练成本。安全性问题:模型无法访问企业内部私密文档,且这些文档不能直接用于 Fine-Tuning。为了解决这些问题,业界采用了如下几种技术手段来为大型模型提供额外知识。Fine-Tuning(微调):使用特定领域的知识对基础大模型进行微调,以改变神经网络参数的权重。虽然适用于特定任务或风格,但需要大量资源和高质量的训练数据。Prompt 工程:将行业领域的知识作为输入消息提供给模型,让模型对消息中的知识进行分析和处理。这种方法在正确性和精度上表现良好,但有文本长度限制,对于大规模数据不够高效。与传统搜索结合:使用传统搜索技术构建基础知识库,然后使用大语言模型处理用户请求,对召回结果进行二次加工。这种方法具有更高的可控性和效率,并适用于大规模数据。为了确保准确性和效率,我们选择了第 2 种和第 3 种方式相结合的方案,通过向量数据库将知识外挂作为大模型记忆体,使用 LangChain 作为基础开发框架来构建知识库问答系统,最终依靠 Prompt 工程和大模型进行交互。