零基础AI开发系列教程:基于大模型的智能问数Text2SQL

五、【AI】Dify自然语言生成Sql并查询数据库 1、把表结构(含表名、字段、主外键关系)导入到知识库,用知识库来检索生成可执行Sql语句,执行Sql语句,生成数据结果。3、第三个节点选择添加节点->模板转换,输入的变量就是第二个节点输出的**/Json**2、第二个节点选择添加节点->工具->rookie_text2data,输入的变量就“5、第五个节点选择添加节点->工具->rookie_excute_sql,输入的变量“4、第四个节点选择添加节点->LLM(大语言模型),并提供System信息指导。8、第七个节点选择添加节点->结束,输入的变量“ 阅读详情
AI摘要

本文介绍基于大模型的智能问数Text2SQL,它能将日常语言翻译成数据库指令。以Dify实现仓库查询助手为例,先准备商品、仓库等相关数据,接着通过大语言模型生成SQL语句、执行并拼接结果、解析结果生成回答,最后进行验证测试,还提及其他实现方式。

基于大模型的智能问数Text2SQL

Text2SQL是指通过大语言模型把日常语言翻译成数据库指令。简单来说,它能把我们说的话变成数据库能听懂的"命令语言"(SQL)。
它的最大特点是:普通人不需要懂编程,只要用平时说话的方式提问,比如"帮我查一下上周销售额",系统就能自动从数据库里查询数据,并做出分析。

接下来,我们用Dify来实现一个智能问数的仓库查询助手,通过聊天的方式,来查询以及分析商品库存信息。

一. 准备数据

  1. 商品表(t_product),记录商品信息
  2. 仓库表(t_warehouse),记录仓库信息
  3. 库存表(t_inventory),记录各仓库商品库存
  4. 入库记录表(t_stock_in),记录商品入库流水

前提条件,已经安装了MySQL数据库

没有安装的可以参考以下方式用Docker安装MySQL
https://www.runoob.com/docker/docker-install-mysql.html

用数据库管理工具,比如Navicat直接运行SQL文件init.sql
image-20250411212547218

也可以复制init.sql里面的内容,粘贴在MySQL命令行,回车执行
Image

二. 用Dify实现智能问数Text2SQL

整体思路:

  1. 通过大语言模型将要查询的内容生成对应的SQL查询语句
  2. 将SQL语句分别执行获得查询结果
  3. 拼接查询结果
  4. 将查询结果作为上下文,再结合用户的提问,生成回答。

工作流如下,可以看出节点并不多,核心节点也就几个
image-20250411213733285

核心节点介绍

LLM-生成SQL语句

image-20250411213545600

提示词是生成SQL语句的关键。如果生成的结果不满意可以根据输出的SQL语句来调整提示词

## 角色
你是一位精通MySQL数据库SQL查询语句的专家。

## 任务
根据提供的数据库的表结构,将用户输入的内容转换为MySQL数据库的SQL查询语句。

