复旦大学METASQL首创NL2SQL候选排序方法
METASQL通过“生成+排序”统一框架提升自然语言转SQL准确率,引入查询元数据约束生成过程,并采用两阶段排序从候选SQL中选出最优解。实验表明,该方法在SPIDER等基准上显著提升现有模型性能,尤其对中等难度查询效果明显,但元数据质量对结果影响较大。
在自然语言转SQL(NL2SQL)这个方向上,业界一直在追求更高的准确率。尽管现有的序列到序列模型和大型语言模型已经能做到70%以上的准确率,但一个问题始终存在:怎么确保生成的SQL是真正可用的,而不仅仅是看起来合理?

METASQL 提供了一种新思路:干脆别只生成一个答案,先生成一批候选,然后再从中选出最好的。这个“生成 + 排序”的统一框架,可以与现有的NL2SQL系统结合,进一步提升翻译的准确性。其核心在于引入了两个关键设计:查询元数据和排序算法。简单来说,就是先通过元数据给生成过程加上“约束条件”,再用两阶段排序从候选SQL里挑出最优解。
01.
引言
在这个数据驱动的时代,数据库无处不在,但SQL的门槛确实存在。自然语言到数据库接口(NLIDB)技术的目标,就是让没有技术背景的用户也能轻松查询数据。过去这些年,研究者们尝试了不少方法,主流路径有两个:神经序列到序列模型(Seq2seq)和大型语言模型(LLMs)。它们大多采用自回归解码的方式,逐个标记地生成SQL查询。
虽然成绩看着唬人——比如在SPIDER这个基准测试上,最先进的模型在语法等价翻译上的准确率已经达到74%——但问题也很明显。首先是输出多样性不足。自回归解码在生成候选序列时,往往缺乏变化,容易产生重复的结果。比如LGESQL模型在使用束搜索时,生成的top-K候选结果相似度很高,经常导致错误的翻译。其次是缺乏全局上下文感知能力。因为是一个标记一个标记地生成,模型只依赖部分上下文,很容易陷入局部最优,找不到正确的翻译。
业界也做过一些改进尝试。比如多任务生成框架在对话翻译场景下取得了一些成果,但最终仍然依赖标准的自回归解码来获取结果,这并不是最优解。还有研究提出了新的生成方法,但需要基于一组代表性样本的查询假设。正是在这个背景下,METASQL 框架出现了——它的目标是通过引入控制信号,增强NL2SQL翻译中的自回归解码过程,提升SQL生成的质量。
02.
METASQL 框架概述
| 1. 预备知识
1.1 自回归解码
这是一种模型逐个生成输出序列元素的解码策略,每个元素的生成都依赖于之前已经生成的部分。在自回归模型中,解码的核心是学习一个评分模型,基于从左到右的分解方式,在给定输入序列A时找到高分输出序列P。但传统的单向解码算法,比如贪婪搜索和束搜索,在生成高质量输出序列方面效果并不理想——解码历史中的错误,会直接影响到后续结果。
1.2 NL2SQL 模型
主要分为两类。Seq2seq模型遵循特定的学习框架,先对自然语言查询和数据库模式进行联合编码,再通过自回归解码器生成SQL程序的分布。解码器的学习目标可以是原始SQL标记、SQL语言的中间表示或SQL抽象语法树。而基于LLM的模型,在给定自然语言查询和提示的情况下,会自动回归生成相应的SQL查询。提示技术包括零样本、少样本或上下文学习,提示内容可以是文本指令、翻译示例或推理链。
| 2. METASQL 主要流程
2.1 语义分解
如图2的第一步所示,这里把自然语言查询的语义解析重新定义为一个分类问题。通过多标签分类器,将自然语言语义映射到一组相关的查询元数据。这些元数据本质上就是与底层数据库相关的类别标签,能够捕捉自然语言查询的上下文信息。举个例子,对于“查询不说英语的国家代码”这样的查询,系统可能会选择“project”和“except”作为操作符标签,再加上表示查询难度的“400”作为元数据。
2.2 元数据条件生成(可选)
如图2的第二部分,对于Seq2seq模型,通过在训练数据中添加元数据作为前缀语言提示来增强模型。训练数据由自然语言查询、对应的SQL查询和相关元数据组成,收集方式基于弱监督原则。操作符标签类型的元数据直接从SQL查询中获取;硬度值类型的元数据根据SPIDER基准的定义计算;正确性指示符类型的元数据则根据数据来源确定。在推理阶段,利用多标签分类器获取查询元数据,再基于这些元数据组合,操纵翻译模型生成一组候选SQL查询。
SELECT countrycode FROM CountryLanguage WHERE language!='English'
2.3 两阶段排序管道
如图2的第三部分,采用两阶段排序流程来确定最佳翻译结果。第一阶段使用双塔架构构建粗粒度排序模型,通过两个类似BERT的双向文本编码器和余弦相似度函数,快速从大量候选SQL中筛选出较小的潜在候选集。训练数据由自然语言查询、SQL查询和语义相似度分数组成,分数通过比较SQL查询与“黄金”SQL查询的条款差异来计算。第二阶段则使用多粒度监督信号构建细粒度排序模型,对第一阶段的结果做进一步排序。该模型包含上下两个编码器,用于捕获多粒度语义,通过全局、局部和短语损失等多种损失函数计算匹配分数,在推理时综合考虑各分数进行排序。
SELECT countrycode FROM CountryLanguage EXCEPT SELECT countrycode FROM CountryLanguage WHERE language='English'
03.
METASQL 方法详述
| 1. 查询元数据
1.1 元数据设计
METASQL 设计了三种类型的元数据:操作符标签、硬度值和正确性指示符。操作符标签对应单个逻辑运算符,指示SQL组件用于翻译。比如对于特定查询,“project”标签表示选择操作,“except”标签表示排除操作。硬度值根据SQL组件的数量和类型量化查询的潜在复杂性,通过为每个SQL组件分配难度分数并求和得到。正确性指示符用来区分正确和错误的查询——推理时通常为真,但在训练时可以通过变化来帮助模型学习。
1.2 基于元数据的语义分解
自然语言到元数据的映射被定义为分类问题,通过多标签分类模型来实现。这个模型与底层的NL2SQL翻译模型共享编码器,只是把解码器替换为分类层,输出标量值。推理阶段,设置分类阈值来选择概率较高的元数据标签,从而将自然语言查询的语义分解为对应的元数据。这有助于发现更多语义等价的SQL查询。
| 2. 元数据条件生成
2.1 训练
在模型训练中,查询元数据作为前缀添加到自然语言查询中,遵循传统的seq2seq范式。收集训练数据时,确保每个样本都包含自然语言查询、对应的SQL查询和相关元数据。为了让模型更好地区分正确和错误的目标序列,还收集了SPIDER基准训练集中现有翻译模型的错误翻译作为负样本,并为这些负样本分配“incorrect”的正确性指示符作为元数据。模型输入时,元数据被扁平化为序列并与自然语言查询连接,例如:“correct | rating : 400 | tags : project, except”。
2.2 条件生成
推理阶段,由于查询元数据未知,首先用多标签分类模型获取初始元数据标签。然后,考虑训练数据中的组合情况,选择性地组合这些标签,基于元数据条件生成一组候选SQL查询。这有点像LLM中的提示方法——通过不同的元数据条件引导模型生成多样化的翻译结果。
| 3. 两阶段排序管道
3.1 第一阶段排序模型
采用双塔架构,包括NL查询编码器和SQL编码器,外加余弦相似度函数。通过在大量自然语言查询和SQL查询对上进行训练,学习如何快速筛选出与给定自然语言查询语义相关的候选SQL。训练数据中的语义相似度分数根据SQL查询与“黄金”SQL查询的匹配程度计算——完全匹配则为1,否则根据条款差异扣分。
3.2 第二阶段排序模型
考虑到第一阶段模型在精确排序上的局限性,这一阶段的目标是利用多粒度监督信号,更准确地找到最佳SQL查询。模型架构包括粗粒度和细粒度编码器,通过引入额外的短语级语义信息,并采用列表式方法进行训练。训练过程中使用多种损失函数——全局损失衡量句子级别的跨模态匹配相似性,局部损失增强细粒度的跨模态匹配,短语三元组损失则用于最大化正对内的细粒度相似性并最小化负对内的相似性。推理时,综合考虑各部分得分对候选SQL进行最终排序。
04.
实验评估
| 1. 实验设置
1.1 基准测试
实验在SPIDER和SCIENCEBENCHMARK这两个具有挑战性的NLIDB基准上完成。SPIDER是一个大规模跨域基准,包含大量自然语言查询和SQL查询以及多个数据库,数据根据SQL难度分类。由于SPIDER测试集难以获取,实验主要关注验证集,通过提交给作者获取测试集结果。SCIENCEBENCHMARK则针对三个真实世界的科学数据库,包含领域专家制作的高质量NL-SQL对以及合成数据。
1.2 训练设置
多标签分类模型基于LGESQL模型实现,只是将顶层替换为分类层。第一阶段排序模型的嵌入层使用预训练的STSB-MPNET-BASE-v2模型初始化,采用Adam优化器训练。第二阶段排序模型基于ROBERTA-LARGE,同样使用Adam优化器,并根据学习停滞情况调整学习率,同时配置相关参数以生成合适数量的SQL查询用于训练。
1.3 推理设置
多标签分类模型的分类阈值设置为0,以选择所有可能的元数据标签。第一阶段排序模型选择排名前十的候选SQL查询子集,传递给第二阶段排序模型进行最终推理。
1.4 评估指标
采用翻译准确率(EM)、执行匹配(EX)、翻译精度(Precision@K)和平均倒数排名(MRR)等指标。翻译准确率判断生成的top-1 SQL查询是否与“黄金”SQL匹配;执行准确率通过在数据库上执行SQL查询并与真实结果比较;翻译精度评估前K个翻译结果中包含“黄金”SQL查询的自然语言查询数量占比;MRR则衡量模型将“黄金”SQL查询排在前列的能力。
| 2. 实验结果
2.1 整体性能
在两个基准测试上,METASQL 均能有效提升所有模型的性能。对于Seq2seq模型,在SCIENCEBENCHMARK上的提升更为显著。特别是LGESQL模型,在应用METASQL后,在SCIENCEBENCHMARK的SDSS数据库上提升了8.0%,在SPIDER验证集和测试集上分别达到77.4%和72.3%的翻译准确率,执行准确率也有大幅提高。对于基于LLM的模型(如ChatGPT和GPT-4),METASQL同样显著提升了性能——这得益于LLM强大的生成能力以及METASQL对其生成的引导作用。
2.2 不同难度和语句类型的性能分析
按SQL难度级别分析,随着难度增加,所有模型性能下降,但METASQL能在“Medium”和“Hard”查询上显著提升性能,不过在“Easy”和“Extra Hard”查询上可能出现不稳定。对于“Easy”查询,可能是因为METASQL对语义等价查询的排序导致了评估失败;对于“Extra Hard”查询,复杂查询中多粒度信号不准确可能导致排名错误。按SQL语句类型分析,METASQL对涉及ORDER BY和GROUP BY子句的查询翻译提升明显,这得益于排序过程;但对于嵌套类型的复杂查询,Seq2seq模型加上METASQL后可能会出现性能下降。
2.3 排序管道性能
METASQL在排序方面表现出色。例如,RESDSQLLARGE + METASQL的翻译MRR达到78.8%,LGESQL + METASQL在top-5检索结果中也有较高的翻译精度。这说明METASQL在多数情况下能够正确选择目标SQL查询,优于传统的自回归解码技术。
2.4 阶段性能分析
对METASQL各阶段性能分析发现,三个阶段——元数据选择、元数据条件生成、排序——整体性能较为稳定。其中,元数据条件生成阶段相对波动较大,这与底层翻译模型的局限性有关。但总体而言,METASQL有效优化了各阶段性能,促进了整体性能的提升。
| 3. 元数据敏感性分析
3.1 元数据选择率
通过降低多标签分类器的分类阈值,引入更多“噪声”元数据,结果发现METASQL的性能对元数据质量有很强的依赖性。当阈值低于-10时,性能显著下降——过多的“噪声”元数据干扰了模型的判断。
3.2 正确性指示符
实验表明,METASQL对正确性指示符的变化较为敏感。提供错误的指示符会导致性能下降,而且比不提供指示符的情况更差。正确的元数据对模型性能至关重要。
3.3 硬度值
METASQL的性能对硬度值变化相对稳定。这是因为多标签分类器获取的硬度值通常与真实值接近,而且模型会综合考虑多种元数据。同时,设置较容易的硬度值往往比困难的硬度值能带来更好的结果。
3.4 操作符标签
METASQL对操作符标签类型的元数据较为敏感。使用正确的操作符标签能显著提高性能,因为它为模型提供了有效的生成约束,减少了搜索空间。
| 4. 消融研究
通过在SPIDER验证集上对LGESQL进行消融实验,发现去除多标签分类器或第二阶段排序模型会导致性能大幅下降。这表明多标签分类器在获取相关元数据方面,以及第二阶段排序模型在精确排序方面,都起着关键作用——METASQL各组件的价值再次得到验证。
| 5. 分析 METASQL
对METASQL的翻译错误进行分析,主要存在三类问题。一是自回归解码问题:即使有准确的元数据,底层翻译模型在处理复杂查询时仍可能出错——比如在嵌套查询中生成错误的连接路径。二是元数据不匹配问题:多标签分类器提取的不准确元数据会导致翻译错误,因此需要更可靠的元数据选择方法。三是排序问题:在第二阶段排序中,即使“黄金”查询在候选集中,也可能无法排在首位——尤其是涉及连接操作的查询,这需要在排序模型训练中更好地捕获数据库的特定语义。
1.1 自回归解码问题
# 自然语言查询: 每个没有把猫作为宠物的学生是什么专业?
# 以及他们的年龄是多少?
# 黄金 SQL 查询:
SELECT major, age FROM student
WHERE stuid NOT IN (
SELECT T1.stuid FROM student AS T1
JOIN has pet AS T2 JOIN pets AS T3
WHERE T3.pettype = 'cat')
# 不正确的生成 SQL 查询:
SELECT major, age FROM student
WHERE stuid NOT IN (
SELECT has pet.stuid FROM has pet JOIN pets
WHERE pets.pettype = 'cat')
1.2 元数据不匹配问题
# 自然语言查询: 有多少个国家有超过两个制造商?
# Oracle 相关的元数据: 200, group, join
# 预测元数据: 350, group, subquery
# 黄金 SQL 查询:
SELECT count(*) FROM
countries AS T1 JOIN car makers AS T2
GROUP BY T1.countryid HA VING count(*)>2
# 不正确的生成 SQL 查询:
SELECT count(*) FROM (
SELECT country FROM car makers
GROUP BY country HA VING count(*)>2)
1.3 排名问题
# 自然语言查询: 哪些汽车型号是在 1980 年之后生产的?
# 黄金 SQL 查询:
SELECT T1.model FROM model list AS T1
JOIN car names AS T JOIN car data AS T3
WHERE T3.year > 1980
# 排名最高的 SQL 查询语句:
SELECT T2.model FROM cars data AS T1
JOIN car names AS T2 WHERE T1.year > 1980
05.
相关工作
在NLIDB领域,早期研究主要采用基于规则的方法,通过手工制作语法将自然语言查询映射到SQL。但这种方法效率低、灵活性差。随着深度学习的发展,Seq2seq模型成为主流,但自回归解码的本质使它在处理复杂查询时面临挑战。近年来,LLMs在NL2SQL任务中得到应用,但仍需要进一步优化。与这些现有方法不同,METASQL引入了一个统一框架,结合了现有方法的优势,并进一步提升了翻译性能。
06.
结论
METASQL框架为NL2SQL问题提供了一种有效方案。通过引入查询元数据和学习排序算法,它显著提升了现有翻译模型的性能。实验结果充分证明了其有效性。当然,仍有一些方向值得进一步探索。比如如何突破现有自回归解码范式的限制,如何开发更精确的多粒度语义标注方法,以及如何整合更多类型的元数据。这些方向有望进一步提升METASQL的性能,推动NL2SQL技术的发展,最终实现更智能、更便捷的数据库交互。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:复旦大学METASQL首创NL2SQL候选排序方法要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点AI律小法集成数百万法律法规,秒级响应法律咨询;勘察设计项目投标书生成工具智能填充专业术语并自动调整格式;智绘蓝图一键生成结构完整的商业计划书。三款应用将专业门槛降到最低,提升效率。
企业应用AI需历经信息化、数字化、智能化三阶段,高质量数据是最大瓶颈。应尽早积累数据、建立知识库,从单一业务场景试点,并着力提升员工的数据思维与AI技能,为智能化转型奠定基础。
好的,请看我为您重写后的版本: 先说一个实战场景:你有一条SQL查询,执行一次要8 2秒,老板要求压到300毫秒以内。再配上一张表的结构、数据分布和索引现状——听起来是不是很熟悉? MySQL里执行时间超过5秒,EXPLAIN一出来,type=ALL,rows=千万级,Extra里还赫然写着Usin
瑞典金融科技公司Klarna上线的AI助手运行首月处理了230万次对话,占客服总量的三分之二,相当于700名全职客服月工作量。问题解决时间从11分钟降至2分钟,重复咨询量下降25%,客户满意度与人类客服持平,预计2024年带来4000万美元利润提升。
- 日榜
- 周榜
- 月榜
热点快看
