阿里 XIYAN-SQL:让 “说人话查数据” 更简单的工具

B站影视 港台电影 2025-09-11 09:47 1

摘要:咱们先通俗说下背景:现在想从数据库里查数据,得写 SQL 代码 —— 但不是所有人都会写。所以就有个需求:让电脑听懂咱们说的话(比如 “查下张三的销售额”),自动生成 SQL 代码,这事儿叫 “NL2SQL”(自然语言转 SQL)。

咱们先通俗说下背景:现在想从数据库里查数据,得写 SQL 代码 —— 但不是所有人都会写。所以就有个需求:让电脑听懂咱们说的话(比如 “查下张三的销售额”),自动生成 SQL 代码,这事儿叫 “NL2SQL”(自然语言转 SQL)。

之前做这事儿的方法有俩问题:要么用大模型(比如 GPT-4)但跑起来慢、费劲儿;要么用小模型但查不准、换个数据库就不行了。所以阿里搞了个叫 “XIYAN-SQL” 的工具,就是要解决这些问题,让 “人话查数据” 又快又准。

为解决上述问题,阿里巴巴团队提出XIYAN-SQL—— 一种多生成器集成框架,融合提示工程与监督微调的优势,提升 SQL 候选的质量与多样性,同时优化 Schema 理解和候选选择机制,在多类数据库与基准测试中实现了当前最优(SOTA)性能。

简单说,它干事儿分三步,就像咱们查资料一样:先找对资料→多写几个答案→挑最对的那个。

第一步:找对数据库里的有用信息(Schema Linking)
数据库里的表和列特别多,比如一个公司数据库可能有 “员工表”“工资表”“部门表”,还有各种列。如果让模型看所有信息,容易看花眼、查错。
所以这一步先 “筛选”:比如你问 “查张三的工资”,就只把 “员工表” 里的 “姓名” 列、“工资表” 里的 “工资额” 列挑出来,其他没用的(比如 “部门地址”)全去掉。还会把这些挑出来的信息整理成一个清晰的 “清单”(后面会说这个清单怎么弄的),给模型看。

第二步:生成多个可能的 SQL 答案(候选生成)
光给一个答案怕不准,所以这一步会让模型生成好几个不同的 SQL,保证 “多思路”。怎么生成呢?分两种方式:专门训练 “准星” 模型:就像让学生反复练题,专门教模型怎么生成准的 SQL。还会让模型学不同 “风格” 的 SQL(比如有的写 “JOIN”,有的写 “INNER JOIN”,其实意思一样),避免思路太单一。给模型看 “例题”:比如你问 “查北京的销售额”,就给模型看几个 “查上海销售额” 的例子,让它照着例子发散,多生成几种可能的 SQL。还会特意把例子里的关键信息(比如 “北京”“上海”)换成通用标记,不让模型只盯着具体地名,而是理解问题本质。检查改错:生成的 SQL 可能有错(比如少个逗号、表名写错),这一步会自动检查,有错就改,比如把 “selct” 改成 “SELECT”。第三步:挑出最对的 SQL(候选选择)

之前的方法常犯一个错:哪个 SQL 出现次数多就选哪个(比如生成 10 个,6 个一样就选它),但有时候 “多数派” 反而错了。
XIYAN-SQL 专门训练了一个 “裁判” 模型:让它仔细对比每个 SQL,看哪个真的符合问题。比如你问 “查 2023 年的销售额”,有的 SQL 写的是 “2022 年”,“裁判” 就会排除这个,挑出写 “2023 年” 的。

之前很多方法失败,是因为模型看不懂数据库的 “结构”—— 比如不知道 “员工表” 和 “工资表” 是通过 “员工 ID” 连起来的。XIYAN-SQL 搞了个叫 “M-Schema” 的东西,相当于给数据库写了一份超清晰的 “说明书”,比如:

标清楚哪个是数据库(【DB_ID】公司数据)、哪个是表(# 员工表);每个列都写明白:叫什么名(姓名)、存的是什么类型的数据(文本)、有没有特殊意义(比如 “员工 ID” 是主键,用来关联其他表),还给几个例子(比如姓名列的例子:张三、李四)。
这份 “说明书” 比之前的版本更清楚,比如之前的 “说明书” 不标数据类型,模型可能把数字当成文本,查错结果;现在标了,模型就不会弄错了。

XIYAN-SQL 在几个常用的 “考试”(测试数据集)里都考得不错:

查 SQLite 数据库的 “Spider 测试”:准确率快 90%(89.65%),比 GPT-4o 还高不少;查 PostgreSQL 数据库的 “SQL-Eval 测试”:准确率近 70%(69.86%),比 Gemini 1.5 Pro、DeepSeek 这些模型都准;查图数据库的 “NL2GQL 测试”:之前的模型准确率最高才 18%,XIYAN-SQL 直接冲到 41.20%;更难的 “Bird 测试”(数据库和训练时不一样,考验适应能力):准确率 72.23%,只比最好的方法低一点点,而且只用了 5 个候选答案,对方用了 21 个,效率更高。更懂数据库:M-Schema 这份 “说明书” 让模型不迷路;更多思路:又训练又给例子,生成多个 SQL 候选,不怕漏;更会挑错:专门的 “裁判” 模型,不盲目跟风选多数,选真正对的。

而且阿里还把相关工具开源了,普通人也能拿来用,以后不懂 SQL 也能轻松查数据了。

XIYAN-SQL 通过 “多生成器集成 + 优化 schema 理解 + 精准候选选择”,为 NL2SQL 任务提供了高效解决方案,核心贡献包括:

方法创新:提出 M-Schema 提升 schema 理解精度,设计两阶段多任务微调与实体掩码 ICL 生成器,兼顾 SQL 质量与多样性;性能突破:在 Spider、SQL-Eval、NL2GQL 三大数据集上实现 SOTA,在 Bird 开发集保持竞争力,验证了在不同数据库类型与场景的适应性;工程价值:开源了 M-Schema 构建工具(https://github.com/XGenerationLab/M-Schema),支持 MySQL、PostgreSQL 等主流数据库,同时提供在线访问入口(https://bailian.console.aliyun.com/xiyan),便于实际应用。

来源:码韵匠道

相关推荐