技術整理 · 業界 + 學界

大表也跑不動時,
怎麼評 Text-to-SQL 的 Execution Accuracy

當資料表大到無法每次都對完整 production 資料庫執行——成本、延遲、權限、安全都卡——傳統 EX 失靈。本文整理學界、開源專案與大科技公司在這種情境下的實務作法。

Execution Accuracy Test-Suite Accuracy Spider 2.0 LLM-as-Judge Soft-F1 / VES Enterprise
SECTION 01

問題本質 — 為什麼大表讓 EX 失靈

Execution Accuracy 的標準做法:把 predicted SQL 與 gold SQL 都對同一個資料庫執行,比對結果集是否一致。在 Spider 1.0 這種小型乾淨 SQLite(平均不到 10 張表)沒問題,但在企業情境會撞牆。

成本與延遲

對 TB 級的 BigQuery / Snowflake 倉儲反覆跑 query,又慢又貴。Spider 2.0 的 gold query 常超過 100 行。

權限與安全

Production 含 PII / 機敏資料,eval pipeline 不一定能直接連線執行。

環境不可得

私有資料、跨系統 workflow,在 eval 時根本無法重建。

單庫偽陽 / 偽陰

在固定資料內容上比結果,語意不同的 query 可能巧合回傳相同結果(false pass),或語意相同卻因資料差異 false fail。

具體數字:原始 Spider metric 在固定資料庫上比對,平均有約 2.5% 的 false negative rate,最差情況達 8.1%。這正是「單一資料庫執行比對」不可靠的證據。

因此業界與學界發展出四條主線,核心精神都是「不要放棄執行,而是把執行縮小」

大表無法隨意執行 A · 縮小資料 distilled test suite B · 縮小 schema oracle / 相關表 C · 縮到語意層 LLM-judge / Soft-F1 D · production proxy 人+LLM 評審
四條主線:把「執行」從完整大表縮小到可負擔的範圍
SECTION 02

學界作法 — Top Conference Papers

2.1 Test-Suite Accuracy / Distilled Test Suites(EMNLP 2020)

不要在一個大資料庫上比結果,而是蒸餾出一小組「小而高 code coverage」的資料庫。

方法核心:從大量隨機產生的資料庫中,挑出能讓 gold query 達到高 code coverage 的最小子集,evaluation 時只在這個 distilled test suite 上比對 denotation(結果),即可算出語意正確率的一個緊上界(tight upper-bound),而且效率極高。作者用此法評測 Spider leaderboard 上 21 個模型,並人工驗證 100 個案例皆正確。

Fuzzing 產生 neighbor queries

對 gold query 做微擾——例如 > 34 vs >= 34 vs > 35——產生語意相近但不同的 query。

隨機產生大量小資料庫

產生許多 random databases,目標是找出能「區分 gold 與這些 neighbor」的資料內容。

蒸餾出最小高覆蓋子集

挑出讓 gold query 達高 code coverage 的最小資料庫組,即 distilled test suite。

在小 suite 上比 denotation

predicted query 只在這個小 suite 上跑並比對結果——執行成本被壓到極低,同時大幅降低 false pass / false fail。

為什麼解決「大表」:你不需要在原始大資料庫上跑,而是在「特製的小資料庫」上跑。已成為 Spider、SParC、CoSQL 的官方 metric,並涵蓋 Academic、ATIS、Advising、Geography、IMDB、Restaurants、Scholar、Yelp 共 11 個資料集。

Zhong, Yu, Klein · Semantic Evaluation for Text-to-SQL with Distilled Test Suites · EMNLP 2020 · arXiv:2010.02840

2.2 Spider 2.0(ICLR 2025 Oral)— 企業級評測框架

直接面對「真實企業大資料庫」:632 個來自真實資料應用的 workflow 問題,資料庫常超過 1,000 欄(極端可達 3,000+ 欄),跑在 BigQuery、Snowflake 等雲端系統上。它在「大到無法隨便跑」這件事上提供了關鍵工程設計:

Lei et al. · Spider 2.0 · ICLR 2025 Oral · arXiv:2411.07763

2.3 Execution-Guided Self-Consistency(Snowflake AI Research, 2025)

主要是生成方法,但其評測觀念對「大表」很有用:用執行層級的等價(execution-level equivalence)而非結構比對判斷兩 query 是否相同,並引入 exact 與 approximate execution-based similarity,以 Minimum Bayes Risk(MBR)decoding 框架做理論支撐。

semantic-equiv(q1, q2) ≈ sim( exec(q1) , exec(q2) )
關鍵:approximate similarity 可在資料子集 / sample 上做近似比對,不必在完整大表上算精確結果

Borchmann & Wydmuch · Query and Conquer · Snowflake AI Research 2025 · arXiv:2503.24364

2.4 不執行的近似 metric:Soft-F1 與 LLM-as-Judge

Soft-F1

對結果集做部分配分——計算 predicted 與 gold 結果的重疊。100 列中對 99 列,Soft-F1 給高分而 EX 直接給 0。適合「能跑但結果未必完全相同」時提供細緻訊號與除錯依據。

