Text2SQL(又称NL2SQL) 作为一项自然语言处理技术,其核心在于将自然语言(Natural Language)表述的问题,转化为能够在关系型数据库中执行的结构化查询语言(Structured Query Language,SQL),以此实现与数据库之间的查询交互。这项技术的关键目标在于,借助自然语言描述,让用户即便不具备SQL语法知识,也能够顺利完成复杂的数据库查询任务。具体而言,Text2SQL的任务涵盖以下几个步骤:
- 输入分析:用户以自然语言的形式输入问题,比如“找出平均工资高于整体平均工资的部门名称”。
- 语义解析:系统对输入的自然语言问题进行解析,将其转化为数据库中的结构化查询语句。
- SQL生成:依据解析的结果,生成与之对应的SQL语句,例如“SELECT department_name FROM departments WHERE average_salary > (SELECT AVG(salary) FROM employees)” 。
- 执行与反馈:系统执行SQL查询操作,并返回相应结果,同时可能会对结果进行进一步的解释或分析。
Text2SQL拥有广泛的应用领域,涵盖智能客服、数据分析、金融、医疗、教育等多个行业,极大地提升了用户与数据库交互的效率和便利性。另外,随着大型语言模型(LLMs)的不断发展,Text2SQL技术在处理复杂查询以及多轮对话方面也取得了显著的进步。
今天,我们就来带大家实现一个简单的基于企业知识库的AI Agent的text2sql方案,当然,这个方案相对比较基础。接下来,我们直接来看效果。
1、工作流AI Agent演示效果
上图我们就通过简单的自然语言查询到student_scores 有多少条记录。
2、AI Agent 演示效果
同样我们使用AI Agent 也实现了text2SQL 的效果。
那么上面的工作流和 AI Agent是如何实现的呢,下面说一下我们的具体实现思路。
3.工作流的制作
在工作流制作之前我们需要用到dify的知识库,之前我很少提到知识库,主要是dify知识库做的不太好。因为这个工作流用到知识库,所以我们顺便把这个知识点说一下。
3.1、 知识库创建
在知识库创建之前我们需要向量模型,所以我们需要在系统模型设置里面填写一下 向量模型。
打开右上角设置-模型供应商
我们在找一下右上角有一个系统模型设置。
在弹开的模型设置里面,我把Embedding 模型、Rerank 模型 设置选一下。
这里Embedding 模型 我们选择了火山引擎提供的 “doubao-embeding”,Rerank 模型 我们这里选择硅基提供的bge-reanker-v2-m3
上面配置好完成我们去知识库面板创建一个知识库
我们点开“创建知识库”。进入文件上传页面
我们需要上传一个创建表的SQL 语句,文件类型是txt
上面txt文本内容如下:
-- 创建学生成绩表
CREATE TABLE `student_scores` (
`id` bigintNOT NULL AUTO_INCREMENT COMMENT '主键ID',
`student_id` varchar(20) NOT NULL COMMENT '学号',
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
`class_name` varchar(50) NOT NULL COMMENT '班级名称',
`subject` varchar(50) NOT NULL COMMENT '科目名称',
`score` decimal(5,2) NOT NULL COMMENT '分数',
`exam_date` dateNOT NULL COMMENT '考试日期',
`semester` varchar(20) NOT NULL COMMENT '学期',
`grade` varchar(20) NOT NULL COMMENT '年级',
`created_at` datetime NOT NULLDEFAULTCURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NOT NULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_student_id` (`student_id`),
KEY `idx_exam_date` (`exam_date`),
KEY `idx_subject` (`subject`),
KEY `idx_class` (`class_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生成绩信息表';
我们需要把他上传。
因为这个比较简单我们就用高质量的索引方式创建文本向量,创建完成后,我们完成创建表的SQL 语句知识库创建。
4、工作流制作
我们回到dify 工作台 创建一个 chatflow工作流,前面文章都有提到如何创建chatflow,这里就不做详细展开。
4.1、 开始
这个开始节点我们这里不需要用户输入提示词,所以这个节点什么都不需要设置。
4.2、 知识检索
我们按照上面的步骤完成知识检索节点创建。
查询变量 输入sys.querystring
知识库这里我们点击添加上面配置好的知识库。
添加完成后,我们就设置好知识库检索这个节点。
5、Agent
接下来我们在工作流中添加一个叫做“Agent”工作流节点. (这个Agent是dify 1.0.0之后版本中出现的,之前0.XX系列版本是没有的)
这里我们需要2个工具1个是 agent策略工具 1个是 database 插件。 这2个都是可以在插件市场找到
5.1、 agent策略工具
5.2、 database 插件
目前这个项目支持的数据库有mysql
, postgresql
, sqlite
, sqlserver
, oracle
mysql+pymysql://root:123456@localhost:3306/test
postgresql+psycopg2://postgres:123456@localhost:5432/test
sqlite:///test.db
mssql+pymssql://<username>:<password>@<freetds_name>/?charset=utf8
oracle+oracledb://user:pass@hostname:port[/dbname][?service_name=<service>[&key=value&key=value...]]
我们在插件市场把它安装好后,就需要对它配置。
我们用的是mysql参考上述链接字符串
mysql+pymysql://root:123456@localhost:3306/test
这里还有一个小技巧,就是如果数据库密码是带有@符号的,我们需要转义一下。否则会出现错误。
上述因为密码也带有特殊符号“@” 和后面的数据链接符号@产生了歧义 这样程序连接就会报错
如何解决
若要借助转义的方式来处理包含特殊字符 @
的连接字符串,在标准的数据库连接字符串里,一般没有通用转义符号能直接用在字符串里。不过可以对特殊字符 @
进行 URL 编码,@
对应的 URL 编码是 %40
。
最后的变成
mysql+pymysql://root:zzz%40123@192.168.11.84:19030/test_db
这样修改后再连接就OK 了
看到已授权完成配置。
上面2个工具安装和配置完成后,我们进入Agent策略工具的配置操作。
我们从下拉选项中选中我们前面装的Agent,如果只装了一个这里只有一个下拉选项。Agent 策略中有两个,一个是function calling ,另外一个是ReAct 我们选择第二个“ReAct”
下面的模型选择就非常重要的了。建议你选择火山引擎的deepseek v3 模型,其他模型我测试效率效果不太好。AI agent对模型要求比较高。有的模型达不到效果,后面测试的时候这块很容易翻车。切记用我推荐的模型,其他模型跑不出来就别说没看我文章了。
工具列表中,我们选择databse, 里面有个函数我们都选中它。
这里我们还需要有个设置,在text to SQL 点击设置,弹出对话框中 设置一下数据库模型。
这个地方的模型我们也使用火山引擎的deepseek v3 模型,这2块的操作是本工作流的重点,细节比较多,如果不按照我文档的里面步骤 也很容易翻车。如果你翻车了建议你把这块文章在好好看一下,注意哪地方没设置好。
指令这块填写如下内容:
请根据用户输入的{{#sys.query#}}语句和{{#1745388821686.result#}}相关内容实现SQL语句查询
查询这块我们填入 sys.query
迭代次数默认3次,如果模型能力弱可以把这值在该大一点。
以上我们就完成了Agent 节点的配置。
直接回复
下面的直接回复就很简单了,直接把上面Agent输出返回即可。
以上我们就完成了工作流流AI Agent 的搭建了。
6、AI Agent制作
我们回到工作流 创建一个 AI agent
进入AI agent界面,这个地方配置就比较简单了。
系统提示词 我们这里输入 上面的SQL 语句脚本
接下来 在工具里面配置一下database工具。这个配置比较简单,注意就是模型这个地方
右上角 Agent Mode 我们就选择默认的 ReAct
模型这里我们还是选择火山引擎的deepseek v3 模型
以上我们就完成了AI agent 制作。
7、 验证及测试
工作流AI Agent测试
我们在工作流AI Agent工作流,点击“预览按钮” 输入我们的问题
请帮我查询一下student_scores有多少条记录
我们查询一下数据库有多少条记录
OK 数据量对的。
AI Agent测试
接下来我们回到AI Agent 对话窗口中,输入下面的问题
请帮我查询一下student_scores有多少条记录
上面我们通过简单的自然语言实现了一个text2sql,这工作流也可以分享给其他人使用。
5.总结
今天主要带大家了解并实现了基于 Dify 知识库与 AI Agent 的 Text2SQL 工作流方案。借助 Dify 提供的功能,我们首先创建了知识库,上传创建表的 SQL 语句文本,完成文本向量的创建。接着制作工作流,添加开始、知识检索、Agent 和直接回复等节点,对每个节点进行细致配置,尤其在 Agent 节点配置中选择合适的工具、模型和策略,完成工作流 AI Agent 的搭建。之后,我们又创建了 AI Agent,配置系统提示词、工具及模型等。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!