大语言模型时代Text-to-SQL 更准确的评估指标

作者: 蒋鹏

大语言模型时代Text-to-SQL 更准确的评估指标0

摘要:大型语言模型(LLM) 已成为推进 Text-to-SQL 任务的强大工具。研究发现,基于 LLM 的模型在不同评估指标下,其性能表现与经过微调的模型存在显著差异。因此,文章分析了测试套件执行准确度(EXE) 和精确集匹配准确度(ESM) 在评估基于 LLM 的 Text-to-SQL 模型时的不足,并提出了改进指标 EESM(Enhanced Exact Set Matching) 。实验结果表明,EXE 和 ESM 分别存在高达 13.2% 和 10.8% 的假阳性和假阴性率,而 EESM 的假阳性率和假阴性率分别仅为0.2% 和 1.8%,表明 EESM 能够提供更准确的评估。

关键词:EESM;增强的精确集匹配准确度;测试套件执行准确度;精确集匹配准确度;Text-to-SQL

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2025)01-0076-03 开放科学(资源服务) 标识码(OSID) :

0 引言

Text-to-SQL 旨在将自然语言(NL) 问题自动转换为结构化 SQL 语句,从而促进用户与数据库之间的无缝交互[1]。近年来,大型语言模型(LLMs) 的快速发展为 Text-to-SQL 领域带来了重大变革[2-7]。基于 LLM 的 Text-to-SQL 模型在最流行的基准数据集 Spider [8]上表现出色,展现了其处理复杂查询的强大能力。

然而,在评估 Text-to-SQL 模型的性能方面仍面临一些挑战。在 Spider 榜单上,使用预训练的 LLM 而无须微调的模型(以下简称PLM) ,如 GPT,在测试套件执行准确度(EXE) [9] 指标上表现出色,但在精确集匹配准确度(ESM) [8] 指标上表现不佳。相反,经过微调的 LLM 模型(以下简称为 FLM) 在 ESM 指标上表现出色,但在 EXE 指标上表现不佳。此外,在同一个数据集上,同一个模型使用 EXE 和 ESM 评估出的性能排名差异巨大,这表明现有的评估指标存在局限性,需要更稳健的评估指标。因此,本文旨在改进现有的评估指标,以更准确地评估 Text-to-SQL 模型的性能。

为解决上述挑战,本文首先研究了 ESM 中的潜在问题,并提出了一个名为 EESM 的新增强指标,它解决了原始指标中存在的许多缺点(第 2 节) 。然后,在 Spider 数据集上评估了四个最先进的模型,比较了它们在 EXE、ESM 和 EESM 上的性能(第 3 节) 。最后,使用这三个指标对评估结果进行了全面的错误分析,展示了 EESM 的卓越稳定性(第 4 节) ,更能真实地反映基于 LLM 的 Text-to-SQL 模型性能,从而使这些模型能够达到新的性能高度。

1 相关工作

1.1 Text-to-SQL 模型

随着 LLM 的进步,基于 LLM 的 Text-to-SQL 方法在 Spider 排行榜上取得了显著进展。DIN-SQL [10] 通过预测模式链接来确定哪些数据库模式将包含在最终的查询中,并根据查询的难度选择合适的模板,最终在Spider 上达到了 85.3% 的准确率。DAIL-SQL [11] 通过在训练集中搜索相似的问题,并利用它们与 GPT 共同创建少样本提示,生成初始查询,然后进一步利用初始查询在训练集中查找更多相似查询,最终在 Spider 上以 86.6% 的准确率刷新了纪录。RASAT [12] 通过融入关系感知自注意力机制,能够更好地理解数据库模式之间的关系,并继承了T5的预训练权重。Graphix-T5 [13-14] 通过图感知层将 Transformer 块的语义信息与图神经网络的结构信息相结合。

1.2 Text-to-SQL 评估

目前,Text-to-SQL 领域最广泛使用的自动评估方法为执行准确度(EXE) [9] 和精确集匹配准确度(ESM) [8]。

EXE 检查预测查询的执行结果是否与参考查询的执行结果匹配,但由于语义上不同的查询可能产生相同的执行结果,EXE 可能会产生假阳性,如 SELECTname FROM dogs; 和 SELECT name FROM dogsWHERE age < 100;具有不同语义的查询产生相同的执行结果,因为数据库中不存在年龄≥100的狗。ESM 通过独立匹配查询子句和组件(如 select、where、hav⁃ing、group by 和 order by 子句) 来评估,匹配基于比较列和谓词进行,不考虑列和谓词的顺序。虽然 ESM 比EXE 更严格,但由于 SQL 查询可能在语义上等价,但在语法上有所不同,ESM 仍然容易出现错误。

最近,大部分 Text-to-SQL 模型的工作都是在Spider 数据集上进行评估的。Spider 是一个严格的跨领域基准测试,用于测试模型在多种数据库模式中生成复杂 SQL 查询的能力。它包含 10 181 个查询,涵盖了 138 个不同领域,涉及多表查询(使用 JOIN) 、复杂的 SQL 子句( 如 ORDER BY、GROUP BY 和HAVING 等) 以及嵌套的 SQL。

在 Spider 数据集上评估 SQL 准确度时,使用EXE 和 ESM 指标,但它们的组合评估脚本禁用了条件中的值和 DISTINCT 关键字检查。尽管目前基于LLM 的模型在处理这些方面表现出色,但 Spider 排行榜评估指标所使用的评估脚本中仍禁用了对值检查和 DISTINCT 关键字检查,限制了对 LLMs模型性能的准确评估。

2 EESM: 增强的精确集匹配

