曾在Text-to-SQL方向做過深入的研究,以此為基礎研發的DataAgent在B2B平臺成功落地,因此作為第一作者,在 The Web Conference (WWW’2025, CCF-A) 會議上發表了相關論文:
SQLord: A Robust Enterprise Text-to-SQL Solution via Reverse Data Generation and Workflow Decomposition。
此文章是該論文的中文版。
閱讀原文更清晰
摘要
將自然語言轉換為 SQL 語句(NL2SQL)對于以數據驅動的商業應用至關重要。然而,現有框架大多依賴開源數據集進行訓練,難以應對復雜的業務邏輯,并且缺乏用于微調的領域專屬數據。此外,現有的評估方法通常依賴標注數據和可執行的數據庫環境,而這些在實際應用中往往較為稀缺。
為了解決上述問題,我們提出了 SQLord,一個面向企業級應用的 NL2SQL 方案。首先,SQLord 引入了一種反向數據生成方法,將原始 SQL 語句轉化為帶標注的數據,用于有監督微調(SFT);其次,提出了一種基于自動化工作流生成的復雜查詢分解方法;此外,還構建了一個全面的 GPT-Judge 評估框架,包括Execution 評估(EXE)、Query-SQL 評估(QSE)和 SQL-SQL 評估(SSE)三種評估方案,以適應多種應用場景。
離線測試結果表明,SQLord 的表現顯著優于當前的先進基線方法;在線準確率持續超過 90%,充分體現了 SQLord 在復雜真實場景中的優勢與有效性。目前,SQLord 已在全球最大的 B2B 電商平臺多個場景中成功落地應用。
1. 引言
自然語言轉 SQL(NL2SQL),仍然是自然語言處理與關系型數據庫領域中的一個關鍵挑戰 [9]。過去,該領域的研究主要集中于識別并抽象出問題與 SQL 之間的模式,并通過在 NL2SQL 數據集上訓練的編碼器-解碼器架構對這些模式進行優化 [5, 6, 7, 15]。大型語言模型(LLMs)的出現,為解決 NL2SQL 問題帶來了方法論上的范式轉變 [4, 12, 13, 14]。Gao 等人 [4] 的研究成果尤為突出,他們利用 GPT-4 [11] 在 Spider 排行榜 [2] 上取得了第一名,Execution準確率達到 86.6%。與傳統方法不同,基于 LLM 的 NL2SQL 框架的主要挑戰在于如何通過提示工程(Prompt Engineering)策略性地引導生成精準的 SQL 語句。這一過程需要對問題表達進行精細的優化 [3, 12],精心選擇示例 [8, 10],并對這些示例進行系統化組織。
盡管基于 LLM 的方法在自然語言理解與 SQL 生成方面取得了進展,但在實際的企業級應用中仍面臨諸多挑戰。例如,如圖 1 所示,當一位 B2B 電商平臺用戶詢問過去六個月中自己與競爭對手的暢銷產品時,會遇到以下問題:
- 首先,定義“暢銷”(是銷量最高還是銷售額最高)需要領域知識來理解業務邏輯;
- 其次,LLM 的上下文學習能力在處理復雜的 NL2SQL 任務時往往表現不足。盡管可以通過微調模型來提升性能,但由于實際應用中的大多數 SQL 未被標注,缺乏可用于訓練的標注數據,這一方法也受到限制;
- 最后,NL2SQL 性能評估較為困難,因為 SQL 語句在字段順序或條件表達(如 “sales >= 100” 與 “sales > 99”)上存在多樣性,使得基于字符串匹配的評估方法不夠準確,尤其是在查詢結果為空的情況下更加復雜。
為了解決 NL2SQL 在真實場景中的應用難題,我們提出了 SQLord。首先,我們引入了一種數據反向生成方法,利用開發者日常編寫的 SQL 語句及其注釋(COMMENT),生成 <SQL, COMMENT> 數據對。這些數據對被用于訓練反向生成模型 RevLLM,該模型可以為 SQL 語句生成自然語言描述(可以看做是用戶的Query)。RevLLM 能夠從日常開發中編寫的原始 SQL 中自動生成高質量的 <Query, SQL> 數據對,從而有效緩解領域特定 NL2SQL 微調所面臨的數據稀缺問題;其次,我們提出了一種結合領域知識與自動工作流生成的任務分解策略,該方法可將復雜查詢系統性地分解為多個簡單的子任務,從而有效應對現實業務中常見的復雜邏輯,如多表連接和 SQL 嵌套;最后,我們構建了一個靈活的基于 GPT-Judge 的評估框架,適用于三類場景:
- EXE(執行評估):比較兩個 SQL 語句的執行結果;
- QSE(Query-SQL 評估):通過大型語言模型評估自然語言 Query 與 SQL 語句之間的一致性;
- SSE(SQL-SQL 評估):利用 LLM 比較兩個 SQL 在結構和語義上的一致性。
大量離線實驗驗證了 SQLord 在解決關鍵 NL2SQL 問題上的有效性;在線測試也證實了 SQLord 在實時查詢處理中的可擴展性與穩定性。SQLord 已成功部署于全球最大的 B2B 電商平臺中,并支持多個核心業務場景。
2. 框架
2.1 反向數據生成
在特定領域中,標注好的 <Query,SQL> 數量稀缺,這為 NL2SQL 模型訓練帶來了重大挑戰。為了解決這一問題,我們提出了一種反向數據生成方法,如圖 2(a) 和 (b) 所示。具體來說,我們使用一小部分標注好的 <SQL, COMMENT> 對來訓練一個反向生成模型,稱為 RevLLM。訓練數據集記作: D t r a i n = { ( s j , c j ) ∣ j = 1 , … , m } D_{train} = \{(s_j, c_j) | j = 1, …, m\} Dtrain?={(sj?,cj?)∣j=1,…,m},其中, s j s_j sj? 表示第 j j j 條 SQL 語句用作為模型的輸入, c j c_j cj? 為其對應的 COMMENT 作為輸出。
訓練好的 RevLLM 模型隨后被用于對大量的原始 SQL 語句 S = { s 1 , s 2 , . . . , s n } S = \{s_1, s_2, ..., s_n\} S={s1?,s2?,...,sn?}生成大規模偽標注的 <Query,SQL> 數據對。這些原始 SQL 同樣來自日常開發,對于每一條 SQL 語句 s i s_i si?,RevLLM 生成其對應的自然語言描述 q i q_i qi?,即 Query。該過程可以形式化為:
q i = RevLLM ( s i ; θ ) q_i = \text{RevLLM}(s_i; θ) qi?=RevLLM(si?;θ)
其中, θ \theta θ 為模型參數。
最終生成的數據集為:
D g e n = { ( q i , s i ) ∣ i = 1 , . . . , n } , D_{gen} = \{(q_i, s_i) | i = 1, ..., n\}, Dgen?={(qi?,si?)∣i=1,...,n},
它作為一個標注語料集,用于后續模型訓練。
接下來,我們使用生成的數據集 D g e n D_{gen} Dgen? 對開源大語言模型(如 Qwen [1])進行微調,得到一個面向特定業務場景的 NL2SQL 模型,稱為 SQLLM。該模型通過優化以下損失函數進行訓練:
其中:
- ? \phi ? 表示 SQLLM 模型的參數,
- q q q 是自然語言查詢,
- s s s 是 SQL 語句,
- s t s_t st? 是 SQL 中的第 t 個 token,
- s < t s^{<t} s<t 是 s t s_t st? 之前的所有 token 組成的前綴。
2.2 自動化工作流生成
自動化處理復雜業務 Query 的關鍵在于:將高層次目標拆解為更小、更簡單、可管理的子任務,并按照其依賴關系順序執行。這個過程可被視為一種“檢索增強生成”(Retrieval-Augmented Generation,RAG)方式,結合領域知識與表結構檢索動態生成子任務,以應對子任務之間的順序和并行特性。
2.2.1 檢索增強
如圖 2? 所示,給定用戶查詢 q q q,第一步是從領域知識庫 K \mathcal{K} K 和表結構庫 T \mathcal{T} T(TableHub) 中檢索相關信息。該步驟提供了數據庫的基本上下文與結構信息,確保后續任務拆解既滿足業務需求,又符合底層數據結構:
d q = RA ( q ; K , T ) d_q = \text{RA}(q; \mathcal{K}, \mathcal{T}) dq?=RA(q;K,T)
其中, RA ( ? ) \text{RA}(·) RA(?) 表示基于向量相似度的檢索系統,用于收集特定領域知識和數據庫模式信息。輸出 d q d_q dq? 表示全面的查詢上下文。
2.2.2 動態任務生成
接下來,查詢 q q q 被逐步分解為子任務 t 1 , t 2 , . . . , t k t_1, t_2, ..., t_k t1?,t2?,...,tk?,通過一個生成器 G ( ? ) \text{G}(·) G(?)(例如 Qwen 這樣的 LLM)實現。每個子任務 t i t_i ti? 依賴于前序任務的結果 { r 1 , . . . , r i ? 1 } \{r_1, ..., r_{i-1}\} {r1?,...,ri?1?} 以及分析階段檢索到的信息。生成器 G ( ? ) \text{G}(·) G(?) 在任務拆解過程中會考慮上下文 d q d_q dq? 和中間結果,以實現動態調整:
t i = G ( q , d q , { r 1 , . . . , r i ? 1 } ) t_i = \text{G}(q, d_q, \{r_1, ..., r_{i-1}\}) ti?=G(q,dq?,{r1?,...,ri?1?})
這種方式確保任務的拆解不僅滿足原始查詢的需求,也保證子任務之間的依賴關系。
2.2.3 SQL 生成與執行
對于每一個子任務 t i t_i ti?,使用訓練好的 SQLLM 生成對應的 SQL 語句 s i s_i si?,該模型融合了領域知識和表結構信息。隨后,這條 SQL 語句在數據庫上執行,得到結果 r i r_i ri?:
s i = SQLLM ( t i , d q ; ? ) , r i = E ( s i ) , s_i = \text{SQLLM}(t_i, d_q; \phi), \quad r_i = \mathcal{E}(s_i), si?=SQLLM(ti?,dq?;?),ri?=E(si?),
其中, E ( ? ) \mathcal{E}(·) E(?) 表示 SQL 執行引擎, ? \phi ? 為模型 SQLLM 的微調參數。
如圖 2(d) 所示,子任務 t 1 , t 2 , . . . , t k t_1, t_2, ..., t_k t1?,t2?,...,tk? 會根據其依賴關系進行執行:當子任務相互獨立時,可并行執行;若存在依賴關系,則需順序執行。這種混合執行策略確保了查詢處理的效率與靈活性。
2.2.4 結果匯總
當所有子任務執行完畢后,中間結果 r 1 , r 2 , . . . , r k {r_1, r_2, ..., r_k} r1?,r2?,...,rk? 會被聚合,生成最終結果 r q r_q rq?,用于回答最初的用戶查詢 q q q。這個聚合步驟可以直接合并多個子結果,也可以使用大語言模型進行總結、提煉并生成最終答案:
r q = Summary ( { r 1 , … , r k } ) , r_q = \text{Summary}(\{r_1, \dots, r_k\}), rq?=Summary({r1?,…,rk?}),
這種類 RAG 的方法確保了復雜業務查詢的系統化處理。通過基于檢索知識的動態任務生成和適應性的執行策略,該流程能高效應對復雜的任務依賴,適用于大規模真實世界的應用場景。
3. 實驗
我們在開源數據集 Spider [2] 以及兩個企業場景中人工標注的數據集上進行了大量的離線評估,并在全球最大的 B2B 電商平臺上多個真實應用場景中對 SQLord 進行了在線驗證。
數據集 該數據集包含 6000 對 <Query, SQL> 樣本,來自兩個在線業務場景:1. 海關進出口數據問答:用于貿易數據分析;2. 智能選品:用于幫助商家進行商品采購。這些數據真實反映了全球最大 B2B 電商平臺中自然語言轉 SQL(NL2SQL)任務的復雜性。此外,還使用了 Spider 數據集,這是一個由 11 位耶魯大學學生標注的、開源的大規模跨領域 NL2SQL 數據集。
實現 以 Qwen2-7B-Instruct(簡稱 Qwen)為基礎大語言模型實現 [1]。反向數據生成模型 RevLLM 在 73,589 對 <SQL, COMMENT> 樣本上訓練,并生成了 35,948 對標注的 <Query, SQL> 數據,用于微調 SQL 模型(SQLLM)。訓練設置為 3 個 epoch,學習率為 1e-5,batch size 為 1。所有實驗均在 8 塊 NVIDIA H100 GPU 上進行,評估標準包括:
- EXE:執行準確率(Execution Accuracy)、
- QSE:Query 與 SQL 的一致性(Query-SQL Consistency)、
- SSE:SQL 之間的結構與語義等價性(SQL-SQL Equivalence)。
![]() | ![]() |
---|---|
![]() | ![]() |
3.1 離線評估
我們在兩個數據集上評估了 SQLord:一個是由兩個企業場景中標注的 6000 個 <Query, SQL> 對組成的真實場景數據集(Real-World Dataset),另一個是 Spider 數據集。評估指標包括執行準確率(EXE)、Query-SQL 一致性(QSE)和 SQL-SQL 等價性(SSE)。我們將 SQLord 與多個基線模型進行對比:Qwen;使用上下文學習的 GPT-4 [11];基于 GPT 的框架 DIN-SQL (GPT) [12] 和 DAIL-SQL (GPT) [4];以及以 Qwen 為基礎 LLM 的 SQLord (Qwen)。結果如表 1 和表 2 所示。
SQLord 在所有基線上表現最優,其中 SQLord (Qwen) 在兩個評估數據集上均取得了最高分。在真實場景數據集上,其 EXE 達到 86.5%,比 DAIL-SQL (GPT) 高出 13.6 個百分點;在 Spider 數據集上達到 87.4%,展現了其泛化能力。此外,QSE 和 SSE 分數的一致性差異(±7%)進一步驗證了 GPT-Judge 的可靠性,EXE 與 GPT-Judge 之間的穩定差距(QSE 為 ±7%,SSE 為 ±1%)也表明它作為一種不依賴于執行結果的評估方法是有效的。這些結果突出了 SQLord 在多樣化任務中的穩健性。
3.2 消融實驗
為了評估 SQLord 核心組件的貢獻,我們在真實場景數據集上使用 Qwen 作為基礎 LLM 進行了消融實驗。測試的配置包括:基礎 Qwen 模型、加入反向數據生成、加入工作流生成,以及完整的 SQLord 框架。結果如表 3 所示,表明每一個組件都顯著提升了 SQLord 的性能。反向數據生成和工作流生成帶來了最大的性能提升,其中 SQLord (Qwen) 實現了 86.5% 的 EXE 得分、93.2% 的 QSE 得分以及 85.8% 的 SSE 得分,分別比基礎 Qwen 模型提高了 35.2%、35.1% 和 34.1%。
3.3 在線評估
SQLord (Qwen) 被應用于兩個企業應用場景中,以評估其在真實環境下生成 SQL 語句的準確性,評估指標包括執行準確率(EXE)、Query-SQL 一致性(QSE)和 SQL-SQL 等價性(SSE)。我們對比了上線前后的實驗性能,結果如表 4 所示。結果表明,SQLord 在兩個場景中均表現出色,EXE 得分有顯著提升:在“關務進出口助手”場景中提升了 15.6%,在“智能選品”場景中提升了 16.4%,凸顯了其在應對復雜真實查詢時的穩健性和適應性。
4. 結論
本文提出了 SQLord, 一個面向企業的 NL2SQL 框架,通過反向數據生成、工作流分解以及穩健的評估機制,有效應對了領域特定的挑戰。在真實世界數據集上的實驗以及在企業場景中的成功部署表明,SQLord 在處理復雜業務查詢方面相較于現有方法具有更高的準確性和效率。SQLord 的模塊化架構保證了其對不斷變化的業務需求的適應能力,同時與大型語言模型的集成也展示了其在 NL2SQL 領域持續優化和創新的潛力。通過連接學術研究與實際應用,SQLord 為推動各行業智能數據系統的可擴展發展奠定了基礎。
@inproceedings{cheng2025sqlord,title={SQLord: A Robust Enterprise Text-to-SQL Solution via Reverse Data Generation and Workflow Decomposition},author={Cheng, Song and Cheng, Qiannan and Jin, Linbo and Yi, Lei and Zhang, Guannan},booktitle={Companion Proceedings of the ACM on Web Conference 2025},pages={919--923},year={2025}
}
閱讀原文
參考文獻
-
2024. Qwen2 Technical Report. (2024).
-
LILY Group at Yale University. 2018. Spider 1.0, Yale Semantic Parsing and Text-to-SQL Challenge. (2018). https://yale-lily.github.io/spider
-
Xuemei Dong, Chao Zhang, Yuhang Ge, Yuren Mao, Yunjun Gao, Lu Chen, Jinshu Lin, and Dongfang Lou. 2023. C3: Zero-shot Text-to-SQL with ChatGPT. CoRR abs/2307.07306 (2023).
-
Dawei Gao, Haibin Wang, Yaliang Li, Xiuyu Sun, Yichen Qian, Bolin Ding, and Jingren Zhou. 2024. Text-to-SQL Empowered by Large Language Models: A Benchmark Evaluation. Proceedings of the VLDB Endowment 17, 5 (2024).
-
Binyuan Hui, Ruiying Geng, Lihan Wang, Bowen Qin, Yanyang Li, Bowen Li, Jian Sun, and Yongbin Li. 2022. S2SQL: Injecting Syntax to Question-Schema Interaction Graph Encoder for Text-to-SQL Parsers. In Findings of the Association for Computational Linguistics: ACL 2022, Dublin, Ireland, May 22–27, 2022. Association for Computational Linguistics, 1254–1262.
-
Haoyang Li, Jing Zhang, Cuiping Li, and Hong Chen. 2023. Resdsql: Decoupling schema linking and skeleton parsing for text-to-sql. In Proceedings of the AAAI Conference on Artificial Intelligence, Vol. 37. 13067–13075.
-
Jinyang Li, Binyuan Hui, Reynold Cheng, Bowen Qin, Chenhao Ma, Nan Huo, Fei Huang, Wenyu Du, Luo Si, and Yongbin Li. 2023. Graphix-t5: Mixing pre-trained transformers with graph-aware layers for text-to-sql parsing. In Proceedings of the AAAI Conference on Artificial Intelligence, Vol. 37. 13076–13084.
-
Jiachang Liu, Dinghan Shen, Yizhe Zhang, Bill Dolan, Lawrence Carin, and Weizhu Chen. 2022. What Makes Good In-Context Examples for GPT-3?. In Proceedings of Deep Learning Inside Out: The 3rd Workshop on Knowledge Extraction and Integration for Deep Learning Architectures, DeeLIO@ACL 2022, Dublin, Ireland and Online, May 27, 2022. Association for Computational Linguistics, 100–114.
-
Xinyu Liu, Shuyu Shen, Boyan Li, Peixian Ma, Runzhi Jiang, Yuyu Luo, Yuxin Zhang, Ju Fan, Guoliang Li, and Nan Tang. 2024. A Survey of NL2SQL with Large Language Models: Where are we, and where are we going? CoRR abs/2408.05109 (2024).
-
Linyong Nan, Yilun Zhao, Weijin Zou, Narutatsu Ri, Jaesung Tae, Ellen Zhang, Arman Cohan, and Dragomir Radev. 2023. Enhancing text-to-SQL capabilities of large language models: A study on prompt design strategies. In Findings of the Association for Computational Linguistics: EMNLP 2023. 14935–14956.
-
OpenAI. 2023. GPT-4 Technical Report. CoRR abs/2303.08774 (2023). https://doi.org/10.48550/arXiv.2303.08774
-
Mohammadreza Pourreza and Davood Rafiei. 2023. DIN-SQL: Decomposed In-Context Learning of Text-to-SQL with Self-Correction. In Advances in Neural Information Processing Systems 36: Annual Conference on Neural Information Processing Systems 2023, NeurIPS 2023, New Orleans, LA, USA, December 10–16, 2023.
-
Nitarshan Rajkumar, Raymond Li, and Dzmitry Bahdanau. 2022. Evaluating the Text-to-SQL Capabilities of Large Language Models. CoRR abs/2204.00498 (2022).
-
Immanuel Trummer. 2022. CodexDB: Synthesizing code for query processing from natural language instructions using GPT-3 Codex. Proceedings of the VLDB Endowment 15, 11, 2921–2928.
-
Bailin Wang, Richard Shin, Xiaodong Liu, Oleksandr Polozov, and Matthew Richardson. 2020. RAT-SQL: Relation-Aware Schema Encoding and Linking for Text-to-SQL Parsers. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, ACL 2020, Online, July 5–10, 2020. Association for Computational Linguistics, 7567–7578.