伊利诺伊大学厄巴纳-香槟分校(UIUC)的一个研究团队发现,广泛使用的 BIRD Text-to-SQL 基准测试中,超过一半的标注是错误的,这使得许多开发者所依赖的准确率评分的意义受到了质疑。

为什么该基准测试至关重要

BIRD 是衡量模型将自然语言问题转化为 SQL 查询能力的行业标准。论文、产品说明书和招聘测试都会引用 BIRD 分数。如果定义正确性的“黄金标准” SQL 语句存在缺陷,那么编写出更好查询的模型可能会受到惩罚,而复制错误黄金答案的模型反而可能获得奖励。

错误率是如何被发现的

UIUC 团队检查了 BIRD-dev 拆分集中的 238 个失败案例。他们没有猜测每个模型输出被标记为错误的原因,而是手动标记了模型生成的 SQL 与黄金参考答案之间的每一个差异。他们的审计发现,52.8% 的实例包含标注错误——错误的 SQL、模式(schema)不匹配,甚至是格式错误的自然语言问题。

其中一种模式占了被标记错误的 19%:模型使用了 DISTINCT,而黄金查询没有使用。想象一下,用户询问具有异常化验结果的患者人数。黄金答案使用 COUNT(ID) 来统计行数。如果一名患者有五项异常化验结果,黄金查询会报告五而不是一。而模型的 COUNT(DISTINCT ID) 则能正确地将每位患者计为一次。在这些情况下,尽管模型的答案更符合预期的语义,基准测试仍将其记录为模型错误。

对模型开发的现实影响

开发者通常通过调整提示词(prompts)、添加诸如“不要使用 DISTINCT”之类的约束,或在基准测试数据上进行重新训练来应对较低的 BIRD 分数。这些调整可能会提高报告的分数,从而产生进步的错觉。UIUC 的分析表明,这种“改进”可能仅仅是对错误答案的过拟合,可能会降低模型在需要正确逻辑的实际数据库上的性能。

研究人员展示了相反的情况。在解析了模型查询和黄金查询后,他们识别出七个模型错误地将两个独立的列合并为一个列的实例。在这些情况下,黄金 SQL 是正确的。通过仅针对这些真正的错误使用改进后的提示词,他们在没有虚增基准测试分数的情况下提高了模型的性能。

研究结果对利益相关者的意义

  • 研究人员:基于 BIRD 分数的论文发表声明需要对标注质量进行说明。不同论文之间的比较可能反映的是对基准测试噪声的容忍度差异,而非真正的技术进步。
  • 产品团队:仅依赖 BIRD 作为发布就绪性的唯一指标,存在发布已学会复制错误查询的模型之风险。在私有模式(proprietary schemas)上进行现实世界测试变得至关重要。
  • 基准测试维护者:高错误率表明系统性审查已迫在眉睫。清理黄金集或提供第二个“已验证”的拆分集可以恢复信心。

实际审计工作流

UIUC 团队提出了一种可以应用于任何 Text-to-SQL 基准测试的轻量级流程:

  1. 解析模型生成的 SQL 语句和黄金 SQL 语句,将其转换为抽象语法树(AST)。
  2. 对齐结构,以揭示在选定列、过滤器、连接(joins)和聚合函数方面的差异。
  3. 标记每个差异(例如:多余的列、缺失的过滤器、错误的聚合)。
  4. 汇总标签,通过直方图识别主要的错误类别。
  5. 验证每个高频标签对应的黄金查询,然后再将其作为提示工程的目标。

通过仅针对黄金答案无可争议地正确的案例进行提示词修订,开发者可以避免陷入“为损坏的指标而优化”的陷阱。

总结

一个错误标记超过一半样本的基准测试无法作为可靠的衡量标准。UIUC 的研究表明,BIRD 标记的许多“错误”实际上是模型的成功,而真正的错误却隐藏在正确的黄金答案背后。审计黄金集、改进评估流程,并将基准测试分数视为更广泛验证策略的一部分,是确保纸面上的改进能转化为现实世界可靠性的唯一途径。