【Text2SQL 論文】MAC-SQL:多個 Agents 合作來解決 Text2SQL

論文:MAC-SQL: A Multi-Agent Collaborative Framework for Text-to-SQL

????

arXiv:2312.11242, 北航 & Tencent

Code: MAC-SQL | GitHub

文章目錄

    • 一、論文速讀
    • 二、MAC-SQL
      • 2.1 Selector agent
      • 2.2 Decomposer agent
      • 2.3 Refiner agent
    • 三、指令微調的 SQL-Llama
    • 四、實驗
    • 五、總結

一、論文速讀

本文提出了一個使用多個 agents 進行互相合作的框架 MAC-SQL 來解決 Text2SQL 任務。

MAC-SQL 主要由 3 種 agents 組成:

  • Selector:通過去除掉 inference 時無關的信息來把一個大的數據庫分解為更小的數據庫
  • Decomposer:通過 prompt 的方法來把一個復雜的 question 分解為漸進性的幾個可以被獨立解決的 sub-questions
  • Refiner:用于檢測和自動改正 SQL 的錯誤

原論文對三者的描述:

Specifically, the Decomposer disassembles complex questions into simpler sub-questions and addresses them sequentially through chain-of-thought reasoning. If required, the Selector decomposes a large database into smaller sub-databases to minimize interference from irrelevant information. Meanwhile, the Refiner utilizes an external tool for SQL execution, acquires feedback, and refines any incorrect SQL queries.

下面是基于三個 agents 來實現 MAC-SQL 的算法流程:

1717468121886(1)

二、MAC-SQL

2.1 Selector agent

The Selector agent is designed to automatically decompose a large database into smaller sub-databases to minimize interference from irrelevant information.

由于現實世界種的數據庫特別大,包含了許多 tables 和 columns,一次 LLM 的 API Call 可能無法處理這些多的 schemas,因此需要使用 Selector 來去除掉無關信息并得到的一個較小的 schema。

如下是一個使用 Selector 的 prompt 示例:

20240604103503

可以看到,Selector 的 prompt 包含四部分:task desc、instruction、demonstrations 和一個 text example,期望的輸出是一個 JSON,里面枚舉了所有選擇后的 tables,并將它們分成 3 類:

  • “keep_all”
  • “drop_all”
  • 一個相關的 column list

這個 JSON 中的 schema 輸入給 Decomposer agent。

2.2 Decomposer agent

The primary purpose of the Decomposer is to systematically decompose complex questions into progressively refined sub-questions, which can then be solved individually.

當面對復雜問題時,生成的 SQL 經常會有缺陷,因此一個自然的想法就是像 CoT 一樣將其分解為 sub-questions 再解決。

圖示:

20240604104837

可以看到,最后一個 sub-question 就是原來的 user question 了,所以最后一步生成的 SQL 就是 Decomposer 輸出的 SQL。

具體來說,Decomposer 可以用 CoT 或者 least-to-most 兩種 prompt 策略來實現。

2.3 Refiner agent

The primary function of the Refiner is to detect and automatically rectify SQL errors.

對于一個 SQL,Refiner 首先從下面三個角度來診斷:

  • 句法正確性
  • 可執行性
  • DB 檢索后是否為非空結果

如果檢查通過,這個 SQL 被輸出為最終答案,否則,就執行 correction 操作。之后,修正后的 SQL 仍需重新診斷,重復這個過程直至檢查通過或者達到最大重復次數。

具體的 correction 過程包括基于原始 SQL 和錯誤反饋信息或修改引導信號進行推理,生成修改后的結果。

圖示:

20240604110556

最后論文還指出,單靠一個 refiner agent 提供的幫助也是有限的,不可避免還存在一些錯誤的問題,這需要再系統層面進行更多的優化。

三、指令微調的 SQL-Llama

本文基于 Code Llama 7B,使用前面介紹的 3 個 agents 的指令數據進行微調,得到了 SQL-Llama,讓 model 在 database simplification、question decomposition、SQL generation 和 SQL correction 方面的能力得到增強。

用于微調的數據是基于三個 agents 在 BIRD 和 Spider 數據集上得到的。

這個過程的關鍵挑戰是:model 的訓練過程需要平衡它的 complexity 和 performance。也就是需要在維持其較高的 performance 時有效處理 db 相關任務的復雜度。

四、實驗

論文在 BIRD 數據集上做的測試,baseline 只選擇了 LLM-based 的方案,并沒有選擇非 LLM 的 baseline。實驗結果如下圖所示:

