干货分享|智能问数方案及步骤详解

DeepSeek-R1的发布掀起了AI智能变革的浪潮。在过去几个月里,MaxKB开源企业级AI助手已经帮助大量企业和组织快速落地了DeepSeek,让AI在不同的行业土壤中产生持续、可度量的业务价值。

MaxKBgithub.com/1Panel-dev/MaxKB) 可以为本地部署的DeepSeek构建一个Chatbox,也就是一个智能会话的界面,类似于个人用户直接与DeepSeek进行对话。MaxKB提供的Chatbox可以方便地嵌入到企业OA系统和业务系统,有效保证使用的便捷性和安全性。另外一方面,MaxKB能够激活企业中长期积累的知识体系,使其智能化并面向内外部用户提供服务。

MaxKB可以让企业内部的私有知识文档快速获得智能问答能力,面向企业的员工、合作伙伴和客户提供AI助手服务。MaxKB还提供开箱即用的RAG(检索增强生成)技术,能够结合私有知识库提升问答效果,降低大模型幻觉。

MaxKB还支持目前最为流行的MCP(Model Context Protocol,模型上下文协议),为用户灵活调用MCP工具提供了充分的便利性。

在帮助企业落地DeepSeek的过程中,MaxKB开源项目组发现很多企业都有"智能问数"的需求,即允许员工使用自然语言查询方法从数据库中检索结构化数据,并展示成直观的图表。

本文将通过一个具体的例子(查询学生成绩),详细讲解如何通过"MaxKB+数据库MCP Server+QuickChart MCP Server"实现智能问数的功能。

方案概述

本方案以"学生考试成绩管理系统"为例进行说明,此系统包含了教师信息、学生信息、年级班级信息、考试成绩等信息内容。

MaxKB智能问数方案逻辑图如下:

MaxKB智能问数方案具体实现步骤为:

MaxKB的智能问答方案包含以下三大关键步骤:

  • 数据准备:包含数据表详细的DDL(Data Definition Language,数据定义语言)信息和正确的SQL示例,以便大模型能够更好地理解和使用数据;
  • MCP Server准备:需要提前准备对应数据库的MCP Server和生成图表的MCP Server。此阶段可以采用1Panel开源面板来统一部署和运维MCP Server。
  • MaxKB智能问数应用设计:主要包含在MaxKB中如何通过高级应用编排实现智能问数的效果。

步骤一:数据准备阶段

1. 数据准备

提前准备"学生考试成绩管理系统"数据表详细的DDL信息,需要确保所有数据表的DDL信息完整且准确,包括字段类型、约束条件等。DDL信息后续需要导入到MaxKB知识库中,如果当前数据表不具备或者不清晰,具体的可以参考下图进行完整性补充。

2. SQL示例准备

基于日常工作遇到的查询需求,我们需要提前准备多样化的SQL示例(本Demo数量为100条SQL查询示例),同时需要保证和测试这些SQL的准确性。后续我们需要将这些SQL查询示例导入到MaxKB知识库中。具体准备过程可以参考下图,采用Execl方式进行绘制和编写。

步骤二:MCP Server准备阶段

1. 数据库MCP Server准备

