免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Dify实战:构建Text2SQL(NL2SQL)智能查询数据库并生成图表工作流

发布日期:2025-09-03 12:19:22 浏览次数: 1543
作者:老王AIGC

微信搜一搜,关注“老王AIGC”

推荐语

用自然语言就能查询数据库并生成图表?Dify平台让Text2SQL技术轻松落地,实现无代码数据智能分析。

核心内容:
1. Text2SQL技术原理与典型应用场景解析
2. 基于Dify平台的系统实现方案与核心组件
3. 从数据库创建到可视化展示的完整工作流演示

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

## 技术背景

Text2SQL(自然语言转结构化查询语言)技术通过以下流程实现数据库智能查询:

1. **自然语言输入**:用户用日常用语提问(如"查询平均工资超过公司平均水平的部门")

2. **语义解析**:系统解析问题的语义结构

3. **SQL生成**:自动转换为可执行SQL语句

4. **结果反馈**:执行查询并返回可视化结果

### 典型应用场景

- 商业智能:非技术人员自助数据查询

- 教育系统:学生成绩统计分析

- 医疗管理:病历数据快速检索

## 系统实现方案

### 核心组件

- **dify平台**:提供AI应用开发框架(需1.0.0+版本支持)

- **Database**:此工具用于在已存在的数据库中执行 SQL 查询。

- **ECharts**:负责生成可视化图表

- **Mysql**:负责数据存储


-- 创建数据库(例如命名为 sales_data)CREATE DATABASE IF NOT EXISTS sales_data;-- 使用该数据库USE sales_data;-- 创建销量表CREATE TABLE IF NOT EXISTS sales (    id INT AUTO_INCREMENT PRIMARY KEY,date VARCHAR(7) NOT NULL,-- 存储格式为 'YYYY-MM'    sales_volume INT NOT NULL-- 销量数据);-- 插入销量数据INSERTINTO sales (date, sales_volume)VALUES('2025-06',2118845),('2025-05',1958667),('2025-04',1772119),('2025-03',1955204),('2025-02',1397009),('2025-01',1800235),('2024-12',2649128),('2024-11',2438092),('2024-10',2271670),('2024-09',2116925),('2024-08',1913002),('2024-07',1725174),('2024-06',1769462),('2024-05',1716443),('2024-04',1541842),('2024-03',1691118),('2024-02',1111541),('2024-01',2034527),('2023-12',2360143),('2023-11',2077155),('2023-10',2032470),('2023-09',2019445),('2023-08',1922495),('2023-07',1781580),('2023-06',1894250),('2023-05',1685966),('2023-04',1635995),('2023-03',1593454),('2023-02',1396501),('2023-01',1295097);

以上为本案例数据准备。

### 技术限制

- 复杂嵌套查询准确率有待提升

- 多表关联查询需要明确语义关系

## 实施步骤

### 工作流搭建


工作流节点链

1. 开始节点(无输入配置)
2. LLM:模型这里我们选择了硅基流动DeepSeek V3模型,实现自然语言生成SQL语句。
## 角色 你是一个专业的SQL生成专家,需要根据用户生成标准的mysql数据库的SQL。 ### 任务 请根据用户问题生成 SQL 查询语句。数据库的信息如下:-- 创建数据库(例如命名为 sales_data)CREATE DATABASE IF NOT EXISTS sales_data;-- 使用该数据库USE sales_data;-- 创建销量表CREATE TABLE IF NOT EXISTS sales (    id INT AUTO_INCREMENT PRIMARY KEY,    date VARCHAR(7) NOT NULL, -- 存储格式为 'YYYY-MM'    sales_volume INT NOT NULL -- 销量数据);### 要求: 1. 确保 SQL 查询语法正确,并考虑性能优化。2. 只要输出sql查询语句,禁止输出其它内容。
3. SQL Execute使用到SQL Execute工具,执行数据库查询。我们可以在marketplace.dify.ai/plugins/hjl… 市场上找到这个项目,目前这个项目支持的数据库有mysqlpostgresqlsqlitesqlserveroracle。

4. 参数提取器节点,用于提取图表生成数据,4个变量分别为date,sales,title,content。

5. 柱状图节点,用于生成图表,标题、数据、X轴分别填入上一个节点的输出内容。
6. 模板转换节点,用于拼接柱状图和数据分析
7.回复节点输出最终结果

8. 效果验证

验证维度

查询语句

结果准确性

基础查询

"查询2025年销量数据"

返回准确统计结果

复杂查询

"统计2024年平均销量,按降序排列"

生成包含GROUP BYORDER BY的复合SQL

### 技术优势

  • 零代码实现:通过可视化配置完成复杂NLP功能

  • 多数据库支持:兼容MySQL、PostgreSQL、Oracle等主流数据库


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询