找回密码
 立即注册
首页 业界区 业界 在MaxKB中实现准确的Chat TO SQL(BI)

在MaxKB中实现准确的Chat TO SQL(BI)

纪音悦 2025-6-2 00:42:58
主要面向考试成绩管理系统(目前支持旭日图、仪表盘柱状图、桑基图、漏斗图、河流图、数据聚合图、散点图、南丁格尔玫瑰图、饼状图、环形图、堆叠柱状图、堆叠折线图、堆叠面积图、面积图、折线图)
主要思路:
第一步实现chat to sql,利用用户问题,生成准确的sql
第二步利用第一步sql查询到的数据,配合MaxKB内置的  标签实现图表的生成
第一部分:Chat To SQL

方案一:适合表不多的情况,比如5张表左右的级联查询

此方案的重点就是在提示词中加入DSL和DML的描述,如下:
1.png

此方案缺点也很明显:适合数据表量小的情况,还有利用大模型只生成了一次SQL,准确率不会太高。
方案二:适合多表的情况,将DSL和DML采用知识库进行存储

为了满足大量表的查询,提前准备DSL和DML的描述,并按照合理分段存入知识库中:
2.png

同时,提前准备100个(具体可按照项目实际情况准备个数)用户经常使用的准确SQL,采用QA对方式存入知识库中:
3.png

在编排中,先利用问题相似度检索用户问题涉及到的表DSL和DML,并作为提示词给大模型
4.png

方案三:最终方案,在前两个方案的基础上,引入SQL专家裁判机制,提高SQL准确率

方案3.1 SQL裁判方案

方案3.1主要先利用三个大模型生成三个SQL,然后在让第四个大模型充当裁判,选出最准确的SQL进行查询
5.png

查询效果:
6.png

7.png

方案3.2 MCP SQL 方案

MCP SQL方案相对要简单些,主要在AI会话节点接入DB MCP,然后利用提示词控制模型进行多次查询校验。
8.png

查询效果:
9.png

第二部分:SQL TO BI

第二部分的图表展示,主要利用第一步已经生成的SQL查询到数据,采用图表进行展示。核心的思路为:
1.创建图表库,包含常用的echart图表,图表内容为echart官方网站的option,并创建问题关联:
10.png

11.png

2.在编排中,基于用户的问题判断是否有图表支持,并输出图表名称
12.png

3.通过大模型输出的图表名称去知识库查询图表的option,并作为提示词给大模型
13.png

14.png

整体编排如下:
15.png

查询效果:
16.png

17.png

18.png

19.png

20.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册