20240604113131

論文還做了消融實驗,證明了三個 agents 在提高 acc 方面都發揮了重要的作用。

另外論文還發現,ICL 中增加 demonstrations 的數量可以讓效果更好。

論文最后還給出了 error cases 的統計分析,可以參考原論文。

五、總結

本論文利用多個 agents 合作的思路來解決 Text2SQL 任務,同時提供了一個開源的 SQL-Llama 模型,在 BIRD 數據集上實現了 SOTA 效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24098.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024.06.07【讀書筆記】丨生物信息學與功能基因組學(第十一章 分子水平的系統發生和進化 第四部分)【AI測試版】

讀書筆記四:《生物信息學與功能基因組學》第十一章第四部分 分子系統發生的專用名詞與樹的拓撲結構 在《生物信息學與功能基因組學》第十一章的第四部分,作者介紹了分子系統發生分析中的專用名詞,并詳細解釋了系統發生樹的拓撲結構和分支長…

【Python Cookbook】S02E04 文本模式的匹配和查找 match()、search()、findall() 以及 捕獲組和 + 的含義

目錄 問題解決方案討論 問題 本文討論一些按照特定的文本模式進行的查找和匹配。 解決方案 如果想要匹配的只是簡單文字,通常我們使用一些內置的基本字符串方法即可,如:str.find(),str.startwith(),str.endswith() …

Day49 動態規劃part08

LC139單詞拆分(未掌握) 未掌握分析:將字符串s中的各個字符看成是背包,思考成了多重背包問題單詞就是物品,字符串s就是背包,單詞能否組成字符串s,就是問物品能不能把背包裝滿。拆分時可以重復使用字典中的單詞&#xf…

轉速傳感器介紹

一、概述 RPM(Revolutions Per Minute)轉速傳感器是一種用于測量旋轉機械設備轉速的傳感器。它可以檢測旋轉部件上的特定位置標記(如齒輪、凸起或磁鐵),并根據這些標記的通過頻率來計算轉速。發電額定頻率是50hz和60z…

ubuntu18.04環境下,arduino ide在打開串口監視器時報錯

ubuntu18.04環境下,arduino ide在打開串口監視器時報錯 Exception in thread “AWT-EventQueue-0” java.lang.UnsatisfiedLinkError: /home/lzx/.jssc/linux/libjSSC-2.8_x86_64.so: /home/lzx/.jssc/linux/libjSSC-2.8_x86_64.so: file too short 這個錯誤表明 li…

力扣1574.刪除最短的子數組使剩余數組有序

