论文:A comprehensive evaluation of ChatGPT’s zero-shot Text-to-SQLcapability
ABSTRACT
本文介绍了 ChatGPT 的 Text-to-SQL 能力的第一个综合分析。鉴于最近出现了大规模会话语言模型 ChatGPT 及其在会话能力和代码生成方面令人印象深刻的能力,我们试图评估其 Text-to-SQL 性能。我们在 12 个具有不同语言、设置或场景的基准数据集上进行了实验,结果表明 ChatGPT 具有很强的文本到 SQL 能力。尽管与当前最先进的 (SOTA) 模型性能仍有差距,考虑到实验是在零样本场景中进行的,ChatGPT 的性能仍然令人印象深刻。值得注意的是,在 ADETA (RPL) 场景中,零样本 ChatGPT 甚至优于需要对 Spider 数据集进行微调的 SOTA 模型 4.1%,证明了它在实际应用方面的潜力。为了支持相关领域的进一步研究,我们已经公开了 ChatGPT 生成的数据https://github.com/THU-BPM/chatgpt-sql.
Method
为了使 ChatGPT 能够生成准确的 SQL 输出,我们使用了如图所示的提示。为了确保 ChatGPT 的 Text-to-SQL 能力的公平比较,我们直接采用了 OpenAI 演示 Webwite2 中使用的 Text-to-SQL 提示,而无需进行进一步的提示探索。
Experiment
实验设置
主要介绍了在哪几个数据集上进行实验,这些数据集的区别;评估指标;以及对比的baseline
数据集
我们对 12 个公共基准数据集进行了广泛的实验,如下所示:
1)Spider (Yu et al., 2018) 是一个大规模的跨域 Text-to-SQL 基准。它包含 146 个数据库中的 8659 个训练样本和 20 个数据库中的 1034 个评估样本。
2) Spider-SYN (Gan et al., 2021a) 是 Spider 评估数据集的挑战性变体。SpiderSYN 是通过手动修改带有同义词替换的自然语言问题来构建的。
3) Spider-DK (Gan et al., 2021b) 是一个基于 Spider 的人工策划数据集,它从 Spider 开发集的 10 个数据库中对 535 个问题-SQL 对进行采样,并修改它们以合并领域知识。
4) Spider-Realistic (Deng et al., 2020) 是一个基于 Spider 开发集的新评估集,删除了显式提及列名,其中包含 508 个样本。
5) Spider-CG(SUB)和 Spider-CG(APP) (Gan et al., 2022) 是两个评估数据集来衡量模型的组合泛化,该数据集由不同示例之间的子句替换构建,并将子句分别附加到另一个句子中。
6) ADVERETA(rpl) 和 ADVETA(add) (Pi et al., 2022) 是 Spider 数据集的两个具有挑战性的测试数据集,分别由列名的对抗性替换和新列名的添加组成。
7) CSpider (Min et al., 2019) 数据集是通过将 Spider 翻译成中文来构建的,这与原始 Spider 数据集
8) DuSQL (Wang et al., 2020) 的大小相同,是一个更大规模的中文文本到 SQL 数据集,包含 23,797 个问题/SQL 对。
9) SParC (Yu et al., 2019b) 和 CoSQL (Yu et al., 2019a) 是两个多轮 Text-to-SQL 数据集,开发集分别有 1625 和 1007 个问题。
评估指标
我们主要采用三个有效 SQL (VA)、执行准确度 (EX) 和测试套件准确度 (TS) 的评估指标。
有效 SQL (VA) 是可以成功执行的 SQL 语句的比例。
执行精度 (EX) 是执行结果与标准 SQL 语句匹配的数据比例。
测试套件精度 (TS) (Zhong et al., 2020) 可以从数据库的提取测试套件中实现高代码覆盖率,这也是基于执行的。
请注意,我们不使用主流精确匹配精度,因为实现相同目标的 SQL 查询通常可以用不同方式表达,这使得零样本 ChatGPT 模型难以实现高精确匹配精度。
基线
由于我们完全依赖于基于执行的评估,我们没有使用 RatSQL (Wang et al., 2019) 和 LGESQL (Cao et al., 2021) 等基线,这些基线仅生成 SQL 骨架而不生成值。相反,我们主要使用了三个基线:
(1) PICARD(Scholak 等人,2021 年)是一种通过增量解析来约束语言模型的自回归解码器的方法。
(2) RASAT (Qi et al., 2022) 将关系感知自注意力引入变压器模型中,并利用受约束的自回归解码器。
(3) RESDSQL (Li et al., 2023) 提出了一个排名增强编码和骨架感知解码框架,以解耦模式链接和骨架解析。其中,PICARD和RASAT基于T5-3B (Raffel等人,2020)模型。
实验结果
基于实验结果,我们总结了以下观察结果:
- 与使用完整训练数据的当前最先进的 (SOTA) 模型相比,不使用特定任务训练数据的 ChatGPT 的性能仅差 14%。这已经证明 ChatGPT 是一个强大的零样本 Text-to-SQL 转换器。
- ChatGPT 在生成 SQL 语句时的鲁棒性非常强大,ChatGPT 和 SOTA 模型之间的性能差距仅在 Spider 数据集的一些鲁棒性设置上仅为 7.8%,低于标准 Spider 数据集上的 14% 差距。
3.在ADETA (Pi et al., 2022)场景中,数据库中的列名经过对抗性修改,ChatGPT的性能甚至超过了当前SOTA模型的性能4.1%。 - ChatGPT 生成的数据的精确匹配度量非常低,因为有许多不同的方法来表达具有相同目的的 SQL。因此,我们主要使用执行精度作为评估指标。
总体而言,我们的实验表明 ChatGPT 具有很强的 Text-to-SQL 能力和稳健性,并且在某些情况下优于 SOTA 模型。
案例研究
这个文章还进行了一项案例研究
展示了 ChatGPT 在 Spider 开发数据集上的四种典型预测误差。
第一个错误案例表明,ChatGPT 倾向于通过使用 LEFT JOIN 更精细地设计 JOIN 语句,但原始 Spider 开发数据集中不存在这种粒度级别。
第二个错误案例源于 ChatGPT 对数据库结构混淆,不清楚术语“完整名称”专门指代哪个列。
第三个示例的错误是由于生成的 SQL 语句缺乏正确的语义解释,导致具有嵌套 SQL 语句的“where”子句的输出不正确。
第四个错误案例是由于复制特定值中的错误,在重新生成值时不会保留原始值的情况敏感性。
总之,ChatGPT 的错误大多出现在小细节中,其中一些问题可以在开发后期解决和改进,例如在第一个、第三个和第四个案例中。然而,对于像第二种情况这样的错误,这表明缺乏对数据库模式的理解,可能需要进一步改进模型的能力来解决它们。
Conclusion & Future work
在这项工作中,我们对 ChatGPT 在 Text-to-SQL 中的零样本能力进行了全面分析。我们发现,即使没有使用任何训练数据,ChatGPT 仍然具有强大的 Text-to-SQL 能力,尽管与当前 SOTA 模型相比仍有一些差距。此外,ChatGPT 表现出强大的鲁棒性,在大多数鲁棒性基准上表现相对较好,甚至在 ADVETA 基准上超过了当前的 SOTA 模型。尽管这篇论文做了一些发现,但我们只使用一个共同的提示来评估ChatGPT 的能力。在未来的工作中,可以设计更好的提示来探索 ChatGPT 的 Text-to-SQL 能力
在未来的工作中,我们将主要考虑以下两个方向,以进一步探索 ChatGPT 在 Text-to-SQL 任务中的能力。首先,我们将与 ChatGPT 进行更多交互,以解决生成不可执行 SQL 语句的问题。我们可以设计 ChatGPT 与提供的数据库错误消息进行多轮对话,以进一步确保生成的 SQL 语句的有效性。其次,我们将向提示添加更多高度相关的上下文示例,以增强 ChatGPT 生成 Text-to-SQL 的能力。