AI专题(一)----NLP2SQL探索以及解决方案
前面写了很多编码、算法、底层计算机原理等相关的技术专题,由于工作方向调整的缘故,今天开始切入AI人工智能相关介绍。本来按照规划,应该先从大模型的原理开始介绍会比较合适,但是计划赶不上变化,前面通用大模型的工作处于高度紧张状态,没来得及写;这段时间在准备启动AI+大数据的工作,跟NLP2SQL强相关,做了些调研,谨以此文章记录相关的技术以及想法。
NLP2SQL(Natural Language Processing to Structured Query Language)是将自然语言问题自动转化为数据库可执行SQL查询的技术。其核心目标是通过理解人类日常语言,生成对应的数据库操作指令,降低非技术人员对实时生产系统的数据查询门槛。通过字面理解,可能对于有一定的AI技术知识基础的同学来说,感觉没有太多的技术门槛。但是,技术的复杂性往往不在于用一个Demo场景去验证它的可行,而在于提出一个系统的解决方案,它不但能够解决各种复杂、未知的可能,并达到可商业化的成功率。
下面我们由浅入深展开,以一个企业经营情况的问答来展开:2024年公司利润是多少?
从这个问题上来看,我们大模型应对起来应该是毫无压力,只要我们针对公司每个大区的每日/每月的经营报表的表结构丢给大模型,并告诉他要求以及问题,原生的NLP2SQL都可以轻松胜任。我们可以直接应用OpenAI公司在官网给的一个标准模板生成的NLP2SQL的例子:
System/*系统指令*/
你是一个 SQL 生成专家。请参考如下的表格结构,直接输出 SQL 语句,不要多余的解释。/*数据库内表结构*/
CREATE TABLE Orders (UnitID INT, /*大区ID*/UnitName VARCHAR(255) NOT NULL,/*大区名称*/Date datetime NOT NULL,/*日期*/Revenue DECIMAL(15, 2) NOT NULL,/*销售额*/Profit DECIMAL(15, 2) NOT NULL,/*利润*/Cost DECIMAL(15, 2) NOT NULL,/*成本*/TotalAssets DECIMAL(15, 2) NOT NULL/*资产总额*/
);...此处省略其他表.../*问题*/
2024年公司利润是多少?
根据这个prompt,以我们现有的大模型的能力,轻松就能给出sql语句,并且准确率100%。但是,这完全是我们站在了理想的角度提出了一个符合我们想要的问题(或者说就是一个Demo),商业环境用户使用过程中,往往是不会跟着技术人员的思路来的,用的人还是公司的领导,不好教育用户,他们往往会简单粗暴的问一句:2024年公司经营情况怎么样?去年ICT业务情况怎样?分析下某某业务在XX时间段异常的原因?
当用户问题开始出现变化的时候,这就开始大大增加系统复杂性了,用户可能会从不同的角度、时间段、业务层面等等去提出问题。我们需要把相关问题的所有的表结构定义,都放入到prompt当中,比如资产负债表、投资项目表、支出项目表、业务经营表等等,那么我们的这一类的问题,在生产环境中就会膨胀出十几张甚至几十张表结构,我们还得想办法告诉大模型这些表结构之间的关联关系等等,这时候我们上面的prompt就会急剧膨胀,膨胀到超出上下文大小,大模型也无法理解的地步,成功率就开始急剧下降。(设计得非常合理的大宽表解决方案,能缓解不能完全解决)
第二个问题就是,每个用户关注的重点,也不一样,同样的问题“2024年公司经营情况”,董事长关注营收,CEO关注利润,总会计师关注支出,甚至可能还跟公司背景有联系(公司考核营收比较重或者利润比较重等),纯靠大模型推理,有时候会出现答案好像是对的,但却并不是我们想要的。
行业三种技术解决方案
方案一:text2SQL
该方案简单粗暴,具体例子和实践在上面已经描述过了,不再赘述。该方案最重要的点在于设计合理的大宽表,尽量避免让大模块跨表查询,否则多表联表查询的时候会出现各种不可预知的错误,如LLM把关联字段理解错误,导致查不到数据,或者数据错误。
即使设计合理,由于不同企业背景和企业特点,大模型在没有这些背景知识支撑下,成功率也不会很高,同时大宽表还会带来性能的缺陷。
方案二:text2Code
方案二同样是需要将表结构等信息放在Prompt里面灌给大模型让它去推理学习,但是不同的是大模型生成的是代码&&SQL,利用代码在自定义的沙箱中执行,利用Code执行业务逻辑处理,利用SQL获取数据库的数据,最后得到用户的答案。
方案三:text2API
该方案是我认为解决NLP2SQL诸多挑战的最优解,通过在AI agent和数据库中间,架一个中间的API层,该层需要能够归纳、涵盖所有底层数据库指标,并通过API暴露给AI agent进行调用。用户通过AI agent进行提问的时候,AI agent把具体的场景问题,拆成多个可能的指标,并发的去API层拿到所有的指标,然后把所有的这些指标数据交给大模型去总结。
这种做法,能够把prompt大小限制、SQL生成的随机性、问数背景的各种不确定性,最大可能的消灭在API层的指标建设上,得到一个较为清晰、明确的结果。
最终方案
在方案三的基础上,我进一步设计了在AI agent上利用LLM的function call做一次场景(意图)识别,然后根据场景去知识库/数据库拿定义好的,每个场景对应的指标,即可得出前后互相对应的完整解决方案了,完整流程如下:

