NL2SQL360
多角度 NL2SQL 评测框架,整合 Spider/BIRD 等 benchmark,支持 5 种评
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
多角度 NL2SQL 评测框架,整合 Spider/BIRD 等 benchmark,支持 5 种评
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:某团队训练了一个 NL2SQL 模型,在内部测试集上准确率高达 92%,兴奋地向领导汇报。然而产品上线后,用户问"上个月销售额最高的产品是什么",系统返回的是一条 JOIN 错误的 SQL,整个 BI 报表彻底崩溃。
这并非孤例。NL2SQL(Natural Language to SQL,即"用自然语言查询数据库")领域长期面临一个核心困境——评测指标单一、数据集割裂。大多数论文只报告"执行准确率"(Execution Accuracy)这一个数字,而现实中的 SQL 错误类型千差万别:JOIN 条件写反、GROUP BY 遗漏、聚合函数乱用……每一种错误对业务的影响完全不同。一个 JOIN 错误可能导致整张报表数据错误,而一个列名小错误可能只影响个别字段。但在只看 EX(执行准确率)的情况下,这两种错误被等权重对待,掩盖了真实问题。
更严重的问题是数据集碎片化。Spider、BIRD、CoSQL 等 benchmark 各有侧重:Spider 擅长测试多表关联,BIRD 看重数据库复杂度,CoSQL 关注多轮对话。每个团队自建评测流程,数据格式不统一,指标口径不一致,跨论文对比几乎不可能。研究者发表一篇新模型,实际性能到底如何,行业里谁也说不清楚。
香港科技大学(HKUST)Dial 实验室在 VLDB'24 发表 NL2SQL360,首次提出了一个系统化的多角度 NL2SQL 评测框架。它的核心思想很简单:不做单一指标内卷,而是构建一个开放 testbed,把现有 benchmark 全部整合进来,让研究者可以按需选择评测维度。
NL2SQL360 包含三大核心能力:
1. 多 benchmark 集成
项目内置了对 Spider 和 BIRD 两个主流评测集的支持。用户只需准备符合格式要求的数据集(SQLite 数据库文件 + JSON 标注),通过 YAML 配置文件指定路径,即可一键完成数据集导入。框架会自动管理数据集版本,避免每次评测前手动下载、格式转换的繁琐流程。
2. 五种评测指标
这是 NL2SQL360 最有价值的设计创新。它同时支持五种评测指标:
五种指标覆盖了"对不对"、"有多对"、"效率如何"三个维度。尤其是 VES 指标——同样正确的一段 SQL,查询时间更短的得更高分。这对真实生产环境意义重大:一条跑 10 秒的查询和一条跑 100 毫秒的查询,在用户体验上有天壤之别。
3. 多角度性能分析(Question Variance Testing,QVT)
NL2SQL360 还提供了细粒度的分类分析能力。系统内置了 SQL 特征过滤器,可以按以下维度拆分评测结果:
这种"切片"分析让研究者能够精确定位模型的薄弱环节——比如发现模型在涉及 3 表以上 JOIN 时准确率骤降 30%,这比一个"总分 72%"的笼统数字有价值得多。
NL2SQL360 的代码架构清晰,体现了良好的工程素养。项目采用 src/nl2sql360/ 包结构,主要模块包括:
| 模块 | 职责 |
|---|---|
core/ | 核心引擎(Core 类),管理数据集导入、评测调度、结果存储 |
evaluator/ | 五种评测器实现,封装 Spider/BIRD 官方评测逻辑 |
dataset/ | 数据集管理,支持 JSON 标注解析和 SQLite 引擎 |
parser/ | SQL 解析器(SQLParser),规范化 SQL 语句用于精确匹配 |
database/ | SQLAlchemy ORM 模型,定义数据集元信息表结构 |
filter/ | QVT 过滤器,支持场景和 SQL 特征的分类 |
cli/ | 命令行入口,提供 nl2sql360-cli 工具 |
整个框架的技术栈非常干净:核心依赖是 SQLAlchemy(数据库 ORM)、Pandas(数据处理)、SQLglot(SQL 解析),评测逻辑直接复用 Spider 官方的 test_suite_sql_eval 和 BIRD 的 bird_eval 评测脚本,确保结果与官方保持一致。
安装方式极为简洁:pip install nl2sql360 即可完成全部依赖安装,配合 CLI 工具 nl2sql360-cli 可以完成数据集导入、评测执行、报告生成的全流程。
值得注意的是,NL2SQL360 论文还附带了一个基线模型 SuperSQL,在 Spider 和 BIRD 测试集上分别取得了 87% 和 62.66% 的执行准确率。SuperSQL 的方法细节在 NL2SQL360 仓库中并未完全开源,但其评测结果证明了 NL2SQL360 testbed 的实用性——在真实的细粒度评测下,即使是 SOTA 模型在 BIRD 数据集上也存在相当大的提升空间。
NL2SQL360 并非完美。其主要局限包括:
1. 无 Docker 支持:纯 pip 依赖管理,在某些隔离环境中部署需要手动处理 Python 版本和依赖冲突。相比之下,Docker 一行命令搞定一切的体验更加无缝。
2. 不支持 Web UI:全程通过 YAML 配置和 CLI 操作,适合开发者/研究者,但非技术用户上手门槛较高。
3. 数据库支持有限:当前主要针对 SQLite,对 PostgreSQL、MySQL 等生产级数据库的支持需要额外配置(VES 评测器支持 Postgres 连接,但需手动配置 db_host/db_port)。
4. 多轮对话评测缺口:CoSQL 等多轮对话 benchmark 的支持尚未集成,对于实际 ChatBI 场景的评测能力有限。
NL2SQL360 的最大贡献,不是 SuperSQL 刷出了多高的分数,而是建立了一个透明、可扩展、可对比的评测基础设施。当所有研究者都在同一个 testbed 上用同一套指标报告结果,领域的进步才真正可衡量。
从行业趋势看,NL2SQL 是大模型落地最有价值的场景之一。能用自然语言直接查询企业数据库,意味着非技术人员也能自主获取数据洞察。NL2SQL360 的评测框架为这一趋势提供了必要的质量保障工具。随着 VES 等效率指标被更多研究者采纳,未来的 NL2SQL 模型不仅"答得对",还要"答得快"——这对生产级应用至关重要。

图1:NL2SQL360 项目 Logo

图2:Spider 数据集 Leaderboard(来源:项目 README)

图3:Question Variance Testing(QVT)可视化,按 SQL 特征切片分析模型性能