驚!小模型借 FEATHER-SQL,在 NL2SQL 領域掀翻天
技術背景
NL2SQL的發展與挑戰
自然語言到SQL的轉換任務,旨在讓用戶能夠用日常的自然語言從數據庫中獲取所需數據,而無需掌握復雜的SQL語言。隨著大語言模型(LLMs)的興起,這一領域取得了顯著進展。像GPT-4這樣強大的LLMs出現后,催生出了CHASE-SQL 和 XiYan-SQL等先進框架,它們在性能上達到了新的高度。
但這些基于 LLMs 的方法存在明顯的局限性。主流方法大多依賴閉源模型,并且需要調用外部 API,這在醫療、金融等對數據隱私極為敏感的領域,帶來了巨大的數據隱私風險。很多開源研究聚焦于參數規模較大的模型,對參數4B或更少的小語言模型關注不足。而實際應用場景中,許多關系型數據庫部署在高性能但GPU資源有限的系統上,LLMs對計算資源的高要求限制了其在這些場景中的廣泛應用。
小模型在NL2SQL中的困境
小語言模型在處理NL2SQL任務時遇到了不少問題。與大型語言模型相比,小型模型在理解和處理復雜的數據庫結構和長句子時顯得力不從心。它們往往難以把握長段落中的關鍵信息,因此生成的SQL語句經常無法正常運行,有時候還會出現誤解或產生錯誤的結果。現有的基于大模型設計的NL2SQL工具不適合小模型使用,因為這些工具需要很強的理解指令的能力來生成中間步驟,而這是小模型做不到的。如果強行把這些工具用在小模型上,只會讓生成的SQL語句更難執行。
研究的核心貢獻
為了解決小模型在NL2SQL任務中的難題,本文提出了 Feather-SQL 框架。這是一個專門為 SLMs 設計的輕量級框架,通過一系列創新技術,提升了SQL查詢的可執行性和準確性。論文還提出了1+1模型協作范式,將通用聊天模型和微調的SQL專家模型相結合,有效避免了微調SLMs時出現的災難性遺忘問題。通過在BIRD和Spider等數據集上的大量實驗,驗證了Feather-SQL框架和1+1模型協作范式的有效性,為小語言模型在NL2SQL領域的應用提供了新的解決方案。
新興方案
模型/方法 | 方法特點 | 應用場景 |
DIN-SQL | 將NL2SQL任務分解為模式鏈接、難度分類和SQL生成等子任務 | 提高查詢結果的準確性 |
CHESS | 采用多智能體框架,每個智能體專注于特定任務,并結合少量樣本提示策略 | 提升任務處理效率 |
??CodeS?? | 利用增量預訓練與雙向數據增強技術對不同規模的模型進行微調 | 降低計算成本,提升效率 |
Prem-SQL | 專為NL2SQL任務優化的模型 | 在NL2SQL任務中表現良好 |
SQLCoder | 專為NL2SQL任務優化的模型 | 在NL2SQL任務中表現良好 |
方法論
Feather-SQL框架
Feather-SQL框架包含多個關鍵組件,旨在提升SLMs在NL2SQL任務中的性能。
模式修剪:模式修剪的核心功能在于動態簡化數據庫模式。通過評估語義相關性,它能夠從所有表的定義語言(DDL)語句中篩選出與特定查詢直接相關的表,并僅保留這些相關表的DDL用于后續處理步驟。例如,在一個集成了員工信息、部門詳情及項目概況的數據庫環境中,如果用戶發起的查詢請求是獲取某位員工的具體薪資,則模式修剪機制將判定員工信息表為關聯表,而認為部門信息表和項目信息表與此查詢無關。這樣做的目的是減少模型需處理的數據量,減輕處理大規模文本數據的壓力,同時確保關鍵信息得到保留,從而顯著提升后續處理流程的效率與精確度。
模式鏈接:模式鏈接承擔著將自然語言查詢與數據庫模式精準對齊的任務。通過深入的語義解析,該過程能夠從整個數據庫模式中篩選出與查詢請求相關的特定字段。以員工薪酬查詢為例,模式鏈接機制會準確識別并選取“員工”表中的“姓名”字段作為定位個體員工的依據,并選擇“工資”字段來提取所需的薪酬信息。這種高度精確的映射不僅提升了SQL語句生成的質量,還保證了最終查詢結果的準確性與可靠性。
多路徑生成:多路徑生成策略采用了四種不同的提示類型,分別為同時執行模式鏈接與修剪、僅執行模式鏈接、僅執行模式修剪以及不執行任何操作。此策略旨在減少因修剪錯誤及鏈接不準確所引發的風險。在模式修剪過程中若發生失誤,導致關鍵信息被不當移除,則通過其他路徑(例如僅執行鏈接的路徑)仍有可能生成有效的查詢結果。這種多路徑設計顯著提升了框架的整體魯棒性,確保模型在處理各類復雜場景時具備更高的正確查詢生成概率。
多候選生成:多候選生成方法通過并行生成多個SQL查詢,顯著提高了獲得正確結果的概率。為了確保生成的查詢具備多樣性,該模型采用了束搜索(beam search)技術,并對溫度(temperature)和top-p參數進行了精細調校。在每條路徑上均會生成預定數量的候選查詢,以全面探索潛在解決方案的空間。與大型語言模型(LLMs)相比,特定領域語言模型(SLMs)從這種多候選生成策略中獲益更為明顯,這不僅提升了生成查詢的可執行性,還增強了其準確性。
校正:校正步驟旨在解決生成查詢在執行過程中遇到的問題。針對每一個生成的查詢,我們將在數據庫中進行實際運行,并基于其執行結果采取相應措施。對于能夠成功執行的查詢,將直接將其納入可執行SQL查詢列表;而對于執行失敗的情況,則會利用錯誤信息作為反饋,通過自我校正機制生成兩個新的候選查詢。如果這些新生成的查詢能夠正確執行,同樣會被保存下來。這一流程為模型提供了一個動態調整與優化的框架,有助于持續提升所生成查詢的質量。
選擇:采用選擇排序算法對所有可執行查詢進行評估與排序。對于返回結果數量較少的查詢,其評估過程將同時考量查詢本身及其執行結果;而對于返回大量結果的查詢,則主要側重于查詢本身的評估。此過程將迭代三次,最終選取出現頻率最高的查詢作為最優解。通過這種方法,可以最大化滿足用戶需求,并提升查詢的準確度和可靠性。
提示策略
為了更好地發揮 Feather-SQL 框架的性能,論文還提出了兩種提示策略。
提取:鑒于結構化語言模型(SLMs)在嚴格遵守結構約束方面面臨挑戰,采用提取策略可以為這些模型提供更大的自由度來生成響應,從而避免了受到固定結構輸出格式的限制。這種策略主要由詞匯匹配和模式匹配兩種技術組成。其中,詞匯匹配涉及將模型輸出中明確提及的表名或列名與數據庫模式進行對比驗證,僅當這些名稱確實存在于目標數據庫中時才予以采納;而模式匹配則專注于識別模型輸出中的特定預定義模式,例如“answer is”之后的內容,并據此提取相關信息作為答案。通過運用這兩種方法,不僅能夠增強模型生成答案時的靈活性,還能夠在一定程度上規避語法上的局限性,進而提升推理任務的整體準確性。
簡化:簡化策略的核心目標在于減少提示的長度,從而降低計算資源的需求。在Feather-SQL框架下,這一目標通過剔除不必要的細節、采用精煉的指令以及提供最少但足夠有效的示例來達成。該方法不僅避免了序列學習模型(SLMs)處理冗長且復雜的輸入信息,還確保了任務定義的清晰度與簡潔性,進而顯著提升了模型執行任務時的效率。
1+1協作范式
1+1協作范式將 NL2SQL 任務流程中的任務分為推理密集型任務和 SQL 生成任務。推理任務,如模式鏈接和候選評估,需要強大的上下文理解和適應能力;SQL生成任務則要求在查詢合成時具備高精度。為了優化性能,該范式采用兩個專門的模型:通用聊天模型負責推理密集型任務,利用其廣泛的語言和上下文理解能力,避免災難性遺忘;SQL微調模型專注于SQL生成,通過在大規模NL2SQL數據集上的訓練,在SQL特定任務中表現出色,減少幻覺,提高查詢的可執行性和準確性。
通用聊天模型在處理模式鏈接和候選評估等任務時,能夠利用其豐富的語言知識和上下文理解能力,提供準確的推理結果,為 SQL 生成提供可靠的基礎。而 SQL 微調模型則在生成 SQL 查詢時,憑借其在大量數據上訓練得到的專業能力,生成高質量的查詢語句。兩者相互協作,發揮各自的優勢,有效提升了整體的 NL2SQL 性能。
實驗
實驗設置
數據集:實驗選用了 BIRD 和 Spider 這兩個具有代表性的數據集。BIRD 數據集涵蓋 37 個專業領域的數據庫,數據專業性強、復雜度高,是一個極具挑戰性的數據集。由于其 TEST 數據集的專有性,實驗使用公開的 DEV 子集,包含 1534 個獨特的問題-SQL對。Spider 數據集覆蓋 138 個不同領域,與 BIRD 相比,其 SQL 結構和模式相對簡單。實驗使用 Spider 的 TEST 集,包含 2147 個問題-SQL對。
評估指標:采用執行準確率(衡量生成查詢的執行結果與正確答案是否一致)和執行比例(評估生成的SQL查詢能在相應數據庫中無語法錯誤執行的比例)作為評估指標。這兩個指標能夠全面地評估模型在NL2SQL任務中的性能表現,執行準確率反映了查詢結果的正確性,執行比例則體現了查詢的可執行性。
基線方法:對比的基線方法包括直接響應(直接從自然語言問題生成SQL查詢,不進行任何優化)、第一個可執行查詢(利用模型生成多個SQL候選,選擇第一個可執行的查詢)、MAC-SQL(基于LLMs的多階段框架,利用輔助智能體和少樣本思維鏈推理)和CHESS(包含四個專門智能體的多智能體框架,利用局部敏感哈希和向量數據庫檢索數據)。這些基線方法代表了當前NL2SQL領域的不同技術路線,通過與它們對比,可以更直觀地評估Feather-SQL框架的性能優勢。
實現細節:實驗使用了多種通用聊天模型和SQL微調模型,如 Qwen2.5 系列、Yi-Coder-1.5B 等聊天模型,以及Prem-SQL-1.3B 和 CodeS-3B 等 SQL 微調模型。在多候選生成階段,每條路徑生成4個候選查詢,共生成16個候選;校正階段候選數量減少到2個。選擇階段進行3輪選擇,最終通過多數投票確定候選。這樣的設置在保證模型探索多種可能性的同時,也確保了最終結果的可靠性。
主要結果
Feather-SQL的性能表現:在BIRD數據集上,Feather-SQL 在所有通用聊天模型上均展現出卓越性能,執行準確率平均提升約10%,執行比例提升超過20%。這表明Feather-SQL能夠有效提升SLMs在處理復雜領域數據庫查詢時的能力。在SQL微調模型方面,與CodeS結合時在執行準確率和執行比例上都有顯著提高,Prem-SQL在執行比例上也有明顯進步。在Spider數據集上,Feather-SQL同樣顯著提升了SLMs的NL2SQL性能。這進一步驗證了Feather-SQL框架在不同復雜度數據集上的有效性和通用性。
1+1協作范式的效果:在 Feather-SQL 框架下,1+1協作范式使 Prem-SQL 和 CodeS 的執行準確率提高了3- 6%,Prem-SQL 達到了現有 SLMs 中的最優性能。這充分展示了1+1協作范式的優勢,通過合理分工,讓不同的模型發揮各自的專長,從而提升整體性能。不過,與聊天模型搭配時,執行比例有所下降,這是由于 SQL 模型在模式修剪時返回查詢而非預期答案,導致模式過度修剪。但總體而言,該范式顯著提高了不同框架下的準確性,為小語言模型在NL2SQL任務中的應用提供了更強大的支持。
消融實驗
組件貢獻分析:通過一系列的消融實驗,我們系統地移除了框架中的各個組件,并在BIRD DEV數據集上評估了執行準確率和比例的變化。實驗結果表明,任一組件的缺失均會導致上述兩個性能指標的下降,這證實了每個組件對于整體框架性能的重要性。特別值得注意的是,模式修剪組件的去除對執行準確率的影響最為顯著,凸顯了識別并聚焦于相關表格及列在生成精確SQL查詢過程中的關鍵作用。此外,盡管校正步驟的移除對整體效果的影響相對較小,但其仍為提升系統性能貢獻了一定程度的優化。
路徑貢獻分析:分析四種模型中SQL答案的來源,發現“Full Schema & Linking”路徑貢獻最大,其次是“Pruned Schema & Linking”路徑。這表明鏈接在生成正確查詢中起著核心作用,無論模式是否修剪。模式修剪的總貢獻超過25%,進一步證明了各組件在提升查詢準確性和可執行性方面的重要性。
候選大小的影響:研究顯示,隨著候選大小從4增加到16,執行準確率逐漸提高,但超過16后提升不明顯。因此,選擇候選大小為16可以在保證性能的同時平衡計算效率和資源消耗。
總結
本文提出的 Feather-SQL 框架為小型語言模型(SLMs)在 NL2SQL 任務中提供了一種創新且高效的解決方案。該框架的核心技術包括精心設計的組件,如模式修剪、模式鏈接、多路徑與多候選生成、校正及選擇機制,以及配套的提取和簡化提示策略。此外,Feather-SQL 還引入了一種獨特的 1+1 模型協作范式。這些技術相互配合,顯著提升了 SLMs 在執行 NL2SQL 任務時的準確性和可執行性。盡管如此,本研究仍面臨若干挑戰。特別是在實際應用中,由于數據庫結構和數據特征存在極大的多樣性,因此Feather-SQL 框架需要進一步優化以更好地適應更加復雜多變的數據庫環境。雖然 1+1 模型協作范式提高了系統性能,但同時也增加了系統的復雜度。如何在保持高性能的同時簡化模型間的協作流程,將是未來研究的一個重要方向。同時,Feather-SQL 框架也帶來了許多潛在的機會。它為資源受限條件下的高效數據庫交互提供了一個可行方案,并有望在智能數據分析、智能客戶服務等多個領域得到廣泛應用。隨著持續不斷的優化和完善,預計 Feather-SQL 將促進自然語言處理與數據庫交互技術的進步,從而推動人工智能在數據管理和交互方面取得新的突破。可以預見,在未來的研究工作中,當前所面臨的挑戰將會逐漸被克服,而Feather-SQL框架也將繼續演進,為相關領域的技術進步做出更大的貢獻。
結語:
Feather-SQL 又一個 yyds 的 nl2sql 新思路,你學廢了嗎?
·
················END·················
論文地址:???https://arxiv.org/pdf/2503.17811???
Feather-SQL: A Lightweight NL2SQL Framework with Dual-Model Collaboration Paradigm for Small Language Models