本文通过深入分析 ESM 中假阳性(2.1 节) 和假阴性(2.2 节) 出现的原因,并提出了新的评估指标 EESM(En⁃hanced Exact Set Matching) 来解决这些问题(2.3 节) 。

2.1 ESM 中的假阳性问题

情况1:由于ESM 忽略了对 JOIN 条件(t2.breed_code = t2.breed_name) 的检查,导致查询1和查询2产生了不同的输出,EXE 正确地将它们视为不匹配,而 ESM 错误地认为它们是匹配的,其中查询1:SELECT t1. dog_id, t2. breed_name FROM dogs ASt1 JOIN breeds AS t2 ON t1. breed_code = t2.breed_code;查询2:SELECT t1.dog_id, t2.breed_nameFROM dogs AS t1 JOIN breeds AS t2 ON t1.breed_code = t2.breed_name;

情况2:由于 ESM 在简单查询中忽略了对DISTINCT 的检查,导致ESM 错误地认为导致查询3 和查询4 是匹配的,其中查询3:SELECT DISTINCTname FROM dogs;查询4:SELECT name FROM dogs;

情况3:由于ESM忽略了LIMIT值的检查,错误地认为查询5和查询6是匹配的,其中查询5:SELECTtranscript_date FROM Transcripts ORDER BY tran⁃script_date DESC LIMIT 2; 查询6:SELECT tran⁃script_date FROM Transcripts ORDER BY tran⁃script_date DESC LIMIT 1;

2.2 ESM 中的假阴性问题

如查询SELECT MAX(weight) FROM dogs; 和SELECT weight FROM dogs ORDER BY weightDESC LIMIT 1;他们在查询语义上等价,但在句法上不等价。由于 ESM 依赖句法结构检查,导致错误地认为它们不匹配。ESM 对句法结构的依赖会导致许多错误,因为在某些假设条件成立时,句法不同的查询在语义上是等价的。如查询SELECT count(dog_id)FROM dogs;和 SELECT count(*) FROM dogs;在当dog_id列为NON_NULL的假设条件成立时,这两个查询在语义上是等价的。这些假设条件可以通过数据库模式进行验证,数据库模式提供了有关表和列、主键-外键关系以及约束的信息。

此外,不合适的参考查询也会导致 ESM 错误地认为预测查询和参考查询不匹配。POURREZA 等人[15]的研究提取了DIN-SQL[16]和T5-large+PICARD [16]在执行准确性方面未能产生正确答案的问题,并对这些问题对应的参考查询进行了SQL专家评估,结果显示只有67.3%被认为是正确的。这表明必须对参考查询进行修正,才能进一步提升评估的准确性。

如图1所示,由于自然语言问题没有明确说明如何处理平局,预测查询可能返回所有平局,也可能仅返回一个,这两种情况都应被视为正确。如图 2所示,当数据库中有多个列代表相同的语义含义时,使用任何一个列都应被视为正确。如图3所示,左边的预测查询正确, 而右边的参考查询GROUP BY子句中没有出现LANGUAGE 列,参考查询存在错误,在SELECT子句中包含聚合和非聚合列的混合,但非聚合列没有出现在GROUP BY子句中。

2.3 新的评估指标EESM

由于 ESM 并未解决 2.1 节和 2.2 节中提到的问题,因此,本文提出了一个新的评估指标 EESM。

1) EESM 检查所有 JOIN 的条件,而 ESM 之前仅收集了有关连接条件的信息,但从未比较过两个查询的 JOIN 条件。

2) EESM 在整个查询中始终将 DISTINCT 视为不同,而 ESM 之前仅在聚合函数内检查 DISTINCT。

3) EESM 始终检查 LIMIT 的值,而 ESM 之前忽略了 LIMIT 的值检查。

4) EESM 对查询SELECT c1 FROM t1 AS tJOIN t2 ON t.c1=t2 .c2 WHERE c1 IN (SELECTc3 FROM t3 AS t);可以正确地将模式和别名检查限制在它们对应的子查询范围内,而 ESM 对此评估不正确, 因为它没有识别出t不仅是子查询中t3的别名,同时也是外部查询中t1的别名,ESM将模式和别名检查扩展到整个查询,这会导致在别名是局部子查询时出现问题。

5) EESM 对查询SELECT c1 FROM t1 WHEREc1 IN (1, 2, 3);可以正确评估,因为它在 IN 关键词内部正确解析并评估值列表,而 ESM 之前仅允许关键词 IN 后面跟随一个子查询,而不支持值列表。

6) 本文制定了一组可验证的等价规则,以降低ESM 中的假阴性。

7) 本文对数据集中不合适的参考查询进行了重写,以进一步降低 ESM 中的假阴性。

3 实验

3.1 模型选择

本文使用四个基于 LLM 的模型进行实验,包括DAIL(DAIL-SQL+GPT4[11]) 、DIN(DIN-SQL+GPT4[10]) 、G+P(Graphix-3B+PICARD[13])和R+P(RASAT+PICARD[12]) 。其中,DAIL 和 DIN 是预训练(PLM) 的 LLM 模型,而G+P 和 R+P 是在 Spider 数据集上微调(FLM) 的 LLM 模型。为了公平比较,本文使用相同的预训练模型和微调方法,并使用相同的超参数进行训练。

对于开发集,本文从它们的代码库中获取了DAIL 和 DIN 的输出,而使用它们的源代码重新生成了 R+P 的输出。从上述模型的代码库中获取结果后,重新运行了本文的评估脚本,得到了 EESM 的结果(见表1) 。此外,为了验证 EESM 是否能够给出更准确的评估,本文对 Spider 测试集中每个模型产生的假阳性和假阴性进行了分析,分析结果见表2。

上一篇 点击页面呼出菜单 下一篇