力扣1574.刪除最短的子數組使剩余數組有序 剩下有序 –> 前面一段 后面一段 有序 前面有序 后面有序 前面最后一項 < 后面第一項先反向遍歷找到right的最小值然后正向遍歷找left的最大值當nums[left] > nums[right]時 right class Solution {public:int findLen…

java線程變量共享

在Java中&#xff0c;線程變量共享可以通過幾種方式實現&#xff1a; 1.實例變量&#xff1a;如果一個實例變量被多個線程共享&#xff0c;你需要確保適當的同步&#xff0c;以避免競態條件。你可以使用synchronized關鍵字或者Lock接口來保護共享變量。 2.靜態變量&#xff1a;…

openh264 降噪功能源碼分析

文件位置 ● openh264/codec/processing/denoise/denoise.cpp ● openh264/codec/processing/denoise/denoise_filter.cpp 代碼流程 說明&#xff1a;從代碼流程可以看到&#xff0c;實現降噪的核心功能主要就是BilateralDenoiseLuma、WaverageDenoiseChroma兩個函數。 原理…

SOA主要協議和規范

Web服務作為實現SOA中服務的最主要手段。首先來了解Web Service相關的標準。它們大多以“WS-”作為名字的前綴&#xff0c;所以統稱“WS-*”。Web服務最基本的協議包括UDDI、WSDL和SOAP&#xff0c;通過它們&#xff0c;可以提供直接而又簡單的Web Service支持&#xff0c;如圖…

代碼隨想錄算法訓練營第十五天| 110.平衡二叉樹、 257. 二叉樹的所有路徑、404.左葉子之和

110.平衡二叉樹 題目鏈接&#xff1a;110.平衡二叉樹 文檔講講&#xff1a;代碼隨想錄 狀態&#xff1a;還可以 思路&#xff1a;計算左右子樹的深度差&#xff0c;遞歸判斷左右子樹是否符合平衡條件 題解&#xff1a; public boolean isBalanced(TreeNode root) {if (root n…

覆蓋路徑規劃經典算法 The Boustrophedon Cellular Decomposition 詳解

2000年一篇論文 Coverage of Known Spaces: The Boustrophedon Cellular Decomposition 橫空出世&#xff0c;解決了很多計算機和機器人領域的覆蓋路徑問題&#xff0c;今天我來詳細解讀這個算法。 The Boustrophedon Cellular Decomposition 算法詳解 這篇論文標題為"C…

nginx配置正向代理忽略證書!!!!!

要繞過證書驗證并忽略SSL證書檢查&#xff0c;可以使用curl的-k或--insecure選項。這允許curl在連接到HTTPS站點時忽略證書錯誤。你可以這樣做&#xff1a; curl -k https://220.181.49.193:10010/sms/11011200002020000001/flv/hls/11010000021321001788_1101000002132100178…

數字模擬EDA研發環境搭建

中小企業數字模擬EDA研發環境部署、集群搭建、網絡配置、硬件咨詢、數據備份、技術指導、環境生命周期維護等&#xff0c;Cadence、Synopsys、Mentor、Keysight、ANSYS&#xff0c;MATLAB、Xilinx等廠商軟件工具安裝調試。 EDA研發環境搭建經驗交流&#xff0c;請加V

【Neo4j】Windows11使用Neo4j導入CSV數據可視化知識圖譜

Windows11使用Neo4j導入CSV數據可視化知識圖譜 序1. 安裝JDK21&#xff08;1&#xff09;下載&#xff08;2&#xff09;安裝&#xff08;3&#xff09;環境配置 2. 安裝Neo4j&#xff08;1&#xff09;下載&#xff08;2&#xff09;解壓安裝&#xff08;3&#xff09;環境配置…

初識C++ · 模板進階

目錄 前言&#xff1a; 1 非類型模板參數 2 按需實例化 3 模板特化 4 模板的分離編譯 前言&#xff1a; 前面模板我們會了簡單的使用&#xff0c;這里帶來模板的進階&#xff0c;當然&#xff0c;也就那么幾個知識點&#xff0c;并不太難。 1 非類型模板參數 先來看這樣…

嵌入式移植jpeglib--Linux交叉編譯ARM平臺

一 、交叉編譯jpeg庫 1.下載源碼tar.gz 2. 源碼目錄下執行 jpeglib配置文件 ./configure CCarm-none-linux-gnueabihf-gcc LDarm-none-linux-gnueabihf-ld --prefix/work/jpeg_arm_lib --exec-prefix/work/jpeg_arm_lib --enable-shared --enable-static --hostarm-none-linu…

經典文獻閱讀之--MGS-SLAM(單目稀疏跟蹤和高斯映射與深度平滑正則化)

Tip: 如果你在進行深度學習、自動駕駛、模型推理、微調或AI繪畫出圖等任務&#xff0c;并且需要GPU資源&#xff0c;可以考慮使用UCloud云計算旗下的Compshare的GPU算力云平臺。他們提供高性價比的4090 GPU&#xff0c;按時收費每卡2.6元&#xff0c;月卡只需要1.7元每小時&…

CiteScore 2023發布,AI Open斬獲45分,位列全球計算機領域前1%

與影響因子&#xff08;IF&#xff09;一樣&#xff0c;引用分數&#xff08;CiteScore&#xff09;同樣是衡量學術期刊影響力的重要指標之一&#xff0c;且大有趕超前者的勢頭。 6 月 6 日&#xff0c;CiteScore 2023 正式發布&#xff0c;人工智能領域可自由訪問的期刊平臺 …

Java 8 中的 Stream API,用于處理集合數據

Java 8 引入了 Stream API&#xff0c;使得處理集合數據變得更加簡潔和高效。Stream API 允許開發者以聲明式編程風格操作數據集合&#xff0c;而不是使用傳統的迭代和條件語句。 一、基本概念 1.1 什么是 Stream Stream 是 Java 8 中的一個新抽象&#xff0c;它允許對集合數…

CSRF 令牌的生成過程和檢查過程

在 Django 中,CSRF 令牌的生成和檢查過程是通過 Django 的 CSRF 中間件 (CsrfViewMiddleware) 和模板標簽 ({% csrf_token %}) 自動處理的。以下是詳細的生成和檢查過程: CSRF 令牌的生成過程 用戶訪問頁面: 當用戶第一次訪問頁面時,Django 會為用戶創建一個會話。如果用戶…