## 数据库的表结构
商品表结构如下:
CREATE TABLE t_product (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '商品ID',
    name VARCHAR(50) NOT NULL COMMENT '商品名称',
    unit VARCHAR(10) NOT NULL COMMENT '单位'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';


仓库表结构如下:
CREATE TABLE t_warehouse (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '仓库ID',
    name VARCHAR(50) NOT NULL COMMENT '仓库名称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='仓库表';

库存表结构如下:
CREATE TABLE t_inventory (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID',
    product_id INT NOT NULL COMMENT '商品ID,关联product_id表的id',
    product_name VARCHAR(50) NOT NULL COMMENT '商品名称(冗余)',
    warehouse_id INT NOT NULL COMMENT '仓库ID,关联t_warehouse表的id',
    quantity INT NOT NULL DEFAULT 0 COMMENT '库存数量',
    FOREIGN KEY (product_id) REFERENCES t_product(id),
    FOREIGN KEY (warehouse_id) REFERENCES t_warehouse(id),
    UNIQUE KEY (product_id, warehouse_id) COMMENT '防止重复记录'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存表';


入库记录表结构如下:查询时,要加is_deleted = 0
CREATE TABLE t_stock_in (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '记录ID',
    product_id INT NOT NULL COMMENT '商品ID,关联product_id表的id',
    product_name VARCHAR(50) NOT NULL COMMENT '商品名称(冗余)',
    warehouse_id INT NOT NULL COMMENT '仓库ID,关联t_warehouse表的id',
    quantity INT NOT NULL COMMENT '入库数量',
    operator VARCHAR(20) COMMENT '操作人',
    batch_no VARCHAR(30) COMMENT '批次号',
    create_time datetime(3) DEFAULT CURRENT_TIMESTAMP(3)  COMMENT '入库时间',
	is_deleted TINYINT(1) DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除',
    FOREIGN KEY (product_id) REFERENCES t_product(id),
    FOREIGN KEY (warehouse_id) REFERENCES t_warehouse(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='入库记录表';


## 系统参数
当前时间:{{#1742350083195.text#}}

## 要求
1. 需要严格按照数据库的表结构来生成。
2. 将生成的SQL语句封装到一个JSON数组中。
3. 确保SQL查询语法符合MySQL语法。

代码执行-提取SQL语句

将大语言模型生成的SQL语句提取出来,用来查询
image-20250411214322935

迭代-循环执行SQL语句

执行SQL语句,我们用的是Database工具,可以在Dify市场搜索Database安装, 目前支持MySQL、PostgreSQL、SQLite、SQLServer、Oracle数据库
image-20250411214418445

需要填写执行SQL语句的数据库uri,格式如下:

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是安装在宿主机,Dify是安装在Docker容器,所以填的是:
mysql+pymysql://root:123456@host.docker.internal:3306/wms_test

如果你的数据库和Dify都是安装在Docker容器里,则填写服务器ip即可:
mysql+pymysql://root:123456@ip:3306/wms_test

拼接查询结果

将上一步的查询结果拼接起来
image-20250411214546836

解析查询结果

将查询结果作为上下文,再结合用户的提问,生成回答。
image-20250411214623338

三. 验证测试

image-20250411211652951

image-20250411212035795

四. 总结

上面我们用Dify的工作流实现了智能问数Text2SQL。通过这个工作流我们了解了时间工具以及Database工具的使用,LLM提示词的编写,用代码执行节点来处理数据,用迭代节点来处理重复的逻辑。关于智能问数Text2SQL,用其他的方式也同样可以实现,比如用LLM结合自己写逻辑来实现,或者使用开源工具Vanna.AI来实现,核心的思想都是通过大语言模型将自然语言转成SQL语句。


🔥《零基础小白AI实战教程:手把手教你打造专属的智能体》🚀 系列教程更新中!
✅ 已更新:AI实践虚拟化平台安装
✅ 已更新:Docker Desktop 安装
✅ 已更新:Ollama安装教程
✅ 已更新:DeepSeek私有化部署
✅ 已更新:Dify私有化部署
✅ 已更新:Dify接入大模型
✅ 已更新:Dify + DeepSeek搭建本地私有化知识库
✅ 已更新:Dify应用类型的选择
✅ 已更新:Dify升级指南
✅ 已更新:Dify节点的详细介绍(上)
✅ 已更新:Dify节点的详细介绍(中)
✅ 已更新:Dify节点的详细介绍(下)
✅ 已更新:RagFlow本地部署和使用
✅ 已更新:基于大模型的智能问数NL2SQL

👉 关注公众号"北灵聊AI"获取最新更新,免费领取教程资料和源码

41-dify案例分享-基于database插件实现Text2sql的数据库查询图表工作流 本文介绍基于 Text2SQL 的 Dify 工作流实现过程。先阐述 Text2SQL 概念、步骤及应用领域。接着说明工作流制作,包括用 chatflow 加开场白、获取系统时间,配置 LLM 生成 SQL,用 SQL Execute 工具查询,经 LLM 汇总结果,代码生成 ECharts 数据,条件分支判断图表类型输出。最后介绍验证测试、提供体验地址,还提及借助工具生成建表和初始化数据 SQL 语句。 阅读详情

相关推荐

AI代码开发宝库系列:Text2SQL深度解析基于LangChain构建

在数字化转型的浪潮中,数据已成为企业最重要的资产之一。然而,如何让非技术人员也能轻松访问和分析这些数据,一直是业界的难题。Text2SQL技术的出现,彻底改变了这一现状。通过将自然语言转换为SQL查询,它让每个业务人员都能直接与数据库对话,无需掌握复杂的SQL语法。本文将深入探讨基于LangChain框架构建Text2SQL系统的核心技术,通过实际案例和完整代码实现,帮助读者掌握这一前沿技术。Agents(智能体):自动化决策和执行流程Tools(工具):扩展系统功能Memory(记忆):保存上下文信息。

chenchihwen的专栏 1766

再谈Agent:Dify智能体实现Txet2SQL

什么是Agent?Agent的是能够在一定环境中自主运作并完成特定任务的程序或者系统。自主性:Agent能够在没有人为干预的情况下运行,并独立做出决策。适应性:Agent能够根据环境的变化调整自己的行为。反应性:Agent能够对环境中的变化做出快速反应。预动性:Agent不仅对环境做出反应,还能主动采取行动以实现目标。社会性:多个Agent之间可以进行交互,合作完成更复杂的任务。

1万+

Dify实现text2sql工作流[SQL调用篇],并查询Postgres数据库 or Mysql数据库(docker容器)

Dify实现text2sql工作流[SQL调用篇],并查询Postgres数据库 or Mysql数据库(docker容器)

丨汀、的博客 1万+

Dify 实战案例:用 Dify+ 知识库 + Agent 构建 Text2SQL 智能查询系统,自然语言秒变 SQL 代码

Text2SQL(或称NL2SQL)是一种自然语言处理技术,旨在将自然语言(Natural Language)问题转化为关系型数据库中可执行的结构化查询语言(Structured Query Language,SQL),从而实现对数据库的查询和交互。这项技术的核心目标是通过自然语言描述,无需用户具备SQL语法知识,即可完成复杂的数据库查询任务

大模型研究中心 6123

智能体:Dify 实现 text2sql 工作流程

智能体:Dify 实现 text2sql 工作流程

Dify智能体:AI智能问数.yml

Dify智能体:AI智能问数.yml

开源AI新协议!AI Agent与前端交互的轻量级协议,轻松构建交互式AI应用!

AI Agent 的兴起让前端交互需求激增,但传统开发中,连接Agent后端与前端需大量定制代码,效率低下。 在 MCP(模型上下文协议)、A2A(Agent-to-Agent 通信协议)之后,AI Agent 的生态正在走向一个更完整的方向:AG-UI 协议横空出世,专为 Agent 与前端应用的通信交互而设计。

bugyinyin的博客 2046

使用LaTex写IEEE trans 论文的参考文献(bib)

(1)在.TeX文件的最下方添加这几行内容,主要为生成tran形式的参考文献,第二行为参考文献名称,我命名为reference.bib,所以写的是reference,要根据自己的命名改写。(5)如果要在文中引用的话,就在.tex文件中添加\cite{},中括号里面内容为方框圈出来部分,但引用之后,在参考文献后面会出现[1]这样的标识,不知道为什么。(4)完成(3)以后,点击工具-命令-LaTeX,编译,然后按照此步骤LaTeX-bibtex-LaTeX-LaTeX,就可以完成参考文献的导入。

qq_45884215的博客 6258

零基础手把手:基于大模型实现自然语言转SQL数据分析智能体

文章介绍了如何构建自然语言转SQL的数据分析智能体,使用Qwen-Text2SQL模型将自然语言查询转化为可执行SQL,结合DeepSeek-R1作为智能体大脑,通过langchain框架搭建AI Agent,并利用Rag知识库优化提示词。该智能体能将非技术人员的自然语言需求转化为SQL查询,降低数据分析门槛,提升效率,让更多人能够利用数据进行决策,释放数据价值。

程序员鑫港的博客 1339

使用Docker搭建SearXNG搜索引擎

【代码】使用Docker搭建SearXNG搜索引擎。

janthinasnail的博客 1153

ESP32-BLE学习1-建立简单的server

start 学习之前,我想尝试使用ESP32的demo建立一个简单的server与手机接进行最基本的数据通信。 这里有BLE的简单讲解BLE资料 因为BLE的连接是具有主从机特性的,就像SPI,USB一些请求只能由主机端发起,连接也需要主机端发起。所以手机要想连上ESP32,就得将ESP32设置为从机模式。 从资料上可以看到,从机端通过Notify通知主机,所以从机就是GATT Server。 在进行ESP32 的demo学习之前,得大体看下ESP32的蓝牙组成,ESP32支持经典蓝牙和低功耗蓝牙4.2,

Spark的博客 1841

【天翼AI-星辰智能体平台】| 基于Excel表实现智能问数助手智能体开发实战

文章摘要:本文介绍了在中国电信星辰智能体平台上搭建基于Excel数据问答工作流的过程。工作流支持表格、柱状图、饼图、折线图等多种数据展示形式。作者详细阐述了两种数据处理方案:Pandas+RAG混合查询方案和Text2SQL方案,重点说明了如何利用ECharts模板和大模型提示词实现动态图表生成。通过特定的Markdown语法和提示词设计,成功实现了将JSON数据自动转换为可视化图表的功能。该方案具有通用性,可应用于各类数据可视化场景。

狮子也疯狂的博客 3085

分享一个简单的迭代学习机器人双臂控制(MATLAB)

1 什么是迭代学习控制 迭代学习控制(iterative learning control,简称ILC)由Uchiyama于1978年首先提出,不过因为论文由日文撰写,影响不是很大。1984年,Arimoto等人用英文介绍了该方法。它是指不断重复一个同样轨迹的控制尝试,并以此修正控制律,以得到非常好的控制效果的控制方法。 迭代学习控制的特点是“在重复中学习”,通过反复的迭代修正,达到改善控制效果的目的。迭代学习控制的原理是根据系统前次运行所获得的输出误差信息,在控制过程中不断修正控制输入,随着迭代的进行,逐

weixin_45776027的博客 4483

智能问数Text2SQL Vanna windows场景验证

1、Vanna多轮会话时有时识别不太准确2、qwen3 8b、deepseek-r1:7b的SQL生成效果不如qwen2.5 code:7b3、自定义术语或逻辑说明,可以转换成正确SQL4、使用简单主要有train方法进行自定义训练(DDL、Document、SQL对)

数据科学汇集 1596

SIC知识(8)--碳化硅的制备难点

6. 器件制造难点:碳化硅器件制造过程中的掺杂步骤需要在高温下完成,且需要采用高温离子注入的方式,这与传统硅基器件的扩散工艺不同。这些步骤需要精密的设备和严格的工艺控制,以确保器件的结构和功能。综上所述,碳化硅的制备难点相较于传统硅基器件主要在于更高的制备温度、更慢的生长速度、晶型控制的复杂性、后加工的难度、外延工艺的低效率以及器件制造的特殊要求和较高的成本。- **数据管理**:需要有效的数据管理系统来跟踪和记录生产过程中的每一个步骤,包括原料的批次、生长条件、加工参数等,以确保产品质量的可追溯性。

阿拉伯梳子的专栏 1595

使用 ChatGPT Store 里的工具给 ABAP 制作 Logo,效果一般

在编程领域中,Domain Specific Language(DSL)是一种特定于某一问题领域的计算机语言,诞生目的就是为了解决该领域特定类型的问题。在 ChatGPT 官网的 GPT Stores,也有很多已经预先配置完毕,专用于某一特定领域的 GPT 工具,OpenAI 将其分类如下。第三个问题是 Logo 的配色,提供蓝白,黑绿和灰黄,以及自定义调色板四种选择。这个 GPT 设计了四个问题,通过一问一答的方式,获得使用者想创建 Logo 的细节。这次的复杂度调成最低的 1,感觉还是有点花里胡哨的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 507

AI那些趣事系列118:学习智能问数开源项目SQLBot源码

主要流程包括:用户自然语言提问,上下文收集(元数据+术语+模板),Prompt 结构化构建(规则+示例+元数据),调用大模型生成 SQL,SQL 验证/执行(有效性校验),结果返回+数据训练(迭代优化)。作用:动态获取不同数据源(MySQL/PostgreSQL/SQL Server 等)的版本、表、字段信息,作为大模型生成 SQL 的「数据字典」。:获取指定表的字段名、数据类型、字段注释,是生成 SQL 字段选择的核心依据;作用:初始化大模型客户端,将构建好的 Prompt 传入大模型,生成 SQL。

abc50319的专栏 1855

史上最全工商银行核心系统建设历程:从“数据集中”到“ECOS”2.0,见证银行业信息科技跨时代发展征程

ECOS工程的直接成果是建成了工商银行第五代信息系统,即从单一核心银行系统到去核心化开放生态系统,率先开启了以智能化、开放化为特征,数据驱动引领经营模式变革,创新提出了一整套国际领先的分布式开放生态银行系统建设方案,在大型银行全分布式系统架构、主机下移、银行系统生态化转型、大规模交易型分布式数据库等多个领域再次实现“0到1”的突破,建成了具备国际领先水平的全分布式开放生态银行系统,继续勇立数字化转型潮头,推动高质量发展再上新台阶。工商银行的业务连续性管理水平实现了跨越式发展,有力地保障了业务发展。

银行信息系统应用架构详解 823

AI那些趣事系列116:智能问数:让人人都能玩转数据的 AI 黑科技

你是否有过这样的经历?对于我们来说,不用再畏惧数据的复杂性,只需专注于业务需求,让数据成为决策的 “得力助手”。:机器从知识库中确认 “新用户注册量” 对应数据库中 “user_reg” 表的 “reg_count” 字段,“华北 / 华东 / 华南” 对应 “region” 字段的枚举值(1/2/3)。的出现,彻底打破了这个壁垒 —— 它就像一个 “懂业务的 AI 数据分析师”,能听懂你的自然语言提问,自动完成数据查询、分析,还能生成直观的图表,让非技术人员也能 “即问即得” 数据洞察。

abc50319的专栏 1820

MIKE水动力笔记1_岸线及水深数据之依靠全球数据库资源提取的方法

通过各种数据库资源来获取全球岸线及水深数据,这种方法获取的岸线及水深数据精度偏低,比较适合大尺度范围的水动力研究。

晏长街的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

为什么你的 AI 智能问数项目落地不了?关键在这 3 个容易忽略的因素

《AI智能问数:企业数据分析新革命的关键要素》摘要 AI智能问数正成为企业数据分析的第四次革命,使业务人员无需技术背景即可通过自然语言快速获取精准数据。然而,约65%的AI问数项目未能达到预期效果。成功实施需把握三大核心要素:1)技术选型上,BI工具+AI增强路径比纯Text2SQL更可靠,准确率可达90%以上;2)需求范围需全面考虑数据质量、指标体系、权限控制等基础建设;3)推广策略应采取MVP模式渐进实施,配合员工培训与持续优化。

葡萄城技术团队博客 1182

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

智能问数(Text2SQL)的两大方案及实施成本

绝大多数 Text2SQL 走的是这条路。怎么做呢?用户问一句话,大模型直接生成 SQL(或某种计算逻辑再转换成 SQL)。早期靠微调,得准备大量高质量标注数据。现在流行挂个 RAG 知识库,把表结构、字段名、业务术语全向量化存起来,每次查询时现去检索相关片段喂给大模型。不管咋弄都得养 AI 专家团队,硬件得堆 GPU 集群,向量库还得持续维护调优。

xx_nm98的博客 228

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大模型系列七:将问数(TEXT2SQL)转换为图表(TEXT2DIAGRAM)

在现在大模型最常用的使用场景,就是Text2SQL场景,使用人类自然语言与大模型交互,由大模型自行生成SQL并形成相应的图表。

2301_81888214的博客 1141

推荐一款基于大模型和RAG的智能问数系统,大模型入门到精通,收藏这篇就足够了!

推荐一款基于大模型和RAG的智能问数系统,大模型入门到精通,收藏这篇就足够了!

DEVELOPERAA的博客 1059

智能问数不卷准确率:从 Text2SQL 到 DSL 的落地实践

文章摘要:当前Text2SQL产品过度追求准确率,但在实际业务场景中,用户无法验证SQL正确性导致高准确率失去意义。作者提出破局方案是将大模型与SQL隔离,采用"规范文本→结构化DSL→确认→编译SQL"的链路:LLM仅输出JSON DSL,经语义校验后回译为人类可读文本供确认,再由规则引擎生成可靠SQL。该架构在银行场景中实现了权限分层、审计追踪和指标口径刚性约束,并通过分层方案(预置模板+灵活DSL)平衡灵活性与可靠性。核心观点是AI应做受控选择而非开放式生成,确保结果可验证才是业务决策的关键。

Fzuim的博客 427

操作教程 | 在Cordys CRM中接入SQLBot开源智能问数系统,实现销售智能问数

让CRM系统快速拥有智能问数能力。

FIT2CLOUD飞致云的博客 1274
上一篇: 零基础AI开发系列教程:RagFlow本地部署和使用
下一篇: 通俗易懂介绍MCP是什么,MCP的使用
北灵聊AI
博客等级 码龄2年 303粉丝 34原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值