本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。
背景
当前企业坐拥海量数据,却因数据分析依赖 SQL 技术,仅少数专业人员能挖掘数据价值,陷入 "数据多、洞察少" 的困境。而 AI 智能体技术兴起,催生了自然语言转 SQL 数据分析智能体 ------ 它能将业务人员的自然语言需求转化为 SQL 查询,打破技术门槛,结合大模型的语境理解能力提升分析效率,助力企业低成本释放数据价值,支撑决策与创新。
SQL(结构化查询语言)是与数据库交互的主流工具,但非技术人员使用存在语法和表结构理解的门槛;而 NL2SQL 模型能将自然语言需求(如 "查 2023Q3 北京销售额")自动转为可执行 SQL,可降低查询门槛、提升效率、减少成本与错误,让更多人用数据决策,释放数据价值。
本篇介绍一下使用阿里千问、Deepseek等大模型实现一个自然语言数据分析智能体。
Qwen-Text2SQL模型
Qwen-text-to-sql 是由阿里巴巴开发并开源的文本到 SQL 转换模型,属于 Qwen通义千问大模型系列的衍生模型。该模型基于 Qwen 基础架构针对 SQL 生成任务进行了专项优化,开源后可通过 Hugging Face Hub 等平台获取,供开发者使用和二次开发。其核心功能围绕 "精准理解自然语言查询并生成可执行 SQL 语句" 展开,具体包括:
- 复杂自然语言解析:能理解包含多条件、模糊描述、业务术语的查询需求,例如 "找出 2023 年每个季度销售额超过 50 万且利润率高于 15% 的华东地区产品,按销售额从高到低排序"。
- 全面 SQL 语法支持:覆盖主流数据库(MySQL、PostgreSQL 等)的核心语法,包括单表查询、多表关联(JOIN 操作)、子查询、聚合函数(SUM/AVG/COUNT 等)、分组(GROUP BY)、筛选(HAVING)、排序(ORDER BY)等,可生成符合语法规范的复杂 SQL 语句。目前除了主流Mysql关系数据库,对开源大数据引擎Hive、Spark、Starrocks等支持也不错。
- 表结构感知与适配:当输入中提供数据表结构信息(如字段名、类型、表间关系)时,模型能结合元数据优化生成结果,避免字段名错误、表关联逻辑混乱等问题,例如已知 "orders 表含 order_id、user_id、amount 字段,users 表含 user_id、region 字段",可正确生成 "查询各地区总订单金额" 的关联查询 SQL。这里可通过检索Rag知识库、或元数据API完善补充提供精确提示词去生成较为准确SQL。
- 歧义处理与容错:对存在歧义的自然语言查询(如未明确时间范围、字段名称模糊),会通过合理推断生成最可能的 SQL(如默认取最近 30 天数据),或在必要时隐含补全逻辑(如自动添加合理的过滤条件)。在构建自然语言转SQL智能体工程中,可增加语义层验证环节,依据验证的结果通过与否,循环优化提示词再次执行SQL生成。
- 多场景适配:可应用于电商(订单分析)、金融(交易统计)、政务(数据汇总)等多领域,无需针对特定场景额外训练,仅通过提示词即可快速适配不同业务的数据库查询需求。SQL语法都较为通用,不同业务场景,可通过提示词上下文或RAG知识库等信息为生成SQL补充相关业务知识或场景辅助LLM更好贴合业务等。
自然语言翻译SQL智能体方案
本篇使用langchain框架构建数据分析智能体AIAgent,使用ollama本地部署DeepSeek-R1作为智能体大脑,依据用户指令及优化提示词去执行各种动作。为了完善相关提示词,本篇使用Rag知识库,向量数据库chroma,至于Rag知识库搭建笔者有往期文章分享这里不再赘述.
本篇数据分析智能体主要功能:用户输入自然语言,如查询"上海地区9月份参与国补购买华为手机销售额,智能体根据用户输入提示词(用非精确的描述用哪个数据库、什么表以及实际字段是什么)通过检索Rag知识库(库表字段信息需要提前准备好喂给Rag知识库)查询到精确的表和字段信息,再提交Qwen-text-to-SQ1模型去生成准确SQL语句,针对生成SQL提前做语义层校验,依据校验的结果正确与否,决定是否再优化提示词获取正确SQL语句直到生成正确为止(也可设置次数值,超过阈值人工干预或提醒优化智能体等),语义层校验通过后提交为执行引擎数据库返回正确的数据集。
具体流程:
- 用户提交查询
- 用户语言精准匹配:用户语言+提示词+rag查询精准匹配或API查询匹配,针对不同的SQL语言 增加不同的函数使用,功能解释,参数介绍;特殊语法的用法

