0 背景
Text2SQL智能报表方案旨在通过自然语言处置惩罚(NLP)技能,利用户可以或许以自然语言的形式提出问题,并自动天生相应的SQL查询,从而获取所需的数据报表,用户可根据得到结果展示分析从而为结论提供支撑,其次可通过对结果数据与用户问题拆解然后对非常可能存在的问题提供解析。
1 技能框架
智能报表整体架构分为5层,分别为资源配置层、数据存储模块、LLM、智能体开发框架、功能应用。我们要做的就是怎样选型与适配各个层之间的交互,数据与大模子本质决定了功能的天花板。
- 机器算力: 大模子部署必要足量的内存(RAM)与显存(GPU),好比部署7B(FP32/4Byter)可能必要7G左右内存,假如要进行微调则必要GPU的加持(假如部署在GPU上推理速度会更快);
- 知识库(外挂RAG):包含用户必要查询的数据库表详细的形貌信息(包含库、表、详细字段);智能体系统形貌信息,好比我们系统可能含有一个Text2SQL智能体、数据分析智能体,那么必要一个具体的系统形貌信息(角色定位、工具信息形貌,输出限制等等);
- 业务数据库:为数据分析等场景提供支持;
- 向量数据库: 对知识库(表结构)向量化,方便快速检索;
- 大模子:
- 从利用方法可分为 :1 API接口调用(前期资源不到位环境可暂时利用API接口调时)2 数据属于保密资产,必要选择本地部署的方式办理泄漏问题;
- 从功能可分为: 1 大语言模子; 2 词向量嵌入模子;
- 开发框架应用:提供了一系列工具来简化大模子业务流程,快速开发迭代;
- 服务产品:可按照实现模块进行分期实现,可优先实现Text2SQl 、报表图示、陈诉天生、智能客服等等;
1.1 Text2SQL
功能:Text-to-SQL(或者Text2SQL,text2Code的子任务),顾名思义就是把文本转化为SQL语言,更学术一点的定义是:把数据库领域下的自然语言(Natural Language,NL)问题,转化为在关系型数据库中可以执行的结构化查询语言(Structured Query Language,SQL),因此Text-to-SQL也可以被简写为NL2SQL。· 输入:自然语言问题,好比“查询表t_user的干系信息,结果按id降序排序,只保留前10个数据 ”· 输出:SQL,好比“SELECT * FROM t_user ORDER BY id DESC LIMIT 10”
优点: Text2SQL 应用主要是资助用户减少开发时间,降低开发本钱。“打破人与结构化数据之间的壁垒”,即普通用户可以通过自然语言形貌完成复杂数据库的查询工作,得到想要的结果。
目标:自然语言查询语句 -> SQL 结构化查询语言;
已知:数据库中的有限表,测试集合《text_question,SQL_answer,My_sql_result》
办理方法: PE + LLM
案例1 表少、简单
一个最基础、最直观的提示工程方案是,输入数据库的 Database Schema,即数据库的基本结构(包罗表名、列名、主外键关系等等),以及用户的问题,提示模子输入该问题对应的 SQL 语句。这种提示范式可以很方便让 LLM 适应各种不同的数据库与对应的用户查询。近期的一些研究表明,(提示词越精确)在输入中,额外增加表和列的文本形貌、小样本示例(即 few-shot Question-SQL pairs)、一定格式形貌的数据样本(即数据库中每一个表的随机几行数据样本)等信息有助于 LLM 更好地明白数据库结构,从而天生更准确的 SQL【好比:RSL-SQL】。
- 输入问题提示词以及干系的表结构信息,让大模子产出结果,如下:(通义千问)
-
办理方法2:PE + RAG / KAG +LLM
案例2 :真实的业务场景面对的是多库、多表、多字段,而且存在表字段形貌信息存在语义,在提示中包含完备的数据库信息会导致输入 token 过多,计算本钱增加,更重要的是会引入大量噪音。在天生 SQL 之前,用一些方法提前找到与用户问题干系的表和列,然后,输入给大模子的是被显著简化后的 Database Schema,从而达到减小输入噪音并加强 SQL 天生性能的目的【RAG】。
- 起首是怎样得到详细形貌数据库表的信息,这一个必要具体业务部门(用户)有一个深入的明白;
- 过滤掉与用户问题无关的数据表形貌信息(简单、详细、过滤不须要冗余信息);
办理方法3: PE+RAG+SFT+LLM
案例3:存在大量的表、而且已经网络到大量的练习数据;
- 基于积聚的练习数据进行微调,得到特定领域的大模子(按照业务、主题分别);
注意:
- 1 记任命户的提问日志,分析用户的举动信息,为下次用户利用提供参考;
- 2 模子微调数据网络:是否精确,假如精确直接放到标注数据中,不精确可以把查询的语句写入;
- 3 假如大模子能力有限,可按照业务或者主题进行切分,增加模子的抗干扰能力;
1.2 大模子
1.2.1 语言大模子(预练习数据库)
目前,基于 LLM 的 Text-to-SQL 主要分为两类技能路线,一类是对一些开源的参数较小的 LLM(如 Deepseek-7B) 进行微调,另一类则是基于闭源的参数较大的 LLM (如 GPT-4、GPT-4o)的提示工程方法。
精度/通用性与模子大小是一个矛盾点,高精度意味着必要跟多的参数(记着全部信息)。怎样落地优选平衡二者之间的关系,可以从下面出发:
- 预算充足(有钱),直接利用开源的大模子,通用性能广、明白用户的需求能力更强;
- 预算不敷,那就做垂直领域的大模子,基于非房/房订单业务数据(SQL对话数据)对大模子进行微调,数据质量直接决定模子的上线,而且数据的网络必要时间。其次可以通过提示词工程等引导大模子回答;
1.2.2 开源大模子选择
text2SQL : 目标:具备coder、function calling 能力;
本地部署会占用大量内存,下面是目前几个开源大模子。当然假如必要再进行微调,那么必要更多的内存,好比选择Adam优化器,必要额外3倍的模子大小内存,共计4倍(好比deepSeek V2,必要16 * 4 = 64G)
常见底座模子概览:(深度求索、智谱、零壹万物、阿里)
大模子下载地址:
- HuggingFace: Hugging Face – The AI community building the future.
1.2.3 嵌入大模子
目标:为了RAG提供理论模子支持(多维度1024,英文+中文),提前找到与用户问题干系的表和列;
未来主要技能工作内容:
- 提示词工程:新表信息完善、few-shot库构建+ 召回/COT技能;
1.3 数据分析与报表
- 智能分析:提供数据明白能力、数据趋势解析等等,可借助业务文档提出切合业务的问题分解,支持归因、TopN、维度下钻、时序猜测等等算法,以及动态的操作推荐;
- 智能图示:根据SQL查询结果(或者代码)提供给前端按照具体图例展示;
- 动态预警:借助大模子的动态趋势预警能力,实现数据自动找人,将业务数据的非常波动自动推送到干系人,资助业务部门及时发现问题并接纳有用措施。
- 智能洞察:具备时序非常检测、因果关联、波动归因等自动洞察能力,自动的发现有用结论。
1.4 明白目标
- 数据源以及权限定位:全部库表是否有利用限制等条件,必要业务完善干系表信息
功能1 为用户提供参考SQL语句;
功能2 执行SQL代码;
功能3 为前端提供图(图片),还是为前端提供具体执行代码等等;
2 成熟的产品
[table][tr] 名称
简介
特性
文章来源
Star
缺点
[/tr][tr][td] Chat2DB (阿里开源 Chat2DB :一款多数据库客户端工具!)
[/td][td] Chat2DB 是一个功能强大的 SQL 客户端和数据分析工具,支持对话式数据分析,可以或许辅助天生 SQL。它提供网页和客户端两种利用方式,支持几乎全部流行的数据库,而且开源了7B的SQL模子。
[/td][td] SQL天生、智能陈诉、数据探索
[/td][td] https://www.zhihu.com/search?type=content&q=%E9%98%BF%E9%87%8C%E5%BC%80%E6%BA%90%20Chat2DB%20
github:
GitHub - CodePhiliaX/Chat2DB: |