QPL:一种新型的Text-to-SQL任务中间表示形式

news2025/2/4 20:42:24

导语

本文提出了一种叫做Query Plan Language (QPL)的语言,用来将复杂SQL语句分解为更加简单的子语句。QPL具有以下优势:1)可以转述为简单问题,从而创建了一个 < 复杂问题,分解问题 > <复杂问题,分解问题> <复杂问题,分解问题> 的数据集。在这个数据集上训练,获得了一个敏感于数据库模式的数据检索问题分解器。2)QPL对于非专家处理复杂查询更易于接近,使语义解析器的输出更易于理解。

  • 标题:Semantic Decomposition of Question and SQL for Text-to-SQL Parsing
  • 会议:EMNLP 2023 Findings
  • 链接:https://aclanthology.org/2023.findings-emnlp.910/

1 引言

本文针对现有跨领域文本到SQL(Text-to-SQL)模型在处理复杂数据库和查询时面临的挑战进行研究。当前模型在简单查询上的表现优异,准确率超过90%,但在复杂查询上的准确率却降至约50%。这对非专业人士来说尤其棘手,因为他们往往难以判断复杂的SQL查询是否真正反映了他们的查询意图。研究者通过用户研究发现,约66%的非SQL专业的软件工程师难以判断复杂的SQL查询是否与其问题相符。

为了解决这一问题,本文采用了一种新颖的组合方法。借鉴于多跳问答中成功的问题分解(Question Decomposition, QD)策略,本研究也探讨了如何通过QD策略处理复杂的SQL查询。本文引入了一种名为Query Plan Language(QPL)的新型中间语言,该语言具有模块化和可分解的特点,能够直接通过转化为SQL的公共表表达式(CTEs)在SQL数据库上执行。与一般的QD方法不同,本文的方法考虑到了问题所涉及的数据库架构和QPL操作的语义。

此外,研究者发现,目标编程语言的选择对模型学习文本解析成准确的语义表示的能力有显著影响。例如,一些研究表明,与其他语言相比,生成SQL的难度较大。因此,本文提出的QPL可以视为一种新的候选中间语言,与以往不同的是,它基于对SQL的语义转换而非语法分析,形成了一种更简单、更规则的查询语言。

image.png

image.png

文本主要关注以下两个研究问题:

  • (RQ1)学习文本到QPL是否比学习文本到SQL更容易;
  • (RQ2)非专家用户是否比复杂SQL查询更容易解释QPL输出。

本文的贡献如下:

  1. 定义了QPL语言及其从SQL到QPL的自动转换方法,并实现了QPL在标准SQL服务器上的执行;
  2. 构建了Spider-QPL数据集,丰富了Spider样本,并为其提供了基于QPL结构的问题分解;
  3. 开发了文本到QPL的模型,其性能与最新的文本到SQL模型相媲美,并在处理复杂查询时表现更佳;
  4. 通过用户实验验证,发现非专家用户在QPL上比在SQL上更容易识别不正确的复杂查询。

2 以前的工作

3 查询分解为QPL

3.1 查询计划语言(QPL)数据集转换

QPL设计为一种模块化数据流语言,旨在编码SQL查询的语义。它基于SQL优化器内部使用的执行计划定义。通过自动化转换,Spider数据集的原始SQL查询被转换为包含QPL表达式的版本。QPL是执行计划的分层表示,其中叶子节点是表读取节点(Scan节点),内部节点则是一元或二元操作。每个QPL子计划都是独立的可执行操作符,返回数据元组流。例如,图1中的执行计划展示了一个包含四个步骤、深度为2的计划。通过利用Microsoft SQL Server 2019查询优化器,将SQL查询转换为语义等效的QPL计划。QPL语法中的操作符数量限制为9种,并设计为上下文无关,即所有操作符均接收并输出元组流。

image.png

3.2 Text-to-QPL模型