本Demo采用的是MySQL数据库,因此需要提前准备MySQL的MCP Server。在这里我们使用了Github上DBHub开源项目(https://github.com/bytebase/dbhub)部署MySQL的MCP Server。此项目同时还支持PostgreSQL、SQL Server等数据库。

DBHub的部署方式也很简单:进入1Panel应用商店,在"AI/大模型"分类下找到DBHub应用,点击安装即可(注意:需确保1Panel服务器已放行SSE端口)。

部署完成后,我们使用curl方式进行快速验证,返回如下信息即为部署成功:

2. 生成图表MCP Server准备

生成图表的步骤采用"QuickChart.io+Quickchart-MCP-Server"来完成。QuickChart 项目(https://github.com/typpo/quickchart)支持用户通过提供数据和样式参数来创建多种类型的图表,支持从柱状图到速度表等多种图表类型,并且提供生成图表URL和下载图表图片的功能。Quickchart-MCP-Server项目(https://github.com/GongRzhe/Quickchart-MCP-Server)则提供了QuickChart的MCP服务。

需要注意的是,由于Quickchart-MCP-Server项目没有提供SSE访问方式,所以不同于DBHub项目,我们需要在1Panel开源面板(github.com/1Panel-dev)的MCP模块中进行部署。

具体操作也非常简单:打开1Panel开源面板,依次选择"AI"→"MCP"→"创建MCP服务器"→"导入MCP Server配置",导入如下Quickchart-MCP-Server的命令配置即可:

复制代码
{
  "mcpServers": {
    "quickchart-server": {
      "command": "npx",
      "args": [
        "-y",
        "@gongrzhe/quickchart-mcp-server"
      ]
    }
  }
}

同时,注意开启外部端口访问和地址。

等待几秒后,可以看到1Panel中显示QuickChart的MCP Server已经启动。

接下来,我们使用curl方式进行快速验证,返回如下信息即显示QuickChart的MCP Server已经部署成功。

步骤三:MaxKB智能问数应用设计

1. 将准备好的表信息和SQL示例导入知识库

■ 创建表信息知识库,导入表信息,并将每一张表的信息作为一个分段,具体如下图显示。

为了提高后续检索的相似度,建议同时为每一张表创建问题,问题主要为此表的名称(此操作的意义为:比如用户提问"7年级一共有多少老师",知识库中能够准确的匹配出班级表和教师表两张表)。问题需要尽量地覆盖用户对不同对象的称呼,比如教师又可以称为老师,具体如下图所示。

■ 创建示例SQL库,导入SQL示例,一个SQL示例作为一个分段。

同理,为不同的SQL示例创建问题,如下图所示:

2. MaxKB智能问数编排

■ 创建空白的高级编排,名称自取即可。

■ 添加两个知识库检索节点,用于用户检索表信息和示例SQL。同时设置相似度为0.4,引用分段数TOP为6。

注意 :此处很重要也很关键,需要按照不同的应用场景和数据库进行大量的测试,最终选择合适的相似度和引用分段数TOP值。建议首先从相似度0.4,引用分段数TOP值为6开始测试效果。

■ 添加AI对话节点,配置AI模型(注意要选择支持MCP的模型,比如DeepSeek Chat或者Qwen-Plus),同时在AI对话节点中配置MCP Server:

配置在步骤一中已经部署完成的MCP Server的Config信息,具体的配置信息如下:

复制代码
{
  "quickchart-server": {
    "url": "http://10.1.240.110:18003/quickchart-server",
    "transport": "sse"
    },
  "mcp-mariadb": {
    "timeout": 180,
    "url": "http://10.1.240.106:8080/sse",
    "transport": "sse"
  }
}

■ 设置AI对话节点的角色提示词。

复制代码
# 角色
你是一位专业的数据分析专家,精通MYSQL数据库SQL语言,能够熟练运用 mcp-mysql 工具进行SQL验证和查询,还能使用 quickchart-server 工具绘制图表,并对相关数据进行深入分析和解释。

## 技能
### 技能1: 生成并验证SQL
1. 基于用户提出的问题,结合已知信息,生成SQL语句。
2. 使用mcp-mysql工具对每次生成的SQL进行验证和查询。若SQL出现错误,需尝试三次不同的SQL表述。
3. 记录每次SQL验证和查询的结果。

### 技能2: 绘制图表
1. 根据用户需求以及生成的SQL查询结果,利用quickchart-server工具生成相关图表。
2. 确保生成的图表能够清晰、美观的展示相关数据。

### 技能3: 数据的分析和解释
1. 对SQL查询得到的数据进行详细分析,结合用户的问题,找出数据的关键特征和趋势。
2. 以通俗易懂的语言向用户解释数据所代表的含义以及数据与用户问题之间的关系。

## 限制
- 仅围绕与生成SQL、利用工具查询验证、生成图片以及数据的分析和解释相关的内容进行回答,拒绝回答不涉及这些内容的话题。
- 生成的SQL需符合MYSQL语法规范,生成的图片应符合数据展示要求,分析和解释需要基于真实的查询结果。
- 分析和解释部分应尽量简洁明了,突出重点。
- 操作过程严格按照上述技能要求执行,不得随意更改工具使用方式。 

■ 设置AI对话节点的用户提示词

复制代码
# 已知信息
## 表信息:
{{表信息.data}}

## 参考示例SQL:
{{示例SQL.data}}

# 用户问题:
{{开始.question}}

效果验证和总结

在MaxKB中按步骤设置完成后,可以进行调试测试,调试测试通过后方可进行应用发布。验证发现,大模型会按照我们设定的提示词,根据已经给出的表信息和示例SQL,自行编写SQL语句,调用MySQL MCP Server进行查询和验证结果,调用QuickChart MCP Server进行图表绘制,最后给出数据分析。

■ 问题一:每个班级学生占比图。

■ 问题二:每个年级有多少名学生?

■ 问题三:哪个老师教的学生最多?

■ 问题四:成绩排名前10的学生名字、分数和班级。

由此可见,MaxKB通过其强大的RAG技术和MCP调用能力,能够完整且准确地实现智能问答的场景。RAG技术结合了信息检索和文本生成的优势,使得系统能够在理解用户查询的基础上,从大量数据中检索相关信息,并且生成准确、相关的SQL查询语言。而MCP工具则提供了强大的SQL查数验数能力和动态的图表绘制能力,从而为智能问答系统提供了坚实的数据基础。最终,通过MaxKB的高级编排设计能力允许用户灵活地构建和优化智能问数流程,可以有效地确保系统能够适应不同的业务需求和问数场景。

相关推荐
ʚʕ̯•͡˔•̯᷅ʔɞ LeeKuma30 分钟前
探索具身智能协作机器人:技术、应用与未来
ai·协作机器人·具身智能机器人
AI蜗牛车5 小时前
【LLM+Code】Windsurf Agent 模式Prompt&Tools详细解读
ai·大模型·llm·agent
chegan6 小时前
用c#从头写一个AI agent,实现企业内部自然语言数据统计分析(二)-数据结构和代码分析方法
ai·c#·agent
MobotStone7 小时前
MCP还是AI智能体?如何为你的AI应用选择最佳"大脑"架构
mcp
Elastic 中国社区官方博客7 小时前
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
shelgi9 小时前
Cursor结合MCP实现自动编写项目文档
人工智能·mcp
yaocheng的ai分身11 小时前
MCP的Resources 和 Prompts
mcp
yaocheng的ai分身11 小时前
Building MCP Servers: Part 3 — Adding Prompts
mcp
一只韩非子12 小时前
什么是MCP?为什么引入MCP?(通俗易懂版)
人工智能·aigc·mcp