论文:A comprehensive evaluation of ChatGPT’s zero-shot Text-to-SQL capability
⭐⭐⭐⭐
arXiv:2303.13547
这篇论文呢综合评估了 ChatGPT 在 zero-shot Text2SQL 任务上的表现。
dataset 使用了 Spider、Spider-SYN、Spider-DK、Spider-Realistic、Spider-CG、ADVETA、CSpider、DuSQL、SParC 以及 CoSQL。
由于 ChatGPT 生成的 SQL 多样性,所以这里主要使用了 execution accuracy 作为 metric。
一、使用的 Prompt
下图展示了使用 ChatGPT 来做 Text2SQL 的 prompts:
- 上半的 prompt 是单轮对话的场景
- 下半的 prompt 是多轮对话的场景
二、Evaluation Metrics
这里主要使用了三个 evaluation metric:
- valid SQL(VA):成功执行的 SQL 语句比例。
- execution accuracy(EX):执行结果与标准 SQL 匹配的比例
- test-suite accuracy(TS):测试套件是一组用于测试软件或系统特定部分的测试用例。在 Text2SQL 任务中,测试套件由一系列设计好的查询组成,这些查询旨在全面测试模型对不同 SQL 操作的理解和执行能力。这个指标通过执行测试套件中的所有测试用例,并根据执行准确性来评估模型的整体性能。它不仅考虑单个查询的成功执行,还考虑整个测试套件的覆盖率和成功率。
三、实验结果
整体上来说,ChatGPT 表现出很强的 Text2SQL 能力。
下面总结一些结论:
- 在 Spider 数据集上,ChatGPT 的表现比 SOTA 低了 14%,但是 ChatGPT 是 zero-shot 的,且未在 training set 上做 fine-tune。
- 在 Spider-SYN 和 Spider-Realistic 上,ChatGPT 表现也很不错,但与 SOTA 的差距稍大了一点,这也体现了当前的模型已经具备这两个场景的鲁棒性
- 在多轮对话的场景和需要外部知识的场景下,ChatGPT 由于其强大的世界知识和上下文建模能力,表现特别好。
- 在跨语言泛化的 Text2SQL 能力上,ChatGPT 的能力有待进一步改进。
做了一些 case study,发现 ChatGPT 总在一些小细节上犯错,论文给出了 4 个 error case:
- ChatGPT 倾向于使用 LEFT JOIN 来设计 JOIN,但这模式在 Spider 数据集上并不经常出现
- ChatGPT 经常对 database structure 产生迷惑性,导致找不到具体的 column
- 由于生成的 SQL 缺少正确的语义解释性,导致生成错误的带有嵌套 SQL 的 WHERE 子句
- 在 copy 特定 values 时出现错误,比如未保留大小写敏感性
四、总结
可以看出,ChatGPT 在 Text2SQL 任务上表现还不错,但仍然有不少的提高空间:
- 与 ChatGPT 进行多轮交互,以解决生成不可执行的 SQL 语句的问题
- 利用 DB 的报错来设计多轮对话,从而确保生成的 SQL 正确性
- 引入 in-context learning