在实验中探索了不同的QPL表达式语法,并选择了步骤编号和自下而上顺序的版本。验证了转换后的QPL计划与原始Spider SQL查询的结果集相等效。使用Flan-T5-XL模型(3B参数)进行微调,每个样本包含问题、schema信息和gold QPL。输入格式与Shaw等人(2021)相同。利用PICARD解码器和专为QPL语法开发的解析器进行最终评估,确保生成的QPL程序语法正确。

4 问题分解

4.1 QPL到QD

  • 方法介绍:使用OpenAI gpt-3.5-turbo-0301模型根据QPL计划生成问题分解(QD)。准备了包含QPL语言语法描述和涵盖所有QPL操作的示例的少次示例提示。
  • 验证与评分:手动验证了50对(QPL, QD)的生成结果,发现它们可靠、多样且流畅。此外,设计了自动度量方法来验证生成的QDs与源QPL计划的对齐程度。

4.2 数据集准备

  • 数据集丰富:使用QPL到QD生成器,进一步丰富Spider-QPL数据集,为每个样本添加计算得到的QD字段。同时计算了问题的QDMR分解,为每个示例获取元组:<schema, 问题, SQL, QPL, QD, QDMR>。
  • 有效QD数量:在Spider开发集和训练集中获得了大量有效QD。

4.3 问题分解器模型

针对<Q, QD>数据集训练QPL问题分解器,该模型学习根据问题和架构描述预测QD。使用Flan-T5-XL模型进行微调。

4.4 Q+QD到QPL预测

在与前述模型相同的条件下,训练Flan-T5-XL模型,对给定问题分解器计算出的QD的<Q, QD, QPL>进行QPL预测。

5 实验与结果

5.1 文本到QPL预测

在Spider开发集上的实验结果显示,与使用相同基础模型Flan-T5-XL训练的T5-3B模型相比,<Q → QPL>模型在每个难度级别上都有所改进。此外,模型在Hard和Extra-Hard查询中达到了现有微调和LLM模型中最高的执行准确度(带数据库内容为70.0%)。与其他模型相比,模型在所有难度级别上(除了“简单”级别的简单架构编码)均表现更好。这表明学习QPL作为目标语言比学习SQL更容易(RQ1)。直接的<Q → QPL>模型在不使用数据库内容的情况下实现了77.4%的准确度,使用数据库内容时达到了83.8%。

image.png

5.2 可解释性用户实验

为了测试非专家SQL用户是否能更容易理解QPL,进行了一个用户实验。实验选择了22个Hard和Extra-Hard难度的查询样本,并收集了这些查询的预测SQL和QPL,包括正确和错误的案例。四名有五年以上经验的软件工程师参与实验,他们被要求判断每个案例中的查询是否与问题的意图相符。实验结果表明,参与者在QPL案例中的正确率为67%,而在SQL案例中为34%,支持了使用QPL比使用SQL更容易验证问题和查询之间的对应关系的假设(p < 0.06)。

image.png

6 误差分析

