邯郸论坛网站建设,英文网站设计,wordpress 手动安装主题,学雷锋_做美德少年网站一、前言#xff1a;
目前#xff0c;大模型的一个热门应用方向text2sql它可以帮助用户快速生成想要查询的SQL语句。那对于用户来说#xff0c;大部分简单的sql都是正确的#xff0c;但对于一些复杂逻辑来说#xff0c;需要用户在产出SQL的基础上进行简单修改#xff0c…一、前言
目前大模型的一个热门应用方向text2sql它可以帮助用户快速生成想要查询的SQL语句。那对于用户来说大部分简单的sql都是正确的但对于一些复杂逻辑来说需要用户在产出SQL的基础上进行简单修改Text2SQL应用主要还是帮助用户去解决开发时间减少开发成本。
Text to SQL 简称Text2SQl是将自然语言文本Text转换成结构化查询语言SQL的过程属于自然语言处理-语义分析Semantic Parsing领域中的子任务。
它的目的可以简单概括为“打破人与结构化数据之间的壁垒”即普通用户可以通过自然语言描述完成复杂数据库的查询工作得到想要的结果。
二、背景应用
目前大家对T2S的做法大致分为两种
一种是用现有的大模型来直接生成例如ChatGPT、GPT-4模型但是对于一些公司来说数据是属于保密资产这种方式相当于将自己公司的数据信息透漏给大模型属于数据泄露行为另一种方式是利用开源的大模型做finetune比如chatglm2-6b来做微调这个也是目前我们在做的同时开源的数据集也有很多简单罗列如下
数据集数据集介绍WikiSQLWikiSQL是一个大型的语义解析数据集由80,654个自然语句表述和24,241张表格的sql标注构成。 WikiSQL中每一个问句的查询范围仅限于同一张表不包含排序、分组、子查询等复杂操作。 虽然数据规模大SQL语法却非常简单适合做NL2SQL任务入门。Spider耶鲁大学在2018年新提出的一个大规模的NL2SQLText-to-SQL数据集。 该数据集包含了10,181条自然语言问句、分布在200个独立数据库中的5,693条SQL内容覆盖了138个不同的领域。 涉及的SQL语法最全面是目前难度最大的NL2SQL数据集。CspiderCSpider是Spider的中文版西湖大学出品。Sparc耶鲁大学在2019年提出的基于对话的Text-to-SQL数据集。 SParC是一个跨域上下文语义分析的数据集是Spider任务的上下文交互版本。SParC由4298个对话12k个单独的问题每个对话平均4-5个子问题由14个耶鲁学生标注组成这些问题通过用户与138个领域的200个复杂数据库进行交互获得。CHASE微软亚研院和北航、西安交大联合提出的首个大规模上下文依赖的Text-to-SQL中文数据集。 内容分为CHASE-C和CHASE-T两部分CHASE-C从头标注实现CHASE-T将Sparc从英文翻译为中 相比以往数据集CHASE大幅增加了hard类型的数据规模减少了上下文独立样本的数据量弥补了Text2SQL多轮交互任务中文数据集的空白。
三、Text2SQL使用
我们在Text2SQL上面的应用主要包括两个阶段第一阶段是利用LLM理解你的请求通过请求去生成结构化的SQL下一个阶段是在生成的SQL上自动化的查询数据库返回结果然后利用LLM对结果生成总结提供分析。
3.1 第一阶段
利用LLM理解文本信息生成SQL目前通过spider数据集来评测GPT家族还是笑傲群雄。但是这里我们如果只借助GPT来做的话就会出现之前说的数据隐私问题。 这里我们通过两部分来提升LLM对文本的理解生成更符合我们要求的结果。
1. 构建数据信息表的schema利用LLM生成embedding
由于我们从离线评测效果来看开源模型chatglm2-6b直接生成的SQL和GPT对比还是有比较大的差距所以无法直接使用。这里我们根据用户描述的text让预训练的chatglm2-6b生成embedding通过embedding检索的方式选出top1数据表这个过程属于先验过滤阶段。
数据表的schema设计非常重要需要描述清楚这个表它的主体信息以及表中重要字段和字段含义。
例 数据表的embedding可以提前计算保存这样利用后期检索效率。
2. prompt构建生成SQL
这部分我认为最重要的还是如何去合理构建prompt让LLM去理解你的真实意图生成标准的SQL。
一是prompt的开头需要定义构建二是prompt整体结构以及结构中数据表的信息也需要涵盖进去这里我们prompt的开头首先定义LLM的工作目的是生成SQL通过我们根据第一部分返回的top1数据表解析数据表中的信息加入到prompt中以此来构建完成的prompt。
1开头prompt定义 2数据表prompt定义 3In-context-prompt如果想强化prompt可以增加一些正样本“问答”式的结构让LLM去学习理解最终生成更理想的结果 prompt的构建对最终结果的影响非常重要构建一个完美的prompt可能已经成功了一半。
通过以上的prompt构建我们就可以给LLM让模型生成最终的SQL结果。 3.2 第二阶段
其实很多场景上一阶段生成SQL就已经达到我们想要的结果但这里我们还想进一步根据SQL生成最终的数据所以需要连接数据库SQL运行返回结果。这里我们通过连接集团CK数据库以接口的形式进行部署我们在运行SQL的时候其实就是调用接口这样方便简洁对接口返回的结果进行结构化的输出就可以。
通过接口访问结构化输出 四、结果
以上就是目前我们根据LLM来生成SQL同时让SQL自动运行产生结果。前期我们利用GPT模型去跑通整个pipeline同时生成一些训练数据集来提供chatglm2-6b微调后期我们还会对产出的结果进行数据分析这个阶段也是利用LLM来完成通过这种方式给用户一些指导性的意见或总结。
以下是整个pipeline的流程 作者京东零售 郑少强 来源京东云开发者社区 转载请注明来源