DeepSeek-R1的發布掀起了AI智能變革的浪潮。在過去幾個月里,MaxKB開源企業級AI助手已經幫助大量企業和組織快速落地了DeepSeek,讓AI在不同的行業土壤中產生持續、可度量的業務價值。
MaxKB(github.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的高級編排設計能力允許用戶靈活地構建和優化智能問數流程,可以有效地確保系統能夠適用于不同的業務需求和問數場景。