← 返回博客

什么!我把 SQL 编辑器装进了大模型?

NL2SQLLLM算法

问题

大模型生成 SQL 时,语法错误是最常见的问题之一。即使是最强的模型,在面对复杂的数据库 schema 时,也会生成不合法的列名、错误的 JOIN 条件、甚至不存在的函数。

约束解码的核心思想

我们的方案是在模型推理过程中,实时约束 token 的生成空间。简单来说:

  • 当模型要生成表名时,只允许它从当前数据库的真实表名中选择
  • 当模型要生成列名时,只允许它从已选定表的真实列名中选择
  • 当模型要生成 SQL 关键字时,只允许语法上合法的下一个 token

这就像是把一个 SQL 编辑器的自动补全能力,直接嵌入到了大模型的推理过程中。

效果

上线后,SQL 语法错误率降至 0%。该方案作为头条文章发表于阿里云官方微信公众号。