当前位置:   article > 正文

Text2SQL技术关键点总结_text-to-sql

text-to-sql

一、什么是Text2SQL技术

Text-to-SQL(或者Text2SQL),顾名思义就是把文本转化为SQL语言,更学术一点的定义是:把数据库领域下的自然语言(Natural Language,NL)问题,转化为在关系型数据库中可以执行的结构化询语言(Structured Query Language,SQL),因此Text-to-SQL也可以被简写为NL2SQL。

二、当前的痛点

常见的BI报表系统,如果想看没有的报表,就得提个需求给开发,但开发人员精力有限,往往只能满足领导需求,只能从现有平台拖一些数据出来,然后使用自己强大的Excel技能,每天花费2小时来做表格,假如有个对话式智能BI工具,就像你发任务给开发工程师,那么将为企业将本增效。FineChatBI上已经集成了对话式BI技术。

三、Text2SQL的实现方法

3.1 基于prompt template的方法

Prompt基本上就是几个部分组成:

  • 指令(Instruction):比如,“你是一个SQL生成专家。请参考如下的表格结构,直接输出SQL语句,不要多余的解释。”

  • 数据结构(Table Schema):类似于语言翻译中的“词汇表”。即需要使用的数据库表结构,由于大模型无法直接访问数据库,需要把数据的结构组装进入Prompt,通常包括表名、列名、列的类型、列的含义、主外键信息。

  • 用户问题(Questions):自然语言表达的问题,比如,“统计上个月的平均订单额”。

  • 参考样例(Few-shot):这是一个可选项,当然也是提示工程的常见技巧。即指导大模型生成本次SQL的参考样例。

  • 其他提示(Tips):其他认为有必要的指示。比如要求生成的SQL中不允许出现的表达式,或者要求列名必须用“table.column"的形式等。

3.2 基于SQLDatabaseChain的方法

LangChain提供基于LLM的SQLDatabaseChain,可以利用LLM的能力将自然语言表述的query转化为SQL,连接DB进行查询,并利用LLM组装润色结果,返回最终answer。

3.3 基于Agent的方法

LangChain的SQL Agent提供一种比Chain更灵活的与SQL数据库交互的方式。使用SQL Agent主要有以下优点:

  • 可以根据Database Schema和数据库的内容(如描述特定的表)回答问题

  • 可以通过运行生成的查询、捕获回溯信息并正确地重新生成,以此来纠错

  • 可以根据需要多次查询数据库以回答用户问题

  • 仅检索相关表格的schema节省token

四、Text2SQL的评估

主要有两个指标,分别是执行准确率(Execution Accuracy,EX)与逻辑形式准确率(Exact Match,EM)

(1) EX:是指计算SQL执行结果正确的数量在数据集中的比例。

(2) EM:计算模型生成的SQL和标准的SQL匹配程度。

五、主流的模型

  • codeLlama-13b

  • SQLCoder-34b

六,主流的Text2SQL数据集

WikiSQL

2017年开源的一个大型文本到SQL数据集WikiSQL,数据来自维基百科,属于一个单一的领域,包含80654个自然语言问题和77840个SQL语句。SQL语句的形式相对简单,不包括排序、分组、子查询和其他复杂操作。

Spider

2018年由耶鲁大学提出了具有多个数据库、多个表和单轮查询的文本到SQL数据集Spider。它也被公认为行业内最难的大规模跨领域评估列表。它包含10181个自然语言问题和5693个SQL语句。涉及138个不同领域的200多个数据库,难度等级分为:容易、中等、困难和极其困难。

  AI科技智库 本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】

推荐阅读
相关标签