- 用户数据分析提示词
- 使用大模型 + 提示词约束,从用户提示词中提取中使用的库表描述
- 从库表描述再去rag当中查真实表和字段名称
- 依据rag当中检索到真实的库表字段,再去完善用户数据分析提示词内容
- 依据完善的用户数据分析提示词内容提交给qwen大模型生成SQL
3.上述替换后的提示词再作为查询给到Qwen-SQL
4.生成之后的sQL进行语法、语义层检查,根据结果判断是否要再次生成
5.提交执行
除了第1步,其他几步这些部分都放在智能体内部,有提示词引导、控制等来完成,整体方案如图:

数据分析智能体代码实现
这里使用了ollama搭建deepseek-r1环境,作为rag、ai agent大脑;使用transformers运行阿里千文-自然语言翻译SQL大模型Qwen-text-to-sql;使用langchain框架搭建的AI Agent。这些环境的搭建方法可参考笔者之前文章,这里都不再赘述。
这里重点介绍四部分内容:
1)LLM数据库表选择及Rag知识库准备
2)Qwen-text-to-sql环境准备
3)AI Agent数据分析智能体环境准备
4)智能体运行过程解析
- LLM数据库表选择及Rag知识库准备
这里不再介绍环境搭建,参考以上文章,Rag知识准备重点介绍LLM数据库表选择、知识库内容准备、Rag提示词准备等
- LLM数据库表选择:
对用户需求使用LLM大模型进行真实数据集选择(目前只举例子,如果表的数量巨大,可以进行多级问题分类或其他方案解决)

- 知识库内容准备:
这里进行Rag知识库文档梳理,关于实际数据库、表、字段以及字段,相关使用说明信息,例:

- 知识库提示词准备:
提示词设置,首先给一个角色,然后指令查询rag知识库要求,同时限制"输出要求:只写结果,不写思考过程" 因为rag查询的数据库、表和字段信息

- Qwen-text-to-sql环境准备
本部分使用了transformers运行阿里千文-自然语言翻译SQL大模型
Qwen-text-to-sql,首先下载一个大模型具体内容参考上述文章这里不再赘述。以下是实现代码:

- AI Agent数据分析智能体环境准备与实现
此部分部署deepseek-r1作为AI Agent大脑;实现了AI Agent的工具集;实现智能体的提示词模版(介绍工具名称、工具集、输入、流程指南等内容)
AI Agent大脑:deepseek-r1使用ollma部署

工具集:首先,用于根据用户需求判断使用哪些表;其次,根据使用的表,去rag知识库检索真实表和字段信息,最后,根据用户需求 + 检索到真实库表、字段信息去生成sql。

提示词模版:介绍了input_variables占位符变量,工具名称,工具集、执行流程指南等

- 智能体运行过程解析:
首先,对用户需求"2023年销售额超过10000的产品ID和名称,按销售额降序排列"使用LLM大模型进行真实数据集选择(目前只举例子,如果表的数量巨大,可以进行多级问题分类或其他方案解决)

"找出2023年销售额超过10000的产品ID和名称,按销售额降序排列"大模型思考过程,最终思考结果,成功挑选出sales销售额表和products产品表两张

其次,依据上述选择出的sales和products两张表,提交给rag知识库检索出sales、proucts表信息和字段信息。
Ai agent接受到用户指令的思考过程:首先把用户需求进行拆解成为5部分;其次llm因为没有拿到真实数据库、表和字段信息先假设表构建一段sql,llm考虑准确问题,它又去rag里检索相关真实数据库、表和字段信息。如图:

再次,由用户需求"找出2023年销售额超过10000的产品ID和名称,按销售额降序排列" + rag检索出来的真实库表sales、products表以及字段product_id、sale_amt以及关联信息,形成需求带完整的、真实的库表字段信息的完整提示词信息,提交给Qwen_text_to_sql大模型去生成sql。
最后,对Qwen生成sql的进行语法、语义层校验,针对语法语义不通过的SQL进行,根据error信息,再次调整提示词重新生成sql。

以上是AI Agent数据分析智能体环境准备与实现全过程,当然这些实现过程还有很多可以再次优化点或方案,后续再优化讲解。
写在最后
自然语言转SQL的数据分析智能体的在于以智能化、低门槛的方式让非技术人员也能高效挖掘数据价值,同时为专业人员简化复杂流程,最终加速数据驱动决策在各业务场景的落地。除了自然语言转SQL去执行,做数据分析,后续可升级也能自然语言可视化报表实现。
"长风破浪会有时,直挂云帆济沧海",与君共勉!!!
学习资源推荐
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。