如何快速判定智能问数(Text2SQL)方案是否可用
判定一套智能问数(Text2SQL)方案能不能用,只需要问一个问题:
查询结果出来之前,业务人员能不能确认 "这次问对了"?
能,方案就可落地。不能,榜单准确率再高、功能列表再长、演示再丝滑,都没用。
道理很简单,但 99% 的人搞反了。
为什么准确率这个指标没用
几乎所有 Text2SQL 产品都在卷准确率,Spider 上跑个 85%、90%,拿来说事。
但这是个典型的 "看起来很美" 的指标。Stack Overflow 2025 年的调查显示,只有 2.7% 的专业开发者高度信任 AI 工具。dbt 2026 年基准测试表明,最先进模型的 Text2SQL 准确率仅 64.5%。Thoughtworks 在 2025 年 11 月已将 Text to SQL 调整为 "Hold" 状态。
不过,数字不是重点,重点是逻辑有问题:
即便准确率达到 90%,业务人员怎么知道这一次有没有落在那 10% 里?
数据决策不是抽奖。一个语法正确、语义完全跑偏的 SQL,执行成功返回一个漂亮的结果,但根本不是用户想问的,这种错误,SQL 层面检查不出来,榜单准确率反映不出来,只有业务人员自己知道 "这不是我要的"。
然而业务人员看不懂 SQL。输出 SQL 或者任何只能让机器读的中间格式,等于告诉用户:你只能信我,没法验证。
无法验证的结果,再高的准确率也没有决策价值。
所以,准确率这个指标从一开始就问错了方向。
正确的判定标准:人机双向可读的中间层
问题的本质不是 "能不能做对",而是 "做错了能不能被发现"。
破局方法只有一个:在查询执行之前,加一层业务人员能读懂的中间表示,让用户自己确认意图。
这层中间表示必须同时满足两个条件:
一、人类可读。用接近自然语言的形式、不用技术培训就能看懂。比如 "2023 年北京发往青岛的订单金额汇总" 这种,而不是 JSON、XML、自定义 DSL 或者 SQL。
二、机器可解析。遵循固定结构,能确定性转换成 SQL,100% 准确,不依赖模型猜测。
就这么简单。验证方法也不复杂:
随机拿几个真实业务问题,让业务人员看中间结果。能一眼确认 "对,这就是我要问的",方案就过了底线。看不懂,别的指标再漂亮也没用。
为什么大多数方案做不到
"不就是在中间加一层人话吗?很难吗?"
难在设计理念上。大多数方案的中间层是机器导向的——设计目标是用结构化的中间语法约束 LLM 的输出空间,减少幻觉。JSON 也好、自定义 MQL 也罢,格式是固定了,但代价是人看不懂。业务人员看不懂,校验环节就永远缺失。
而且这条路会恶性循环:中间层设计得越复杂,LLM 越容易语法出错;为了保准确率,不得不把中间层做得很简单,简单到只支持单表查询,多表关联、子查询、复杂指标一概不支持,企业级场景根本用不上。
润乾 NLQ:把 "人确认" 打进方案中
润乾 NLQ 采用了人类可读的路线:LLM 不做复杂推理,只做语义转写,把五花八门的口语整理成标准化的规范文本。后续查询逻辑的准确性,交给规则引擎和人类确认。LLM 不需要懂 SQL、不需要记表结构、不需要做任何决策,只做它最擅长的自然语言理解。
核心思想就一句话:LLM 做翻译,规则做决策,人做确认。
整个流程分三步:自然语言 → LLM 翻译成规范文本(人机双向可读的 DSL)→ 业务人员确认 → 规则引擎确定性转换成 SQL。LLM 不碰 SQL,转换链路完全确定,实施不需要模型微调和 AI 团队,普通开发人员构建词典即可完成部署。
第一步:LLM 把口语翻译成规范文本
LLM 只做一件事:把五花八门的口语表达,整理成标准化的“规范文本”:一种人机双向可读的 DSL。
来看几个例子:
例 1:去掉口语废话
口语输入:嗯…我想看看去年签的订单。
规范文本:去年 订单
“嗯…我想看看”这类口语废话被去掉,只保留核心查询意图。
例 2:口语化条件转标准表达
口语输入:零售价低于 50 元的零件。
规范文本:零售价 小于 50 元 零件
“低于”被标准化为“小于”,更利于机器解析。
例 3:模糊时间转明确条件
口语输入:去年秋天签了多少订单
规范文本:签单日期 2025 年 9 月 至 2025 年 11 月 订单 数
“去年秋天”被识别为明确的时间范围。
例 4:复杂业务术语转标准条件
口语输入:已售罄的商品。
规范文本:库存量是 0 的商品
“已售罄”这种业务黑话,被翻译成明确的字段条件“库存量是 0”。
这些规范文本的共同特点:一看就懂,不用翻译。业务人员不需要任何技术背景,扫一眼就知道“对,这就是我想问的”;或者“不对,这理解偏了”。
第二步:人类做确认
LLM 有幻觉,不一定每次都翻译对。所以必须加一道人类确认的关卡。
比如用户想问“去年没开单的女员工”,LLM 可能翻译成:
【2025 年 签单,女,员工】—— 漏掉了“没开单”这个关键条件
或者【2025 年 签单,金额 是 0,女,员工】—— 把“没开单”理解成“订单金额为零”
这两种翻译语法没问题,但语义却跑偏了。如果不确认直接执行,返回的结果就是错的。
但有了“规范文本”这个中间层,问题在执行前就被拦截了。业务人员看到规范文本,一眼就能发现“这不对”,然后返回修改提问,重新走第一步。
人能确认的,才是能用的。
第三步:规则引擎转 SQL 查数据
用户确认规范文本无误后,进入确定性转换阶段。
规范文本→ SQL,每一步都基于确定的规则和词典,100% 可追溯、可调试。没有 LLM 的“发挥空间”,没有“大概率正确”,只有确定性的转换和确定性的结果。
这个阶段不需要人类参与,也不需要 AI 做任何决策,规则引擎全自动完成。
润乾 NLQ 把 Text2SQL 从“AI 猜你问什么”变成了“你确认 AI 理解对了再执行”。LLM 做它最擅长的翻译,人做他最擅长的是非判断,规则引擎做它最擅长的确定性转换。各司其职,各取所长。
判定 Text2SQL 能不能用,别看榜单、别看功能列表、别看 Demo。就看一个:
业务人员能不能在查询执行前,自己确认 "问对了"。
能确认,就能用。不能确认,就是玩具。
