MAC-SQL:多智能体协作的 Text-to-SQL
MAC-SQL 于 2023 年 12 月发布,是 text-to-SQL 问题中最为明确的以智能体为中心的方案:它不是通过单个提示词生成单个查询,而是由三个专用智能体协作来选择相关的子模式、分解问题,并在执行后修复 SQL。我阅读它是由于之前的两篇文章涵盖了 BIRD(MAC-SQL 提交时登顶的基准测试)和 DIN-SQL(MAC-SQL 所扩展的分解基准),一个自然的问题是:在这些基础上,多智能体封装是否带来了实质性的改进。
论文
“MAC-SQL: A Multi-Agent Collaborative Framework for Text-to-SQL” (Wang 等人, COLING 2025) 针对的是 BIRD 在早期单提示词方法中暴露出的失败模式:具有噪声模式的大型数据库和复杂的多步骤问题会使试图一次性推理所有内容的模型过载。
该架构包含三个智能体。Selector(选择器)在任何 SQL 生成开始之前,通过过滤掉无关的表和列,将大型数据库缩小到相关的子模式。Decomposer(分解器)是核心引擎——它将复杂的自然语言问题分解为子问题,并利用少样本思维链(few-shot chain-of-thought)推理逐步生成 SQL。Refiner(优化器)针对真实的数据库执行候选 SQL,逐字读取任何错误消息,并迭代纠正查询,直到达到最大重试限制。并非所有三个智能体都会在每个查询中激活;较简单的任务会根据复杂度信号跳过 Selector 或 Refiner。
作者还根据该框架产出的结果对 SQL-Llama (Code Llama 7B) 进行了微调,提供了一个较小的开源变体。
核心观点
- 生成前的模式缩减:Selector 在 Decomposer 编写 SQL 之前将数据库过滤为相关的子模式。消融实验确认在 BIRD 开发集上提升了 2.11 个百分点——真实但幅度较小。
- 执行引导的优化:Refiner 读取真实的数据库错误消息并纠正 SQL。这是消融实验中最大的单一贡献者:移除它会导致 BIRD 开发集准确率下降 4.63 个点,超过了移除 Selector (-2.11) 甚至 Decomposer (-3.85) 的影响。
- 条件智能体调度:将较简单的查询绕过 Selector 和 Refiner 可以节省 token,且不会损害简单案例的准确性。
- 开源蒸馏差距:SQL-Llama (7B) 在 BIRD 开发集上达到了 43.94%,而 GPT-4 基准线为 46.35%。考虑到参数量的差异,这一差距并不显著,但微调后的 7B 模型仍落后于 GPT-4+MAC-SQL 的 59.59% 完整测试分数 15 个点以上。
- BIRD 测试结果:59.59% 的执行准确率,在提交时位居榜首,并比 DAIL-SQL+GPT-4 (57.41%) 高出 2.18 个点。
哪些经得起推敲,哪些不能
Refiner 是这里最好的主意,消融实验也证明了这一点。一个能够读取真实数据库错误消息并纠正自身 SQL 的智能体,其行为比 LLM 在真空环境下自我猜测要更有原则——这是 CRITIC “工具交互式批评”原则在 SQL 执行反馈中的直接且具体的应用。
Selector 的贡献是正面的但很微弱。对于拥有数百张表的数据库,它可能更重要;对于 BIRD 的典型模式,它的作用是边际的,而且论文没有报告 Selector 触发的频率或其保留相关列的精确度——它是一个只有单一汇总数据的黑盒。
Decomposer 是对 DIN-SQL 的增量改进。DIN-SQL 已经通过自我修正将查询分解为子问题;MAC-SQL 将其重新包装为多智能体对话。将其拆分为三个命名智能体的架构更像是一种软件设计选择,而不是一种新的推理算法。在控制总 token 数量的情况下,三智能体提示词结构是否优于具有较长提示词的单个智能体,这一点从未经过测试。公认的局限性——提示词“未经过广泛工程化”且微调上限为 7B——是真实的,但更实质性的遗漏是完全缺乏关于提示词长度与架构的消融实验。
时间背景对于衡量结论很重要。MAC-SQL 在 BIRD 测试集上的 59.59% 在 2023 年 12 月是领先水平。到 2025 年中期,BIRD 排行榜显示系统已经突破了 81%。具体的想法——子模式过滤、问题分解、执行重试——已被后续使用推理优先训练、RLVR 和更丰富 CoT 的工作所吸收和扩展。作为一件作品,MAC-SQL 看起来已经过时;但作为一种架构模式,它依然具有生命力。
为什么这对金融 AI 很重要
Beancount 使用 beanquery(一种类似于 SQL 的查询语言)作为其账本数据的核心编程接口。一个真实的多年份 Beancount 文件包含一个模式,其中包含按层级组织的数十个账户、多种货币、元数据标签和计算得出的余额列。这正是 Selector 针对的大型、噪声模式问题。
Decomposer 直接适用于用户实际提出的各种查询:“2024 年第三季度,不包括报销交易,我的欧元餐饮总支出是多少,按月细分?”这是一个分解问题——按账户前缀过滤、按日期范围过滤、排除标记交易、按月聚合。Refiner 也可以自然地转化:在提交生成的 Beancount 分录之前,智能体可以通过 Beancount 解析器进行模拟运行,接收语法或余额错误,并进行修订。MAC-SQL 展示的执行反馈循环正是写入安全层所需要的循环。
开源蒸馏的结果是一个提醒:微调一个 7B 模型来逼近基于 GPT-4 的流水线,得到的模型仍然远远落后。如果 Bean Labs 为账本查询生成构建本地模型,MAC-SQL 展示的差距表明,小模型需要的领域特定训练数据远超通用微调所能提供的。
延伸阅读
- DAIL-SQL (Gao 等人, 2023, arXiv:2308.15363) —— 系统性的提示词工程基准评估,MAC-SQL 在 BIRD 上直接对其进行了改进,值得阅读以了解模式表示和少样本示例选择的受控消融。
- SQLFixAgent (arXiv:2406.13408) —— 将执行引导的 SQL 纠错扩展到带有一致性检查的多智能体系统中,是 MAC-SQL Refiner 理念的直接后继。
- BIRD-Critic / SWE-SQL (2025) —— 最新的 BIRD 推理赛道,要求理解执行错误,这是 MAC-SQL 中 Refiner 所做工作的自然演进。
