没有合适的资源?快使用搜索试试~ 我知道了~
NL2SQL-BUGs:用于检测NL2SQL翻译中语义错误的基准
0 下载量 164 浏览量
2025-03-27
21:08:54
上传
评论
收藏 1.99MB DOCX 举报
温馨提示
自然语言到SQL(即 NL2SQL)翻译对于实现数据库访问的民主化至关重要,但即使是最先进的模型也经常生成语义不正确的 SQL 查询,阻碍了这些技术被数据库供应商广泛采用。虽然现有的 NL2SQL 基准主要关注正确查询翻译,我们认为一个专门用于识别 NL2SQL 翻译中常见错误的基准同样重要,因为准确检测这些错误是任何后续校正的前提——无论是由人类还是模型完成。为了解决这一空白,我们提出了 ,这是第一个专门用于检测和分类 NL2SQL 翻译中语义错误的基准。采用了两级分类法系统地对语义错误进行分类,涵盖了9个主要类别和31个子类别。该基准包含2,018个专家注释的实例,每个实例包含一个自然语言查询、数据库模式和 SQL 查询,并对语义不正确的查询进行了详细的错误注释。通过全面的实验,我们证明当前的大语言模型在语义错误检测方面存在显著限制,平均检测准确率仅为75.16%。尽管如此,这些模型成功检测到了广泛使用的 NL2SQL 数据集 BIRD 中的 106 个错误(占 6.91% ),这些错误之前是基准中的标注错误。这突显了语义错误检测在 NL2SQL 系统中的重要性。
资源推荐
资源详情
资源评论






























原论文:https://arxiv.org/pdf/2503.11984
NL2SQL-
BUGs:用于检测NL2SQL翻译中语义错误的基准
刘昕宇,沈书钰,李博岩,唐楠,罗雨濛*
摘要
自然语言到SQL(即
NL2SQL)翻译对于实现数据库访问的民主化至关重要,但即使是最先进的模型也经常生
成语义不正确的 SQL 查询,阻碍了这些技术被数据库供应商广泛采用。虽然现有的
NL2SQL 基准主要关注正确查询翻译,我们认为一个专门用于识别 NL2SQL
翻译中常见错误的基准同样重要,因为准确检测这些错误是任何后续校正的前提——
无论是由人类还是模型完成。为了解决这一空白,我们提出了
,这是第一个专门用于检测和分类 NL2SQL
翻译中语义错误的基准。采用了两级分类法系统地对语义错误进行分类,涵盖了9个主要
类别和31个子类别。该基准包含2,018个专家注释的实例,每个实例包含一个自然语言查
询、数据库模式和 SQL
查询,并对语义不正确的查询进行了详细的错误注释。通过全面的实验,我们证明当前的
大语言模型在语义错误检测方面存在显著限制,平均检测准确率仅为75.16%。尽管如此
,这些模型成功检测到了广泛使用的 NL2SQL 数据集 BIRD 中的 106 个错误(占 6.91%
),这些错误之前是基准中的标注错误。这突显了语义错误检测在 NL2SQL
系统中的重要性。

1 引言
生成的
NL2SQL
查询中的错误类型。
在过去几十年中,将自然语言(NL)转换为相应的SQL查询取得了显著进展,即NL2SQ
L(又称为Text-to-
SQL)。最近,特别是大语言模型(LLMs)的进步极大地提高了理解和生成准确SQL翻
译的能力,从而在Spider和BIRD等基准测试中表现更好。然而,尽管有这些进步,最先
进的模型在BIRD上的准确率仍仅约为75%。这表明,在这些精心策划的基准测试中,大
约25%的情况因NL2SQL翻译错误而失败。在现实世界生产环境中,由于数据库更加复杂
且用户输入更加多样化,模型性能可能会进一步下降。
NL2SQL翻译错误可以分为两类:
语法错误
和
语义错误
。如图 1
(b)所示,语法错误发生在SQL查询违反SQL语法规则或包含对表、列或操作符的无效引
用时。这些错误相对容易检测,因为它们会立即导致执行失败并从数据库返回错误消息。
相比之下, 语义错误虽然语法正确,但未能反映用户的查询意图
,因此更微妙且更难检测。
例如,如图 1 (c)所示,假设用户询问没有朋友的学生,但生成的SQL查询使用了
INTERSECT 而不是 EXCEPT ,结果返回了有朋友的学生而非没有朋友的学生。
1
所有SQL编译器都可以检测语法错误,但无法检测语义错误。因此,NL2SQL系统的性能
差距很大程度上归因于语义错误,这些错误在Spider和BIRD数据集中占据了很大比例。
具体来说,通过对CodeS

NL2SQL模型生成的错误翻译进行分析,我们发现Spider中的170个错误中有168个(
98.8% )以及BIRD中的667个错误中有658个( 98.7%
)是语义错误。这一压倒性的比例凸显了语义错误在NL2SQL系统中的关键作用。
用于
NL2SQL
的语义错误检测。
鉴于语义错误的微妙性质,它们更难以检测,因为它们可能导致错误输出而没有任何可见
的执行错误。这使得语义错误检测尤为重要,因为准确识别这些错误是任何后续校正的
前提
。目前,检测这些错误通常由专家手动完成。然而,为了扩展这一过程并减少对人工的依
赖,我们需要能够协助甚至替代专家检测这些错误的模型。正如现代DBMS包含SQL语法
检查器以检测和纠正语法错误一样, NL2SQL系统需要类似的机制——
一个NL2SQL语义检测器——来识别生成的SQL查询中的语义错误。 如图 2
所示,NL2SQL语义错误检测的任务旨在检测自然语言查询、生成的SQL查询和数据库模
式之间的语义差异。一旦检测到语义错误,可以通过触发错误警报以供进一步检查、修订
查询生成过程或应用自动校正机制来纠正这些差异。
为了评估NL2SQL语义错误检测的能力,我们介绍了
,这是第一个专为识别和分类NL2SQL翻译中的语义错误而设计的基准。
采用两级分类法对语义错误进行分类,涵盖
9
个主要类别和许多子类别。
包含2,018个专家注释的实例。每个实例包含一个自然语言查询、数据库模式和相应的SQ
L查询,以及对语义不正确的SQL查询的详细错误注释。
我们做出了以下贡献。
我们正式定义了NL2SQL翻译中语义错误检测的任务(见第 2.1 节)。
我们介绍了一个全面的两级分类法,将NL2SQL语义错误分为9个主要类别和31个子类别
(见第 3 节)。
我们展示了
,这是第一个专为评估NL2SQL语义错误检测能力而设计的基准。该数据集包含2,018个
专家注释的实例,每个实例包含一个自然语言查询、数据库模式和SQL查询,以及对语

