写点什么

LLM 在 text2sql 上的应用 | 京东云技术团队

  • 2023-10-25
    北京
  • 本文字数:1519 字

    阅读完需:约 5 分钟

LLM在text2sql上的应用 | 京东云技术团队

一、前言:

目前,大模型的一个热门应用方向 text2sql 它可以帮助用户快速生成想要查询的 SQL 语句。那对于用户来说,大部分简单的 sql 都是正确的,但对于一些复杂逻辑来说,需要用户在产出 SQL 的基础上进行简单修改,Text2SQL 应用主要还是帮助用户去解决开发时间,减少开发成本。


Text to SQL: 简称 Text2SQl,是将自然语言文本(Text)转换成结构化查询语言 SQL 的过程,属于自然语言处理-语义分析(Semantic Parsing)领域中的子任务。


它的目的可以简单概括为:“打破人与结构化数据之间的壁垒”,即普通用户可以通过自然语言描述完成复杂数据库的查询工作,得到想要的结果。

二、背景应用:

目前大家对 T2S 的做法大致分为两种,


  • 一种是用现有的大模型来直接生成,例如 ChatGPT、GPT-4 模型,但是对于一些公司来说,数据是属于保密资产,这种方式相当于将自己公司的数据信息透漏给大模型,属于数据泄露行为;

  • 另一种方式是利用开源的大模型做 finetune,比如 chatglm2-6b 来做微调,这个也是目前我们在做的,同时开源的数据集也有很多,简单罗列如下:



三、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 定义:



3)In-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 的流程:



作者:京东零售 郑少强

来源:京东云开发者社区 转载请注明来源

发布于: 刚刚阅读数: 5
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
LLM在text2sql上的应用 | 京东云技术团队_人工智能_京东科技开发者_InfoQ写作社区