LLM-as-Judge

當執行根本不可能(私有資料缺失、環境錯誤),用強力 LLM 比較 predicted 與 gold SQL 的語意邏輯。客觀性低於執行,但與人類判斷相關性高。

2.5 Enterprise 綜述:實驗室數字搬不到企業

現實落差:Spider leaderboard EX 從 2023/03 的 ~40% 升到 2025/04 的 ~76%;但在 Spider 2.0 上,2025/04 最佳模型 EX 僅約 31%;Uber 自家 eval set 上與 ground-truth 表的重疊也僅約 50%。大型 schema 與語意歧義是核心挑戰。

Text-to-SQL for Enterprise Data Analytics · 2025 · arXiv:2507.14372

SECTION 03

開源專案 — 可直接拿來用

主要開源評測工具
專案用途連結
taoyds/test-suite-sql-evalTest-Suite Accuracy 官方評測程式,涵蓋 11 個任務;Spider / SParC / CoSQL 官方 metric。github
ruiqi-zhong/TestSuiteEval產生 neighbor queries 與 random databases(fuzzing + distillation)的程式,搭配上者使用。github
xlang-ai/Spider2Spider 2.0 官方 repo:Spider-Agent 框架、lite/snow/dbt 設定、oracle ground-truth tables、免 Docker 快速 benchmark。github
RelationalAI/xlang-spider2Spider 2.0 fork,含 BigQuery / Snowflake 存取設定指南。github

實務組合建議

中小型可重建資料庫

直接用 test-suite-sql-eval 蒸餾出小 test suite,把執行成本壓到最低。

企業大倉儲(BigQuery / Snowflake)

參考 Spider 2.0 的 oracle tables 模式,只在 gold query 用到的表上執行;agent 設定可參考 spider-agent-lite / snow。

完全不能執行的私有資料

退回 Soft-F1(若能取得結果集樣本)或 LLM-as-Judge(純比語意)。

SECTION 04

大科技公司的技術文章

Uber — QueryGPT

Uber 的 SQL 每天要在 TB 級資料上跑,因此 eval 不依賴對完整資料庫逐列比對結果集,而是建一套標準化評測程序:

另見 Uber 的 Prompt Engineering Toolkit:內建 LLM-as-Judge 與 code-based evaluator,並設「通過 eval threshold 才能上 production」的 gatekeeping。

QueryGPT (2024) · Prompt Engineering Toolkit (2024)

LinkedIn — SQL Bot

LinkedIn 建了客製化 benchmark 框架:用量身打造的 eval set、明確 metric、與人類+LLM 共同評審(human-plus-LLM judging)來維持準確率、降低幻覺,並把 benchmarking 當成整合進產品開發的持續流程而非一次性任務。本質上避開「對 production 大表逐列比對」的成本——用人+LLM 對語意與相關性評分。

LinkedIn Engineering · SQL Bot(轉述見 Rincón Herrera, 2025

Pinterest — Text-to-SQL

Pinterest 的關鍵啟發:把 table retrieval(找對表)這個元件單獨評測,用過往 table search 的 offline 資料,先確保 embedding-based table search 不比舊的 text-based search 差——也就是把「找對 schema 子集」當成可獨立評測的子問題。整體 Text-to-SQL 的初期評測主要拿來對齊文獻數字(在 Spider 上驗證實作),而非在自家大資料上做 result-level EX。

How we built Text-to-SQL at Pinterest (2024)

Snowflake / Cortex Analyst 的觀察

第三方評測指出:除了 EX,還可加上 Efficiency——query 是否對倉儲架構最佳化(join order、是否用到 Snowflake 特定優化)。對大倉儲而言,效率本身就是一個要評的維度,因功能正確但低效的 query 會吃光資源。對應到學界的 Valid Efficiency Score(VES):評正確性的同時衡量執行效率。

Trust3 AI · Bridging the Language Gap (2025)

SECTION 05

決策樹 — 你該用哪種作法?

資料庫能在 eval 時重建嗎?
├─ 能,且不大              → 標準 EX + Test-Suite Accuracy(蒸餾小 test suite)
├─ 能,但很大(TB 級雲倉)  → Oracle / ground-truth tables 子集執行(Spider 2.0 模式)  + Efficiency / VES 一併評
└─ 不能(私有 / 無環境)
     ├─ 拿得到結果集樣本     → Soft-F1(部分配分)
     ├─ 只能比 query 本身     → LLM-as-Judge(語意比對)+ schema overlap proxy
     └─ production 線上監控   → 人+LLM 評審 + golden set + 多訊號 proxy(Uber / LinkedIn 模式)

一句話總結:「大表無法隨意執行」時,共識不是「放棄執行」,而是把執行縮小——縮小資料(distilled test suite)、縮小 schema(oracle / relevant tables)、或縮小到語意層(LLM-judge / schema-overlap proxy),再搭配人+LLM 評審與 golden set 在 production 持續監控。

SECTION 06

參考資料