所有的人工智能,最后都是“人工”智能。
相关文章:
AI专题(一)----NLP2SQL探索以及解决方案
前面写了很多编码、算法、底层计算机原理等相关的技术专题,由于工作方向调整的缘故,今天开始切入AI人工智能相关介绍。本来按照规划,应该先从大模型的原理开始介绍会比较合适,但是计划赶不上变化,前面通用大模型的工作…...
深入理解 React Hooks:简化状态管理与副作用处理
在现代前端开发中,React 已经成为了最受欢迎的 JavaScript 库之一。随着 React 16.8 的发布,React Hooks 的引入彻底改变了开发者编写组件的方式。Hooks 提供了一种更简洁、更直观的方式来管理组件的状态和副作用,使得函数组件能够拥有类组件…...
Spring Boot 实现防盗链
在 Spring Boot 项目中实现防盗链可以通过多种方式,下面为你介绍两种常见的实现方法,分别是基于请求头 Referer 和基于令牌(Token)的防盗链。 基于请求头 Referer 的防盗链 这种方法通过检查请求头中的 Referer 字段,…...
Java 动态代理实现
Java 动态代理实现 一、JDK动态代理二、CGLIB动态代理三、动态代理的应用场景四、JDK代理与CGLIB代理比较 动态代理是Java中一种强大的技术,它允许在运行时创建代理对象,用于拦截对目标对象的方法调用。 一、JDK动态代理 JDK动态代理是Java标准库提供的代…...
2025年4月通信科技领域周报(4.07-4.13):6G技术加速落地 卫星通信网络迎来组网高潮
2025年4月通信科技领域周报(4.07-4.13):6G技术加速落地 卫星通信网络迎来组网高潮 目录 2025年4月通信科技领域周报(4.07-4.13):6G技术加速落地 卫星通信网络迎来组网高潮一、本周热点回顾1. 华为发布全球首…...
《手环表带保养全攻略:材质、清洁与化学品避坑指南》
系列文章目录 文章目录 系列文章目录前言一、表带材质特性与专属养护方案二、清洁剂使用红黑榜三、家庭清洁实验:化学反应警示录四、保养实践方法论总结 前言 手环作为现代生活的智能伴侣,表带材质选择丰富多样。从柔软亲肤的皮质到耐用耐磨的金属&…...
人脸扫描黑科技:多相机人脸扫描设备,打造你的专属数字分身
随着科技的迅猛发展,人脸扫描这个词已经并不陌生,通过人脸扫描设备制作超写实人脸可以为影视制作打造逼真角色、提升游戏沉浸感,还能助力教育机构等领域生产数字人以丰富教学资源,还在安防、身份识别等领域发挥关键作用࿰…...
基于Python的中国象棋小游戏的设计与实现
基于Python的中国象棋小游戏的设计与实现 第一章 绪论1.1 研究背景1.2 研究意义 第二章 需求分析2.1 需求分析2.1.1核心功能需求2.1.2 用户体验需求2.1.3 衍生功能需求 2.2 可行性分析2.2.1 技术可行性2.2.2 经济可行性2.2.3 市场可行性2.2.4 法律与合规性 第三章 概要设计3.1 …...
简单好用的在线工具
用AI写了一些在线工具,简介好用,推荐给大家,欢迎大家使用并提议意见。 网址:https://www.bittygarden.com/ 目前已有以下功能: MD5SM3SHAUnicode 编码Unicode 解码Base32 编码Base32 解码Base64 编码Base64 解码URL …...
JAVA设计模式——(1)适配器模式
JAVA设计模式——(1)适配器模式 目的理解实现优势 目的 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作。 理解 可以想象成一个国标的插头,结果插座是德标的&…...
外卖市场规模巨大,是宽广赛道?京东CEO发言
大家好,我是小悟。 在竞争激烈的外卖市场中,京东作为新入局者,正以独特的战略视角和坚定的决心,重新定义外卖行业的竞争格局。 近日,京东集团CEO许冉在接受采访时表示:“外卖行业本就是一个宽广的赛道&am…...
Flutter PIP 插件 ---- iOS Video Call 自定义PIP WINDOW渲染内容
简介 画中画(Picture in Picture, PiP)是一项允许用户在使用其他应用时继续观看视频内容的功能。本文将详细介绍如何在 iOS 应用中实现 PiP 功能,包括自定义内容渲染和控制系统控件的显示。 效果展示 功能特性 已完成功能 ✅ 基础 PiP 接口实现(设置…...
TensorFlow 实现 Mixture Density Network (MDN) 的完整说明
本文档详细解释了一段使用 TensorFlow 构建和训练混合密度网络(Mixture Density Network, MDN)的代码,涵盖数据生成、模型构建、自定义损失函数与预测可视化等各个环节。 1. 导入库与设置超参数 import numpy as np import tensorflow as t…...
xml+html 概述
1.什么是xml xml 是可扩展标记语言的缩写: Extensible Markup Language。 <root><h1> text 1</h1> </root> web 应用开发,需要配置 web.xml,就是个典型的 xml文件 <web-app><servlet><servlet-name&…...
混合精度训练中的算力浪费分析:FP16/FP8/BF16的隐藏成本
在大模型训练场景中,混合精度训练已成为降低显存占用的标准方案。然而,通过NVIDIA Nsight Compute深度剖析发现,精度转换的隐藏成本可能使理论算力利用率下降40%以上。本文基于真实硬件测试数据,揭示不同精度格式的计算陷阱。…...
Python语法系列博客 · 第5期[特殊字符] 模块与包的导入:构建更大的程序结构
上一期小练习解答(第4期回顾) ✅ 练习1:判断偶数函数 def is_even(num):return num % 2 0print(is_even(4)) # True print(is_even(5)) # False✅ 练习2:求平均值 def avg(*scores):return sum(scores) / len(scores)print(…...
Sleuth+Zipkin 服务链路追踪
微服务架构中,为了更好追踪服务之间调用,实现时间分析,性能瓶颈分析,故障排查,因此有必要搭建链路追踪。下面简单介绍下实现的过程。 一.引入依赖 <!-- 链路追踪 zipkin已经集成有sleuth,不需要再单独…...
意志力的源头——AMCC(前部中扣带皮层)
AMCC(前部中扣带皮层)在面对痛苦需要坚持的事情时会被激活。它的存在能够使人类个体在面临困难的事、本能感到不愿意的麻烦事情时,能够自愿地去做这些事——这些事必须是局部痛苦或宏观的痛苦,即微小的痛苦micro-sucks。 AMCC更多…...
[Jenkins]pnpm install ‘pnpm‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
这个错误提示再次说明:你的系统(CMD 或 Jenkins 环境)找不到 pnpm 命令的位置。虽然你可能已经用 npm install -g pnpm 安装过,但系统不知道它装在哪里,也就无法执行 pnpm 命令。 ✅ 快速解决方法:直接用完…...
Java从入门到“放弃”(精通)之旅——数组的定义与使用⑥
Java从入门到“放弃”(精通)之旅🚀——数组⑥ 前言——什么是数组? 数组:可以看成是相同类型元素的一个集合,在内存中是一段连续的空间。比如现实中的车库,在java中,包含6个整形类…...
部署rocketmq集群
容器化部署RocketMQ5.3.1集群 背景: 生产环境单机的MQ不具有高可用,所以我们应该部署成集群模式,这里给大家部署一个双主双从异步复制的Broker集群 一、安装docker yum install -y docker systemctl enable docker --now # 单机部署参考: https://www.cnblogs.com/hsyw/p/1…...
如何对docker镜像存在的gosu安全漏洞进行修复——筑梦之路
这里以mysql的官方镜像为例进行说明,主要流程为: 1. 分析镜像存在的安全漏洞具体是什么 2. 根据分析结果有针对性地进行修复处理 3. 基于当前镜像进行修复安全漏洞并复核验证 # 镜像地址mysql:8.0.42 安全漏洞现状分析 dockerhub网站上获取该镜像的…...
Ubuntu 安装WPS Office
文章目录 Ubuntu 安装WPS Office下载安装文件安装WPS问题1.下载缺失字体文件2.安装缺失字体 Ubuntu 安装WPS Office 下载安装文件 需要到 WPS官网 下载最新软件,比如wps-office_12.1.0.17900_amd64.deb 安装WPS 执行命令进行安装 sudo dpkg -i wps-office_12.1…...
基于springboot的老年医疗保健系统
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言࿰…...
使用Ollama本地运行deepseek模型
Ollama 是一个用于管理 AI 模型的工具 下载 Ollama Ollama 选择版本 下载模型 安装好后,下载模型 选择模型 选择模型大小,复制对应命令(越大越聪明,但是内存要求越高) 打开控制台运行命令,第一次运行会自动…...
网络编程 - 3
目录 UDP 连接拓展(业务逻辑) 词典服务器实现 完 UDP 连接拓展(业务逻辑) 我们上一篇文章实现了一个回显服务器,在服务端中业务方法 process 中,只是单纯的将客户端输入的东西 return 了一下࿰…...
rebase和merge的区别
目录 1. 合并机制与提交历史 2. 冲突处理方式 3. 历史追溯与团队协作 4. 推荐实践 5. 撤销难度 git rebase和git merge是Git中两种不同的分支合并策略,核心区别在于提交历史的处理方式:merge保留原始分支结构并生成合并提交&am…...
5G 毫米波滤波器的最优选择是什么?
新的选择有很多,但到目前为止还没有明确的赢家。 蜂窝电话技术利用大量的带带,为移动用途提供不断增加的带宽。 其中的每一个频带都需要透过滤波器将信号与其他频带分开,但目前用于手机的滤波器技术可能无法扩展到5G所规划的全部毫米波&#…...
【HDFS入门】HDFS性能调优实战:压缩与编码技术深度解析
目录 1 HDFS性能调优概述 2 HDFS压缩技术原理与应用 2.1 常见压缩算法比较 2.2 压缩流程架构 2.3 压缩配置实践 3 列式存储编码技术 3.1 ORC与Parquet对比 3.2 ORC文件结构 3.3 Parquet编码流程 4 性能调优实战建议 4.1 压缩选择策略 4.2 编码优化技巧 5 性能测试…...
如何在 IntelliJ IDEA 中安装通义灵码 - AI编程助手提升开发效率
随着人工智能技术的飞速发展,AI 编程助手已成为提升开发效率和代码质量的强大工具。在众多 AI 编程助手之中,阿里云推出的通义灵码凭借其智能代码补全、代码解释、生成单元测试等丰富功能,脱颖而出,为开发者带来了全新的编程体验。…...
