Text2SQL 的准确率怎么评估?执行准确率和语义准确率有什么区别?

第 1208 题 约 2 分钟读完

本文目录
  1. 面试怎么回答
  2. 几种准确率的区别
  3. 评测集怎么建
  4. 评测时要注意
  5. 线上的准确率怎么看
  6. 对外怎么说准确率

面试怎么回答

SQL 完全匹配太严,常用的是执行准确率,即比较生成 SQL 和标准 SQL 的执行结果,但可能因测试数据没有区分度而碰巧一致;语义准确率看逻辑和口径是否正确,需要人工或模型辅助;端到端准确率看用户最终看到的回答。评测集从真实取数需求和历史 SQL 里来,覆盖单表、多表、时间计算、同环比、复杂口径,分难度,并包含应该反问或拒答的问题,标准答案由业务专家审核。比较结果时忽略行列顺序和浮点误差,测试数据要能暴露口径错误,多次运行看稳定性,按类别统计。线上再做抽样复核、收集反馈、统计失败率和空结果率。对外说准确率要讲清楚评测集、口径和分类别的结果。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

智能问数项目做完,老板问「准确率多少?」团队说「90%」。但这 90% 是怎么算的?用什么样的问题集?「对」的标准是什么?面试官问这题,想看你能不能建立一套可信的 Text2SQL 评测方法。

几种准确率的区别

  1. SQL 完全匹配:生成的 SQL 和标准 SQL 文本一致。太严格,同一个查询有很多种写法,基本没人只用这个;
  2. 执行准确率:执行生成的 SQL 和标准 SQL,比较结果集是否一致。这是最常用的指标。但要注意:结果一致可能是巧合(比如测试数据里恰好没有退款订单,漏掉退款条件也能得到相同结果);
  3. 语义准确率:SQL 的逻辑是否符合问题的意图和业务口径,比如是否用了正确的时间口径、是否剔除了测试账号。通常需要人工或者模型辅助判断;
  4. 端到端准确率:用户最终看到的回答(包括数字、解释、图表)是否正确。

评测集怎么建

  • 来源:真实的取数需求和历史 SQL、业务方常问的问题;
  • 覆盖:单表查询、多表关联、时间计算、同环比、排名、口径复杂的指标;
  • 难度分层:简单、中等、复杂分别统计;
  • 包含「不能回答」的问题:数据不存在、问题有歧义,期望行为是反问或拒答;
  • 标准答案:每题有标准 SQL 和期望结果,由熟悉业务的人审核。

评测时要注意

  • 结果比较:忽略列顺序、行顺序(没有 ORDER BY 时)、浮点误差;
  • 测试数据要有区分度:特意准备能暴露口径错误的数据(包含退款、测试账号、跨时区的订单);
  • 多次运行:模型有随机性,同一题跑多次,看稳定性;
  • 按类别统计:总体 90% 可能掩盖了「多表关联只有 60%」的问题。

线上的准确率怎么看

离线评测集再好,也和真实分布有差距。线上可以:

  • 抽样人工复核;
  • 收集用户反馈(点踩、修改 SQL、追问「这个数不对」);
  • 统计 SQL 执行失败率、空结果率;
  • 错误案例持续加入评测集。

对外怎么说准确率

说清楚口径:「在 300 道覆盖核心指标的真实问题上,执行准确率 88%,其中单表查询 96%、多表关联 75%;线上抽样复核的准确率 85%。」比只说一个数字可信得多。