误差分析表明,涉及聚合操作的查询是最具挑战性的错误类型。表5展示了富架构编码下<Q → QPL>模型的错误类型分布。研究假设通过利用更详细的架构结构描述并应用对生成的QPL的后处理批评或在QPL Picard解析器中强制执行更严格的约束,可以减少与Join操作相关的错误。
Spider开发集包括20个不同的数据库。表9展示了按数据库的错误分布。发现5个数据库占据了超过70%的错误。这些数据库不遵循数据建模的最佳实践:未声明关键字,列命名不一致,某些列中的值编码非标准(例如,使用’T’/'F’表示布尔值)。

7 结论

本文提出了一种基于QPL的方法来提高复杂文本到SQL模型的组合学习。QPL是一种新的可执行和模块化的中间语言,通过对SQL的语义转换而来。通过软件工具实现了SQL查询到QPL的自动转换,并通过将QPL计划转换为CTE SQL语句执行QPL计划。编制了Spider-QPL版本,包括所有示例的QPL和问题分解。实验表明,使用微调LLM学习QPL比学习SQL更容易;对于复杂查询,用户更容易解释QPL而不是SQL。基于计算的QPL,本文派生出了一种新的问题分解形式,并训练了一个对目标数据库架构敏感的问题分解器。给定一个预测的QPL计划,可以派生出一个可读的QD,增加了预测计划的可解释性。未来,计划进一步利用QPL的模块化进行数据增强,并探索多步推理技术。错误分析指出,增强模型以进一步利用数据库值和外键的优势有潜力增加这种多步方法的鲁棒性。作者还在探索用户是否可以通过对预测QD的交互式反馈来指导QPL预测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1427150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Debian11安装Proxmox VE 7及设置GPU工作环境

我们在测试大模型&#xff0c;深度学习的过程中&#xff0c;可能遇到的情况就是不断的清空系统&#xff0c;避免老系统中安装的软件对测试系统造成影响&#xff0c;导致测试结果不准确或莫名报错。今天为小伙伴们介绍使用PVE7做成一个人工智能开发和测试的平台&#xff0c;你可…

【安装记录】Chrono Engine安装记录

本文仅用于个人安装记录。 官方安装教程 https://api.projectchrono.org/8.0.0/tutorial_install_chrono.html Windows下安装 windows下安装就按照教程好了。采用cmake-gui进行配置&#xff0c;建议首次安装只安装核心模块。然后依此configure下irrlicht&#xff0c;sensor…

maven代码规范检查(checkstyle、findbugs)

maven代码规范检查 前言一、使用checkstyle插件1. maven-checkstyle-plugin 介绍2. 接入方式3. 如何排除某个类、包下面的文件不进行检查使用suppressionsLocation 4. 如何关闭 二、使用findbugs插件1.findbugs-maven-plugin介绍2. 接入方式3. 如何排除某个类、包下面的文件不进…

ENSP路由器打不开,查看virtualBox,故障机是 AR_Base

AR_Base错误代码为&#xff1a;Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT). 参考virtualBox解决不能为虚拟电脑 AR_Base 打开一个新任务. Raw-mode is unavailable courtesy of Hyper-V. win11亲测有用。_不能为虚拟电脑ar_base打…

day37WEB攻防-通用漏洞XSS跨站权限维持钓鱼捆绑浏览器漏洞

目录 XSS-后台植入 Cookie&表单劫持&#xff08;权限维持&#xff09; 案例演示 XSS-Flash 钓鱼配合 MSF 捆绑上线 1、生成后门 2、下载官方文件-保证安装正常 3、压缩捆绑文件-解压提取运行 4、MSF 配置监听状态 5、诱使受害者访问 URL-语言要适当 XSS-浏览器网马…

Redis核心技术与实战【学习笔记】 - 6.Redis 的统计操作处理

1.前言 在 Web 业务场景中&#xff0c;我们经常保存这样一种信息&#xff1a;一个 key 对应了一个数据集合。比如&#xff1a; 手机 APP 中的每天用户登录信息&#xff1a;一天对应一系列用户 ID。电商网站上商品的用户评论列表&#xff1a;一个商品对应了一些列的评论。用户…

PyTorch识别验证码

## 一、生成测试集数据pip install captcha common.py import random import time captcha_array list("0123456789abcdefghijklmnopqrstuvwxyz") captcha_size 4from captcha.image import ImageCaptchaif __name__ __main__:for i in range(10):image ImageC…

分布式事务(四)——TCC补偿模式解决方案

系列目录&#xff1a; 《分布式事务&#xff08;一&#xff09;—— 事务的基本概念》 《分布式事务&#xff08;二&#xff09;—— CAP和Base理论》 《分布式事务&#xff08;三&#xff09;—— 两阶段提交解决方案&#xff08;2PC&#xff09;》 一、常见分布式事务解决…

某航空网站promise异步定位js逆向解析

本次目标地址如下&#xff0c;使用base64解码获得 aHR0cHM6Ly9pbnQtZXQueGlhbWVuYWlyLmNvbS9mbGlnaHRzL3Jlc3VsdHM 打开网址&#xff0c;抓包分析后&#xff0c;发现响应结果在该请求中&#xff1a; 我们跟栈进去查找&#xff0c;从右边的堆栈调用过程中发现&#xff0c;这是典…

App ICP备案获取iOS和Android的公钥和证书指纹

依照《工业和信息化部关于开展移动互联网应用程序备案工作的通知》&#xff0c;向iOS和安卓平台提交App时需要先提交ICP备案信息。 iOS平台&#xff1a; 1、下载appuploader工具&#xff1a;Appuploader home -- A tool improve ios develop efficiency such as submit ipa to…

Docker 集群配置

1、配置 MySQL MySQL 简单安装 docker安装完MySQL并run出容器后&#xff0c;建议请先修改完字符集编码后再新建mysql库-表-插数据 docker run -d -p 2222:3306 --privilegedtrue -e MYSQL_ROOT_PASSWORD123456 \ -v /opt/mysql/log:/var/log/mysql \ -v /opt/mysql/data:/va…

通过18次止损,我终于领悟到交易的真谛

截断亏损让利润奔跑&#xff0c;这是操作的基础&#xff0c;也是操作的大体思路。了解并接受这个市场认识&#xff0c;基本上就把握住了市场的门道。至于市场走势&#xff0c;是无法准确预测的。 在交易的第一年&#xff0c;我处于一种懵懂的状态&#xff0c;对市场知之甚少。第…

2024美赛数学建模A题思路分析 - 资源可用性和性别比例

# 1 赛题 问题A&#xff1a;资源可用性和性别比例 虽然一些动物物种存在于通常的雄性或雌性性别之外&#xff0c;但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1&#xff1a;1&#xff0c;但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。…

【以太网】VSC8512XJG-03、VSC8512XJG-02、VSC8514XMK-14、VSC8514XMK-11千兆以太网(GE)PHY

一、VSC8512 12 Port GbE Cu PHY with 4 Dual Media ports[12端口GBE Cu PHY&#xff0c;带4个双介质端口] 概述 VSC8512采用单一封装的12端口千兆以太网&#xff08;GE&#xff09;铜线PHY解决方案。VSC8512采用了Microchip最新的65纳米Simpliphy™技术&#xff0c;是业界最具…

猫什么时候发腮?猫咪发腮指南!这些生骨肉冻干发腮效果好

猫什么时候发腮是许多猫主人非常关心的问题。在猫咪的成长过程中&#xff0c;发腮是一项重要的体征&#xff0c;也是猫咪成熟的标志。主人需要在适龄的年龄段加强营养补给&#xff0c;可以让让猫咪拥有可爱的肉嘟嘟脸型&#xff0c;不要错失最佳发腮期。那么&#xff0c;什么时…

第八篇:node模版引擎Handlebars及他的高级用法(动态参数)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; 引言&#xff1a; &#x1f…

OpenCV学习记录——边缘检测

文章目录 前言一、边缘检测原理二、Canny边缘检测算法三、具体应用代码 前言 在做某些图像处理时&#xff0c;通常需要将识别到的物体边界提取出来&#xff0c;从而帮助我们实现目标检测&#xff0c;这就需要用到边缘检测&#xff0c;例如人脸识别和运动目标的检测都需要先进行…

Flutter 应用服务:主题、暗黑、国际化、本地化 - app_service库

Flutter应用服务 主题、暗黑、国际化、本地化 app_service库 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/det…

Nginx 多项目部署,vue刷新404 解决方案

网上找的资料大多都解决不了&#xff0c;废话不多说直接告诉你解决方法。 环境是 TP6 VUE前端官网 VUE 后台管理 部署 两个项目 刷新 404 解决方案 Nginx 配置 直接贴图 如果解决了&#xff0c;给我顶起来&#xff0c;让更多人 快速的解决。

Arduino 推出基于乐鑫 ESP32-S3 的 STEM 教育机器人

Arduino Alvik 是 Arduino Education 推出的一款新型机器人&#xff0c;可作为一种跨学科工具&#xff0c;为当前教育和未来机器人世界筑起连接的桥梁。Hackster 的 Gareth Halfacree 表示&#xff1a;“Alvik 的设计灵感来自 Arduino 简化复杂技术的理念&#xff0c;同时它也 …