义不正确的SQL查询的详细错误注释。该基准可在 https://nl2sql-bugs.github.io/
公开获取(见第 4 节)。
我们利用中的错误分类法和演示案例,提示GPT-4o检测广泛使用的NL2SQL基准——
Spider和BIRD中的语义错误。我们的评估显示,Spider中有16个SQL查询(开发集的
1.55% )和BIRD中有 106 个SQL查询(开发集的 6.91%
)包含以前未被识别的语义错误(见第 2.2 节)。
我们在基准上评估了各种基于LLM的解决方案,以评估其检测NL2SQL语义错误的能力。
虽然一些方法在特定错误类型(例如与属性或表相关的错误)上的表现较为合理,但整体
性能仍然有限。这些发现强调了对更稳健的语义错误检测方法进行进一步研究的必要性(
见第 5 节)。
我们认为将在奠定NL2SQL技术的实际应用基础方面发挥重要作用。我们呼吁跨社区合作
:数据库工程师、数据挖掘从业者和NLP研究人员应将形式逻辑融入训练范式,促进可部
署的NL2SQL系统的开发。
2 问题及实际案例
2.1 问题表述
给定一个三元组(NL,DB,SQL),其中包含自然语言问题(NL)、关系数据库(DB
)和由模型生成或人类提供的SQL查询(SQL),语义错误检测的任务旨在验证SQL是
否相对于DB在语义上等同于NL。语义错误有两种类型:(1)
错误结果
:查询返回的结果与自然语言查询的预期意图不符。(2)
特定实例上的正确结果
:查询可能产生正确结果,但这仅适用于当前数据库实例;结果可能不适用于所有可能的
数据库实例。
形式上,该任务可以定义为一个函数
\(\mathcal{F}\),它将三元组映射到二进制决策:\(\mathcal{F}(\text{{\sf NL}}, \text{{\sf
DB}}, \text{{\sf SQL}}) \rightarrow \{True, Fasle\}\),其中 \(True\)(分别 \(False\))表示
\({\sf SQL}\) 在语义上相对于给定的问题 \({\sf NL}\) 是正确的(分别错误的)。
如果检测到语义错误,即 \(\mathcal{F}({\sf NL}, {\sf DB}, {\sf SQL}) =
False\),下一步任务是对语义错误进行分类。这可以形式化定义如下:
给定一个三元组(NL,DB,SQL),其中包含自然语言问题(NL)、关系数据库(DB
)和生成的SQL查询(SQL),当SQL未能捕捉到NL相对于DB的意图时,语义错误分类
的目标是识别具体的语义错误类别:\(\mathcal{F}(\text{{\sf NL}}, \text{{\sf DB}}, \text{{\sf
SQL}}) \rightarrow T\),其中 \(T\) 是预定义的语义错误类型集合,\(\mathcal{F}({\sf NL},
{\sf DB}, {\sf SQL}) = t \in T\) 表示在SQL查询中识别出的具体语义错误类型。

2.2 检测到的流行基准中的错误
为了展示语义错误检测任务的实用性,我们将GPT-
4o应用于两个广泛使用的基准测试:Spider和BIRD。对于每个数据集,我们使用自然语
言查询(NL)、数据库模式(DB)和相应的SQL查询(SQL)作为GPT-
4o的输入。然后模型确定每个SQL查询是否在语义上相对于自然语言查询和数据库模式
是正确的。
在自动语义错误检测之后,我们手动验证了LLM的预测以确保准确性。我们的验证显示,
Spider中有16个SQL查询(开发集的1.55%)和BIRD中有 106 个SQL查询(开发集的
6.91% )
包含以前未被识别的语义错误
。 在表 [tab: Error example.] 和表 1
中,我们列出了在Spider和BIRD数据集中发现的真实错误示例。
这些发现展示了语义错误检测模型的实用性,并突显了开发语义错误检测模型以发现NL2
SQL数据集中隐藏错误的重要性。
=[ rectangle, draw=hidden-draw, rounded corners, align=left, text opacity=1, minimum
height=0.5em, minimum width=5em, fill opacity=.8, ]
=[my-box, draw=gray, fill=gray!10, text=black, font=, inner xsep=1pt, inner ysep=1pt,
line width=0pt, align=left, ]
=[my-box, draw=colorA, fill=colorA!25, text=black, font=, inner xsep=1pt, inner
ysep=1pt, line width=0pt, align=left, ]
=[my-box, draw=colorB, fill=colorB!25, text=black, font=, inner xsep=1pt, inner
ysep=1pt, line width=0pt, align=left, ]
剩余22页未读,继续阅读
资源评论


Paper易论
- 粉丝: 5347
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
