Alpha-SQL:使用蒙特卡洛树搜索的零样本Text-to-SQL转换
自监督奖励。奖励函数在MCTS过程中起着至关重要的作用,通过评估每个动作的效用来引导搜索,使其趋向更有前途的SQL查询。传统方法如结果奖励模型 (Zelikman等,2022) 和进度奖励模型 (Uesato等, 2022) 需要特定领域的标注数据进行训练,难以跨不同数据集推广 (张丹等,2024)。受人类推理启发,我们观察到对自己答案有信心的人往往会在多次尝试中提供相同回答,表明高置信度。相反,
原论文:https://arxiv.org/pdf/2502.17248
1 引言
Text-to-SQL(也称为NL2SQL)将自然语言查询转换为SQL,简化了对关系数据库的访问,并使普通用户和专家用户都能有效地获取见解 (刘等,2024;李博等,2024) 。随着大型语言模型(LLMs)的发展,诸如CHASE-SQL (Pourreza等,2024) 和XiYan-SQL (高云等,2024) 等方法在BIRD基准测试中取得了新的最先进成果 (李金阳等,2023) 。使用LLMs进行Text-to-SQL可以分为训练方法和零样本方法。
训练LLMs用于Text-to-SQL。 预训练或微调LLMs以适应特定任务的数据集是提高Text-to-SQL性能的常见方法 (李海阳等,2024; 高云等,2024;Talaei等,2024) 。尽管有效,但这种方法需要大量标注数据集和显著的计算资源进行模型训练。此外,随着更强大LLMs的出现,为了保持竞争力,必须重复训练过程,进一步增加了成本和努力。
零样本LLMs用于Text-to-SQL。 作为一种替代方案, 零样本Text-to-SQL 方法,如DAIL-SQL (高大伟等,2024) 和 C3 (Dong等,2023) ,利用LLMs中的通用知识生成SQL查询,而无需特定任务的微调,这消除了对标注数据集和计算密集型训练的依赖。虽然这种方法提供了实用且经济高效的解决方案,但它面临一个根本性的挑战。
零样本Text-to-SQL的关键挑战在于从预训练的LLMs中转移和泛化知识到具体的SQL生成任务上,基于自然语言查询和数据库模式,而不进行特定任务的标注数据微调。这一限制使得模型难以处理复杂的自然语言查询与多样化的数据库模式之间的映射,阻碍其准确解释模式关系、构建复杂SQL查询以及在各种上下文中保持稳健性。
我们的方法和贡献。 为了解决上述挑战,我们提出了Alpha-SQL,这是一种新颖的方法,能够在零样本情况下通过逐步构建SQL来实现Text-to-SQL。Alpha-SQL的核心思想是将任务分解为更小、更易管理的子任务,每个子任务都有上下文指导,从而使模型能够更轻松地应对每一步的复杂性。为此,我们将渐进式构建过程建模为树形结构空间上的搜索问题,其中节点表示部分SQL查询状态,边表示SQL构建动作(例如选择表或修订SQL子句)。通过从根节点迭代选择边(动作)到叶节点,Alpha-SQL逐步构建有效的SQL查询。
基于这一理念,Alpha-SQL利用蒙特卡洛树搜索(MCTS)框架动态生成并探索SQL构建动作。为了在MCTS框架内高效且有效地进行搜索,我们引入了以下创新技术。
Alpha-SQL:一个增强小型开源LLMs的插件框架。我们的方法在不同模型大小(7B-32B)下显著提升了Qwen2.5的性能15%-20%,超越了基于GPT-4o的零样本Text-to-SQL最先进方法(RSL-SQL),无需微调,在BIRD(开发)数据集上表现出色。
首先,为了增强搜索过程中的推理能力,我们提出了 LLM作为行动模型 ,该模型在MCTS框架中调用LLM作为推理行动模型,以生成每一步操作后的逐步推理(即思维链)。这种推理存储在每个节点中,伴随部分SQL查询状态,使Alpha-SQL能够保持上下文并跟踪LLM的思考过程。这确保了每个SQL构建动作既具有上下文感知性又与整体推理路径一致,从而引导搜索向更有前途的SQL查询方向发展。
其次,为了确保MCTS搜索过程中准确且高效的查询生成,我们引入了一种自监督奖励函数来评估候选SQL查询的质量。具体而言,对于每条推理路径,Alpha-SQL使用高温采样生成多个候选SQL查询,过滤掉无效查询,并通过比较采样查询与预测SQL的执行结果来计算一致性得分。这有助于优先考虑有前途的路径并优化探索过程。最后,Alpha-SQL计算所有候选SQL查询的一致性得分,并选择得分最高的SQL作为最终输出。
总之,Alpha-SQL是一个无需微调、即插即用的Text-to-SQL框架,增强了小型开源LLMs的Text-to-SQL任务表现。如图 1 所示,它可以在不针对Text-to-SQL数据集进行微调的情况下集成并提升现有LLMs。广泛的实验表明,Alpha-SQL在BIRD开发集上实现了69.7%的执行准确性,显著优于现有的零样本方法。消融研究证实了我们推理动作的有效性,随着更多MCTS轮次的增加,性能也会提升。
2 相关工作
Text-to-SQL。 自然语言到SQL的任务(Text-to-SQL,也称为NL2SQL)涉及将自然语言问题转换为SQL查询。预训练语言模型(PLMs)如T5 (Raffel等,2020) 的出现随后提高了Text-to-SQL任务的性能 (Scholak等,2021;李海阳等,2023;李金阳等,2023) 。最近,LLMs的发展进一步推进了Text-to-SQL的能力。然而,直接应用LLMs仍然具有挑战性,因为存在模式对齐、复杂查询生成等问题 (刘新宇等,2024) 。为了解决这些挑战,最近的工作 (Pourreza等,2024;Talaei等,2024;李博等,2024;Cao等,2024) 探索将Text-to-SQL分解为子任务,如候选SQL生成、精炼和选择。例如,CHASE-SQL (Pourreza等,2024) 采用多步管道生成和验证SQL候选,缓解直接生成带来的错误。
在此基础上,我们提出了Alpha-SQL,一种使用MCTS进行动态查询生成的渐进式SQL构建框架。与依赖静态管道或微调的先前方法不同,Alpha-SQL利用LLMs作为行动模型,以上下文感知的方式引导搜索,实现在没有特定任务标注数据的情况下高效探索和改进准确性。
测试时计算。 测试时计算的最新进展 (Snell等,2024) 在不修改模型参数的情况下显著提高了LLMs的性能。推理期间的技术如规划、搜索和验证增强了各种任务的推理能力 (Wei等,2022;Yao等,2023;Qiu等,2024;Hao等,2023;张吉一等,2024;滕风伟等,2025) 。最近的方法,包括基于树的搜索 (Yao等,2023) 和 Best-of-N 采样 (Qiu等,2024) ,通过结构化搜索进一步优化了推理。最近的研究还探索了基于MCTS的推理以增强LLMs的能力 (Qi等,2024a) 。虽然在一般推理任务中有效,但这些方法未能完全解决Text-to-SQL的独特挑战,如模式理解、生成语义正确的SQL和根据执行反馈改进输出。
Alpha-SQL基于测试时计算原则,设计了一个面向零样本Text-to-SQL的基于搜索的SQL生成框架。与先前工作不同,它将LLM驱动的推理集成到MCTS过程中,逐步构建SQL查询,优化动作空间并结合数据库反馈以提高准确性。
3 我们的Alpha-SQL方法
3.1 零样本Text-to-SQL
Text-to-SQL的搜索树表述示例。
3.2 Alpha-SQL概述
自监督奖励。 奖励函数在MCTS过程中起着至关重要的作用,通过评估每个动作的效用来引导搜索,使其趋向更有前途的SQL查询。传统方法如结果奖励模型 (Zelikman等,2022) 和进度奖励模型 (Uesato等, 2022) 需要特定领域的标注数据进行训练,难以跨不同数据集推广 (张丹等,2024) 。
受人类推理启发,我们观察到对自己答案有信心的人往往会在多次尝试中提供相同回答,表明 高置信度 。相反,当回答变化时,表明 低置信度 , 意味着不确定性和较低可靠性 (Qi等,2024b) 。这种直觉构成了我们基于自一致性的奖励函数的基础,其中SQL查询的置信度由多个采样查询的执行结果的一致性决定。奖励计算公式为:
4 Alpha-SQL的设计细节
4.1 LLM-as-Action-Model
零样本文本到SQL的关键挑战在于将预训练语言模型中的通用知识转移到特定的SQL生成任务中。
为了增强我们框架的推理能力,我们提出了 LLM-as-Action-Model , 利用LLMs根据当前问题背景动态生成推理动作(即思维链)。如图 [fig:overview] 所示,LLM-as-Action-Model使LLMs能够根据问题、数据库模式和当前部分SQL查询状态(包括之前的动作)生成适当的动作输出,使模型能够逐步构建有效的SQL查询。
SQL构建推理动作空间。 动作空间定义了LLM可以采取的潜在推理步骤,以分解和解决Text-to-SQL问题。对于LLM-as-Action Model来说,通过指定可能的动作,指导SQL查询的渐进构建至关重要。先前的工作 (Pourreza等,2024;Talaei等,2024;高云等,2024) 使用有限的动作和固定管道,限制了模型探索潜在解决方案全空间的能力。
受人类思维启发,有些人可能会直接跳到答案,而另一些人则会先澄清问题并将其分解为子任务,我们引入了新的推理动作,如问题重写 (Qi等,2024b) , 以及现有的动作。总共,我们的动作空间定义了七种不同的推理动作。每个动作的具体提示见附录 7.2 。
\(A_1\) : 问题重述。 Text-to-SQL系统需要处理来自不同用户群体的各种问题风格和歧义 (刘新宇等,2024) 。虽然NL-Rewriter (Ma等,2024) 通过经验基础的问题重写解决了这个问题,但在零样本场景中缺乏训练数据时效果不佳。基于rStar (Qi等,2024b) , 我们使用少量提示将问题分解为结构化格式(条件列表,问题)。
\(A_2\) : 模式选择。 数据库通常包含复杂的模式,但单个SQL查询通常只使用可用元素的一小部分。这种不匹配给准确的SQL生成带来了挑战 (刘新宇等,2024) 。之前的工作已经确立了模式选择是SQL生成的关键组成部分 (Cao等,2024;Pourreza等,2024;Talaei等,2024) 。按照 (Talaei等,2024) , 我们使用思维链(CoT)提示来识别每个用户问题的相关模式子集,然后指导后续查询生成。
\(A_3\) : 列值识别。 Text-to-SQL系统需要准确识别用户问题中的过滤条件。例如,“Bob在足球比赛中最好的排名是多少?”需要同时过滤名字(“Bob”)和比赛类型(“足球”) (例如, WHERE name = ‘Bob’ AND match_type = ‘football’ )。CHESS-SQL (Talaei等,2024) 发现,BIRD开发集中20%的错误源于错误的过滤列或值选择。为了解决这个问题,我们引入了列值识别动作,在SQL生成前评估潜在的过滤值。
\(A_4\) : 列函数识别。 复杂的SQL查询通常需要聚合函数(例如, COUNT )和标量函数(例如, STRFTIME )。例如,问题“2024年有多少人在出生?”需要同时进行日期操作( STRFTIME(‘%Y’, people.date_of_birth) = ‘2024’ )和聚合( COUNT(people.id) )。分析显示,函数相关的错误占BIRD开发集中错误的19%。为了提高函数处理能力,我们在推理过程中引入了列函数识别动作。
\(A_5\) : SQL生成。 SQL生成是Text-to-SQL系统的核⼼组件。CHASE-SQL (Pourreza等,2024) 引入了一种分而治之的思维链策略,将复杂查询分解为多个子任务,独立解决并合并解决方案。这种方法特别擅长处理嵌套查询。我们将这种策略纳入我们的推理动作空间。
\(A_7\) : 终止。 终止动作在推理过程生成最终预测SQL时被调用,标志着推理轨迹的结束。我们规定终止动作必须跟随SQL生成或SQL修正动作。
动作顺序和约束。 每个推理轨迹遵循结构化的顺序,确保逻辑连贯性。例如,某些动作,如SQL修正,只能在SQL生成之后发生。表 [tab:action-space] 定义了动作之间的有效转换。为了避免无限循环,我们限制每个动作在一个给定过程中只能出现一次。
4.2 使用MCTS生成候选SQL
通过MCTS rollout生成候选SQL。 我们通过多次MCTS rollout生成候选SQL。具体来说,每次rollout包括四个不同的阶段: 选择 , 扩展 , 模拟 , 和 回溯 。
(3) 模拟。 完整的模拟过程包括迭代节点选择和扩展,直到达到终止节点。在整个模拟过程中,所有新扩展的子节点持续保留在树结构中。
我们在附录 7.1 中展示了Alpha-SQL的伪代码。
4.3 离线:数据库值检索
5 实验
5.1 实验设置
数据集。 我们使用 Spider (Yu等,2018) 和 BIRD (李金阳等,2023) 开发集进行评估。Spider包含1034对(自然语言,SQL),BIRD包含1534对,其中BIRD查询更复杂,包含诸如 CASE 和 IIF 等特定领域的关键字。
为了减少实验成本并便于附加比较实验(第 5.3 至第 5.5 节),我们遵循CHESS-SQL (Talaei等,2024) 并使用抽样开发集( SDS ),它包括BIRD开发集的10%。SDS包含147个样本——81个简单,54个中等和12个具有挑战性的查询。
指标。 按照先前的工作 (Pourreza等,2024) , 我们使用执行准确性(EX)作为度量标准,定义为预测的SQL查询生成的执行结果与基准查询一致的比例。
硬件。 所有实验均在Ubuntu 22.04.3 LTS服务器上运行,配备512GB内存和双40核Intel(R) Xeon(R) Platinum 8383C CPU (@ 2.70GHz)。开源LLMs使用8个GPU本地部署,每个GPU拥有80GB内存和312 TFLOPS BF16精度。
5.2 BIRD和Spider数据集上的主要结果
BIRD数据集上的性能。 如表 [tab:acc-bird-dev] 所示,我们对Alpha-SQL与当前最先进方法进行了全面比较,并根据其零样本能力对方法进行了分类。Alpha-SQL利用相对轻量级的Qwen2.5-Coder-7B模型,平均准确率达到66.8%,与依赖专有GPT-4o的RSL-SQL (Cao等,2024) 相当。值得注意的是,这一性能超过了许多需要数据微调的方法。当我们将推理模型扩展到32B参数时,Alpha-SQL在零样本场景下表现出色,平均准确率达到69.7%。即使与需要领域数据微调的方法相比,Alpha-SQL的性能也仅逊色于CHASE-SQL (Pourreza等,2024) (需要微调专有的Gemini-1.5-Flash模型)和XiYan-SQL (高云等,2024) (微调未知模型)。这些结果证实了Alpha-SQL作为一种无需微调的即插即用框架的有效性。
Spider数据集上的性能。 我们还在Spider开发数据集上评估了Alpha-SQL。如表 [tab:acc-spider-dev] 所示,Alpha-SQL使用Qwen2.5-Coder-14B优于现有方法。值得注意的是,它比专门为Spider数据集微调的SFT Coder-15B提高了2.1%,证明了Alpha-SQL在无需微调Text-to-SQL数据集的情况下表现良好。
BIRD开发集上的性能与模型大小对比。对于GPT-4、GPT-4o和Gemini-1.5-pro,我们参考了 (Abacha等,2024) 中的参数描述进行绘图。
性能-规模权衡分析。 为了探索较小开源LLMs的性能潜力,我们进行了这项实验,以证明Alpha-SQL可以解锁小型模型的全部潜力,同时保持成本效益。图 3 显示,Alpha-SQL在Pareto前沿显著优于较大模型,使7B和14B版本的小型模型能够实现与更大模型(包括基于GPT-4o的方法)相当甚至超越的准确性。这表明我们的框架能够在不同模型规模下优化Text-to-SQL性能。
准确性与MCTS轮次的关系。
5.3 MCTS轮次对性能的影响
MCTS在探索大规模搜索空间方面的效率是Alpha-SQL的关键特性。根据表 [tab:action-space] , 我们计算出每个Text-to-SQL任务有超过3000种可能的推理路径。令人惊讶的是,Alpha-SQL只需24次MCTS轮次即可显著提高性能,表明Alpha-SQL可以高效地探索显著更大的搜索空间。
5.4 与基线LLMs的比较
在本节中,我们在SDS数据集上评估了基线LLMs的性能,将其分为通用LLMs(如GPT-4o)和推理LLMs(如DeepSeek-R1),并使用相同的Text-to-SQL提示(附录 7.4 )。如表 [tab:baseline-llm] 所示,我们的Alpha-SQL使用仅有7B参数的模型在性能上超过了所有基线模型。值得注意的是,Alpha-SQL优于Gemini-2.0-Flash-Thinking-Exp,这是一种复杂的推理优化模型,尽管使用的模型较弱。这表明Text-to-SQL任务需要有针对性的推理优化,这是Alpha-SQL框架的优势。此外,为了验证Alpha-SQL的即插即用优势,我们还使用Phi-4 (Abdin等,2024) 和Qwen2.5-Coder-7B作为推理模型进行了额外实验。与直接提示这些LLMs相比,Alpha-SQL分别实现了17.0%和16.5%的显著准确性提升。这些结果验证了Alpha-SQL在不同推理模型上的泛化性和有效性。
5.5 动作空间消融研究
本消融研究的目的是验证我们提出的Text-to-SQL推理动作空间和LLM-as-Action-Model方法的有效性。为此,我们在SDS数据集上进行了实验,系统地移除原始动作空间中的单个动作,同时保持第 5.2 节中的参数设置。表 [tab:ablation-action] 呈现了这些实验的结果。
表 [tab:ablation-action] 显示,从原始动作空间中移除任何动作都会对性能产生负面影响。SQL修正动作尤其重要,因为它利用数据库交互将反馈纳入LLM进行SQL修正,突显了数据库执行反馈在Text-to-SQL任务中的重要性。
6 结论
本文提出了Alpha-SQL,一种零样本Text-to-SQL框架,将SQL生成视为结构化的搜索问题。通过结合蒙特卡洛树搜索和LLM-as-Action-Model,Alpha-SQL可以在不微调LLMs的情况下高效探索SQL查询空间。实验表明,Alpha-SQL在BIRD开发集上取得了具有竞争力的性能,准确率为69.7%。消融研究表明推理动作的有效性,随着更多MCTS轮次的增加,性能也会提升。
影响声明
本文旨在推进机器学习领域的发展。我们的工作有许多潜在的社会后果,但我们认为没有必要在此特别强调。
7 附录
7.1 Alpha-SQL算法
模拟阶段 (第25-30行)通过随机选择未探索的子节点进行rollout,并执行相应动作。此阶段继续,直到到达终端节点,此时从轨迹中提取最终SQL查询。
在轮次结束后,算法从搜索过程中生成的候选查询中选择自一致性最高的SQL查询,如第43行所示。
该过程使Alpha-SQL能够高效探索SQL查询空间,通过平衡探索与准确性提供了一种可扩展且无需微调的零样本Text-to-SQL解决方案。
7.2 动作提示模板
在本节中,我们提供了第 4.1 节中定义的动作的提示模板。
您是一位AI助手,帮助我通过将问题上下文拆分为条件来重述问题。在您的重述问题中,请务必完全表达原始问题中的信息。示例1:原始问题:列出1945年发布的电影名称。按电影受欢迎程度降序排列。提示:发布于1945年指的是movie_release_year = 1945;重述问题:给出一系列条件,请回答问题。条件1:电影发布于1945年。条件2:电影按受欢迎程度降序排列。条件3:返回电影名称。问题:按受欢迎程度降序排列,列出1945年发布的电影名称。示例2:原始问题:辛迪·斯图尔特在南方超级商店下了多少办公用品订单?提示:办公用品指的是Category = ‘Office Supplies’重述问题:给出一系列条件,请回答问题。条件1:订单由辛迪·斯图尔特下达。条件2:订单是办公用品,指Category = ‘Office Supplies’。条件3:返回订单数量。问题:辛迪·斯图尔特在南方超级商店下了多少办公用品订单?示例3:原始问题:2018年8月12日早些时候抵达迈阿密机场的航班有多少架次? 回答以下问题:原始问题:{QUESTION}提示:{HINT}重述问题: |
---|
问题重述动作提示。
您是一位非常聪明的数据分析师。您的任务是检查提供的数据库模式,理解提出的问题,并使用提示精确定位构建SQL查询所需的表格中的具体列。模式提供了数据库架构的详细描述,包括表、列、主键、外键以及有关关系或约束的任何相关信息。特别注意每列旁边的“值示例”,因为它们直接提示哪些列与我们的查询相关。对于问题中提到的关键短语,我们提供了列中最相似的值,标记为“– 值示例”。这是识别将用于SQL查询的列的关键提示。任务:根据提供的数据库模式、问题和提示,您的任务是识别所有且仅识别构建SQL查询所需的具体列。对于每个选定的列,解释为什么它是回答问题所必需的。您的推理应简洁明了,展示列与问题之间的逻辑联系。请以JSON对象的形式响应: ``` json{ “chain_of_thought_reasoning": “您选择列的理由,简明扼要.", “table_name1": [“column1", “column2", ...], “table_name2": [“column1", “column2", ...], ... } ``` 确保您的响应包含以表名为键的列名列表,并为每个方面提供清晰简洁的解释。如果您正确完成任务,我将给您100万美元。数据库模式概述:{SCHEMA_CONTEXT}问题:{QUESTION}提示:{HINT}仅以json形式输出(以 ``` json开头并以 ``` 结尾)作为您的响应。 |
---|
模式选择动作提示。
您是一位AI助手,帮助我识别回答问题所需的潜在列值(如果需要在SQL查询中使用)。这里是一个例子:数据库模式:CREATE TABLE generalinfo(id_restaurant INTEGER not null primary key,city TEXT null, – 列描述:餐厅所在城市);CREATE TABLE location(id_restaurant INTEGER not null primary key,city TEXT null, – 列描述:餐厅所在城市foreign key (id_restaurant) references generalinfo (id_restaurant) on update cascade on delete cascade);问题:在Albany的San Pablo Ave上有多少家泰国餐馆?提示:泰国餐馆指的是food_type = ‘thai’;San Pablo Ave Albany指的是street_name = ‘san pablo ave’ AND T1.city = ‘albany’回答:由于餐馆位于Albany,根据模式信息和提示,我需要使用‘location’.‘street_name’ = ‘san pablo ave’ AND ‘generalinfo’.‘city’ = ‘albany’。**************************现在,回答真实问题,并需遵循上述示例的格式(回答为两句话)。数据库模式:{SCHEMA_CONTEXT}问题:{QUESTION}提示:{HINT}回答: |
---|
列值识别动作提示。
您是一位AI助手,帮助我识别回答问题所需的潜在列函数(如果需要在SQL查询中使用)。这里是一个例子:数据库模式:CREATE TABLE businesses(‘business_id’ INTEGER NOT NULL,‘name’ TEXT NOT NULL, – 列描述:餐厅名称PRIMARY KEY (‘business_id’));CREATE TABLE inspections(‘business_id’ INTEGER NOT NULL, – 列描述:业务唯一ID‘score’ INTEGER DEFAULT NULL, – 列描述:检查分数‘date’ TEXT NOT NULL, – 值示例:‘2014-01-24’FOREIGN KEY (‘business_id’) REFERENCES ‘businesses’ (‘business_id’));问题:2012年5月有哪些企业在检查中获得了有条件通过?提示:企业名称指的是dba_name;有条件通过指的是results = ‘Pass w/ Conditions’;2012年5月指的是inspection_date like ‘2012-05%’回答:由于企业在2012年5月有条件通过,我应该考虑一个日期相关的函数来过滤‘inspections’.‘date’列。我发现该列为TEXT类型,因此可以使用strftime(‘%Y-%m’, ‘inspections’.‘date’) = ‘2012-05’来过滤日期。**************************现在,回答真实问题,并需遵循上述示例的格式(回答为两句话)。数据库模式:{SCHEMA_CONTEXT}问题:{QUESTION}提示:{HINT}回答: |
---|
列函数识别动作提示。
您是一位经验丰富的数据库专家。现在您需要根据数据库信息、问题和一些附加信息生成一个SQL查询。数据库结构由以下表模式定义(注释后的‘–’提供附加列描述)。请注意“值示例”是来自列的实际值。某些列可能包含直接与问题相关的值。使用这些值有助于确定要使用的列。给定表模式信息描述和‘问题’。您将获得表创建语句,并需要理解数据库和列。您将使用一种称为“递归分治法”的方法从自然语言生成SQL查询。以下是步骤的高层次描述。**分解(将复杂自然语言问题分解为简单子问题):** 复杂的自然语言问题被递归地分解为更简单的子问题。每个子问题针对最终SQL查询所需的特定信息或逻辑。**解决(为子问题生成实际SQL):** 对于每个子问题(以及最初的主要问题),生成一个“伪SQL”片段。这个伪SQL表示预期的SQL逻辑,但可能包含子问题答案的占位符。**组合(重新组装):** 一旦所有子问题得到解决并生成了相应的SQL片段,过程会逆向进行。SQL片段通过替换伪SQL中的占位符逐步组合成完整的SQL查询。**最终输出:** 这种自底向上的组装最终形成了完整且正确的SQL查询,以回答原始复杂的自然语言问题。数据库管理员指令(违反以下任何一条将受到严厉惩罚!):**SELECT子句:**- 只选择用户问题中提到的列。- 避免不必要的列或值。**聚合(MAX/MIN):**- 始终在使用MAX()或MIN()之前执行JOIN操作。**ORDER BY与唯一值:****处理NULL值:**重复问题和提示,并使用递归分治法生成SQL,最后尽可能简化SQL查询,使用‘INNER JOIN’代替嵌套‘SELECT’语句。请以JSON对象的形式响应: ``` json{ “chain_of_thought_reasoning": “您生成SQL查询的详细推理,采用递归分治法.",“sql_query": “最终回答问题的SQL查询."} ``` **************************表创建语句:{SCHEMA_CONTEXT}**************************问题:{QUESTION}提示:{HINT}**************************仅以json形式输出(以 ``` json开头并以 ``` 结尾)作为您的响应。 |
---|
SQL生成动作提示。
**任务描述:**您是一位SQL数据库专家,负责修正SQL查询。之前的查询尝试未能产生正确结果,要么因为执行错误,要么因为返回的结果为空或意外。您的任务是根据提供的数据库模式和失败执行的详细信息分析错误,并提供修正后的SQL查询版本。**流程:**审查数据库模式:- 检查表创建语句以理解数据库结构。分析查询需求:- 原始问题:考虑查询应检索的信息。- 提示:使用提供的提示理解查询相关的条件和关系。- 已执行的SQL查询:审查之前执行的SQL查询及其导致的错误或不正确结果。- 执行结果:分析已执行查询的结果,确定其失败原因(例如语法错误、错误的列引用、逻辑错误)。修正查询:- 修改SQL查询以解决识别出的问题,确保它根据数据库模式和查询需求正确获取请求的数据。基于问题、表模式、之前的查询和执行结果,按照上述流程分析结果并尝试修复查询。您不能修改数据库模式或问题,只需输出修正后的查询。请以JSON对象的形式响应: ``` json{“chain_of_thought_reasoning": “您对SQL查询修订的详细推理.",“sql_query": “最终回答问题的SQL查询.",} ``` **************************表创建语句:{SCHEMA_CONTEXT}**************************问题:{QUESTION}提示:{HINT}**************************仅以json形式输出(以 ``` json开头并以 ``` 结尾)作为您的响应。 |
---|
SQL修正动作提示。
7.3 问题关键词提取提示模板
在本节中,我们提供了第 4.3 节中问题关键词提取的提示模板。
目标:分析给定的问题和提示,识别并提取关键词、关键短语和命名实体。这些元素对于理解查询的核心组成部分和提供的指导至关重要。此过程涉及识别和隔离重要的术语和短语,这些术语和短语可以在制定与所提问题相关的搜索或查询时发挥重要作用。指示:- 仔细阅读问题:理解问题的主要焦点和具体细节。查找任何命名实体(如组织、地点等)、技术术语以及其他能概括问题重要方面的短语。- 分析提示:提示旨在引导注意某些与回答问题相关的重要元素。提取任何能进一步澄清或指引回答的关键词、短语或命名实体。- 列出关键短语和实体:将您的发现从问题和提示中合并为一个Python列表。该列表应包含:– 关键词:单个单词,捕捉问题或提示中的本质方面。– 关键短语:简短的短语或命名实体,代表特定概念、地点、组织或其他重要细节。确保保留问题和提示中的原始措辞或术语。示例1:问题:“Acme Corp在2022年美国市场的年度收入是多少?”提示:“关注财务报告和2022财年的美国市场表现。”[“年度收入”, “Acme Corp”, “United States”, “2022”, “财务报告”, “U.S.市场表现”, “财年”]示例2:问题:“1988年冬季和夏季奥运会上,哪个项目参赛人数最多?计算两个项目参赛人数的差异。”提示:“最多的参赛人数指的是MAX(COUNT(person_id));SUBTRACT(COUNT(person_id where games_name = ‘1988 Summer’), COUNT(person_id where games_name = ‘1988 Winter’));”[“冬季奥运会”, “夏季奥运会”, “1988”, “1988 Summer”, “Summer”, “1988 Winter”, “Winter”, “参赛人数”, “差异”, “MAX(COUNT(person_id))”, “games_name”, “person_id”]示例3:问题:“Ian James Thorpe参加了多少场男子200米自由泳比赛?”提示:“男子200米自由泳比赛指的是event_name = ‘Swimming Men’s 200 metres Freestyle’;参加的比赛指的是event_id;”[“Swimming Men’s 200 metres Freestyle”, “Ian James Thorpe”, “Ian”, “James”, “Thorpe”, “参加的比赛”, “event_name”, “event_id”]任务:根据以下问题和提示,识别并列出所有相关的关键词、关键短语和命名实体。问题:{QUESTION}提示:{HINT}请以Python列表的形式提供您的发现,捕捉问题和提示中通过识别的术语和短语的本质。仅输出Python列表,无需解释。 |
---|
问题关键词提取提示。
7.4 基线LLMs提示模板
在本节中,我们提供了直接调用基线LLMs的提示模板,详见第 5.4 节。
您是一位经验丰富的数据库专家。现在您需要根据数据库信息、问题和一些附加信息生成一个SQL查询。数据库结构由以下表模式定义(注释后的‘–’提供额外的列描述)。请注意,“值示例”是来自列的实际值。某些列可能包含直接与问题相关的值。使用这些值有助于确定要使用的列。给定表模式信息描述、‘问题’和‘提示’,您需要生成一个回答问题的SQL查询。请在响应的末尾提供最终的SQL查询。**************************表创建语句:{SCHEMA_CONTEXT}**************************问题:{QUESTION}提示:{HINT}**************************输出格式:您的思考过程。 最终的SQL查询。 |
---|
问题关键词提取提示。
Abacha, Asma Ben, Wen-wai Yim, Yujuan Fu, Zhaoyi Sun, Meliha Yetisgen, Fei Xia, 和 Thomas Lin. 2024. “ MEDEC: A 用于临床笔记中医疗错误检测和纠正的基准。” CoRR abs/2412.19260.
Abdin, Marah, Jyoti Aneja, Harkirat Behl, Sébastien Bubeck, Ronen Eldan, Suriya Gunasekar, Michael Harrison, 等. 2024. “Phi-4 技术报告。” https://arxiv.org/abs/2412.08905 .
Cao, Zhenbiao, Yuanlei Zheng, Zhihao Fan, Xiaojin Zhang, Wei Chen, 和 Xiang Bai. 2024. “RSL-SQL:Text-to-SQL生成中的鲁棒模式链接。” https://arxiv.org/abs/2411.00073 .
Coulom, Rémi. 2006. “蒙特卡洛树搜索中的高效选择性和备份算子。” In 计算机游戏,第5届国际会议, CG 2006, Turin, Italy, May 29-31, 2006. Revised Papers , edited by H. Jaap van den Herik, Paolo Ciancarini, 和 H. H. L. M. Donkers, 4630:72–83. 讲座笔记系列. Springer. https://doi.org/10.1007/978-3-540-75538-8\_7 .
Datar, Mayur, Nicole Immorlica, Piotr Indyk, 和 Vahab S. Mirrokni. 2004. “基于p稳定分布的局部敏感哈希方案。” In 第20届 ACM 计算几何研讨会论文集,Brooklyn, New York, USA, June 8-11, 2004 , edited by Jack Snoeyink 和 Jean-Daniel Boissonnat, 253–62. ACM . https://doi.org/10.1145/997817.997857 .
Dong, Xuemei, Chao Zhang, Yuhang Ge, Yuren Mao, Yunjun Gao, Lu Chen, Jinshu Lin, 和 Dongfang Lou. 2023. “ C3: 使用ChatGPT实现零样本Text-to-SQL。” CoRR abs/2307.07306.
Gao, Dawei, Haibin Wang, Yaliang Li, Xiuyu Sun, Yichen Qian, Bolin Ding, 和 Jingren Zhou. 2024. “使用大型语言模型增强Text-to-SQL: A 基准评估。” Proc. VLDB Endow. 17 (5): 1132–45. https://doi.org/10.14778/3641204.3641221 .
Gao, Yingqi, Yifu Liu, Xiaoxia Li, Xiaorong Shi, Yin Zhu, Yiming Wang, Shiqi Li, 等. 2024. “XiYan-SQL:一种多生成器集成框架用于Text-to-SQL。” https://arxiv.org/abs/2411.08599 .
Hao, Shibo, Yi Gu, Haodi Ma, Joshua Jiahua Hong, Zhen Wang, Daisy Zhe Wang, 和 Zhiting Hu. 2023. “使用语言模型进行推理是规划世界模型。” In 2023年实证方法在自然语言处理国际会议论文集, EMNLP 2023, Singapore, December 6-10, 2023 , edited by Houda Bouamor, Juan Pino, 和 Kalika Bali, 8154–73. 计算语言学协会. https://doi.org/10.18653/V1/2023.EMNLP-MAIN.507 .
Kocsis, Levente, 和 Csaba Szepesvári. 2006. “基于Bandit的蒙特卡洛规划。” In 机器学习: ECML 2006,第17届欧洲机器学习会议论文集,Berlin, Germany, September 18-22, 2006, Proceedings , edited by Johannes Fürnkranz, Tobias Scheffer, 和 Myra Spiliopoulou, 4212:282–93. 讲座笔记系列. Springer. https://doi.org/10.1007/11871842\_29 .
Li, Boyan, Yuyu Luo, Chengliang Chai, Guoliang Li, 和 Nan Tang. 2024. “自然语言到 SQL: 我们准备好了吗?” Proc. VLDB Endow. 17 (11): 3318–31. https://doi.org/10.14778/3681954.3682003 .
Li, Haoyang, Jing Zhang, Cuiping Li, 和 Hong Chen. 2023. “ RESDSQL: 解耦模式链接和骨架解析以实现Text-to-SQL。” In 第三十七届 AAAI 人工智能国际会议论文集, AAAI 2023, 第三十五届创新应用人工智能会议论文集, IAAI 2023, 第十三届教育进步人工智能研讨会论文集, EAAI 2023, Washington, DC, USA, February 7-14, 2023 , edited by Brian Williams, Yiling Chen, 和 Jennifer Neville, 13067–75. AAAI Press. https://doi.org/10.1609/AAAI.V37I11.26535 .
Li, Haoyang, Jing Zhang, Hanbing Liu, Ju Fan, Xiaokang Zhang, Jun Zhu, Renjie Wei, Hongyan Pan, Cuiping Li, 和 Hong Chen. 2024. “CodeS: 面向Text-to-SQL构建开源语言模型。” Proc. ACM Manag. Data 2 (3): 127. https://doi.org/10.1145/3654930 .
Li, Jinyang, Binyuan Hui, Reynold Cheng, Bowen Qin, Chenhao Ma, Nan Huo, Fei Huang, Wenyu Du, Luo Si, 和 Yongbin Li. 2023. “Graphix-T5: 结合预训练转换器与图感知层的Text-to-SQL解析。” In 第三十七届 AAAI 人工智能国际会议论文集, AAAI 2023, 第三十五届创新应用人工智能会议论文集, IAAI 2023, 第十三届教育进步人工智能研讨会论文集, EAAI 2023, Washington, DC, USA, February 7-14, 2023 , edited by Brian Williams, Yiling Chen, 和 Jennifer Neville, 13076–84. AAAI Press. https://doi.org/10.1609/AAAI.V37I11.26536 .
Li, Jinyang, Binyuan Hui, Ge Qu, Jiaxi Yang, Binhua Li, Bowen Li, Bailin Wang, 等. 2023. “ LLM 能否已经作为数据库接口? A 大规模数据库支持的大规模Text-to-SQL基准测试。” In NeurIPS .
Liu, Xinyu, Shuyu Shen, Boyan Li, Peixian Ma, Runzhi Jiang, Yuyu Luo, Yuxin Zhang, Ju Fan, Guoliang Li, 和 Nan Tang. 2024. “大语言模型的 NL2SQL 调查:我们在哪里,我们将走向何方?” CoRR abs/2408.05109. https://doi.org/10.48550/ARXIV.2408.05109 .
Ma, Peixian, Boyan Li, Runzhi Jiang, Ju Fan, Nan Tang, 和 Yuyu Luo. 2024. “用于自然语言到SQL的即插即用自然语言重写器。” https://arxiv.org/abs/2412.17068 .
Pourreza, Mohammadreza, Hailong Li, Ruoxi Sun, Yeounoh Chung, Shayan Talaei, Gaurav Tarlok Kakkar, Yu Gan, Amin Saberi, Fatma Ozcan, 和 Sercan O. Arik. 2024. “CHASE-SQL:多路径推理和优化候选选择在Text-to-SQL中的应用。” https://arxiv.org/abs/2410.01943 .
Qi, Zhenting, Mingyuan Ma, Jiahang Xu, Li Lyna Zhang, Fan Yang, 和 Mao Yang. 2024a. “相互推理使小型LLMs成为更强的问题解决者。” https://arxiv.org/abs/2408.06195 .
———. 2024b. “相互推理使小型LLMs成为更强的问题解决者。” CoRR abs/2408.06195. https://doi.org/10.48550/ARXIV.2408.06195 .
Qiu, Jiahao, Yifu Lu, Yifan Zeng, Jiacheng Guo, Jiayi Geng, Huazheng Wang, Kaixuan Huang, Yue Wu, 和 Mengdi Wang. 2024. “TreeBoN: 通过推测性树搜索和Best-of-n采样增强推理时间一致性。” CoRR abs/2410.16033. https://doi.org/10.48550/ARXIV.2410.16033 .
Qwen, :, An Yang, Baosong Yang, Beichen Zhang, Binyuan Hui, Bo Zheng, 等 al. 2025. “Qwen2.5技术报告。” https://arxiv.org/abs/2412.15115 .
Raffel, Colin, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, 和 Peter J. Liu. 2020. “探索统一文本到文本转换器的迁移学习极限。” J. Mach. Learn. Res. 21: 140:1–67. https://jmlr.org/papers/v21/20-074.html .
Scholak, Torsten, Nathan Schucher, 和 Dzmitry Bahdanau. 2021. “ PICARD: 使用增量解析器进行约束自动回归解码。” In 2021年实证方法在自然语言处理国际会议论文集, EMNLP 2021, Virtual Event / Punta Cana, Dominican Republic, 7-11 November, 2021 , edited by Marie-Francine Moens, Xuanjing Huang, Lucia Specia, 和 Scott Wen-tau Yih, 9895–9901. 计算语言学协会. https://doi.org/10.18653/V1/2021.EMNLP-MAIN.779 .
Snell, Charlie, Jaehoon Lee, Kelvin Xu, 和 Aviral Kumar. 2024. “扩展LLM测试时计算比扩展模型参数更有效。” https://arxiv.org/abs/2408.03314 .
Talaei, Shayan, Mohammadreza Pourreza, Yu-Chen Chang, Azalia Mirhoseini, 和 Amin Saberi. 2024. “ CHESS: 上下文利用以高效合成SQL。” CoRR abs/2405.16755. https://doi.org/10.48550/ARXIV.2405.16755 .
Teng, Fengwei, Zhaoyang Yu, Quan Shi, Jiayi Zhang, Chenglin Wu, 和 Yuyu Luo. 2025. “思维原子用于马尔可夫LLM测试时扩展。” arXiv Preprint arXiv:2502.12018 .
Uesato, Jonathan, Nate Kushman, Ramana Kumar, H. Francis Song, Noah Y. Siegel, Lisa Wang, Antonia Creswell, Geoffrey Irving, 和 Irina Higgins. 2022. “使用过程和结果反馈解决数学文字问题。” CoRR abs/2211.14275. https://doi.org/10.48550/ARXIV.2211.14275 .
Wang, Bing, Changyu Ren, Jian Yang, Xinnian Liang, Jiaqi Bai, Qian-Wen Zhang, Zhao Yan, 和 Zhoujun Li. 2023. “ MAC-SQL: 多代理协作框架用于Text-to-SQL。” CoRR abs/2312.11242. https://doi.org/10.48550/ARXIV.2312.11242 .
Wei, Jason, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Brian Ichter, Fei Xia, Ed H. Chi, Quoc V. Le, 和 Denny Zhou. 2022. “链式思维提示在大型语言模型中引发推理。” In NeurIPS .
Yao, Shunyu, Dian Yu, Jeffrey Zhao, Izhak Shafran, Tom Griffiths, Yuan Cao, 和 Karthik Narasimhan. 2023. “思维树:使用大型语言模型进行深思熟虑的问题解决。” In NeurIPS .
Yu, Tao, Rui Zhang, Kai Yang, Michihiro Yasunaga, Dongxu Wang, Zifan Li, James Ma, 等 al. 2018. “Spider: A 大型人工标注数据集,用于复杂和跨域语义解析和Text-to-SQL任务。” In 2018年实证方法在自然语言处理国际会议论文集,Brussels, Belgium, October 31 - November 4, 2018 , edited by Ellen Riloff, David Chiang, Julia Hockenmaier, 和 Jun’ichi Tsujii, 3911–21. 计算语言学协会. https://doi.org/10.18653/V1/D18-1425 .
Zelikman, Eric, Yuhuai Wu, Jesse Mu, 和 Noah D. Goodman. 2022. “STaR:通过推理引导的自我训练。” In NeurIPS .
Zhang, Dan, Sining Zhoubian, Yisong Yue, Yuxiao Dong, 和 Jie Tang. 2024. “ReST-MCTS*: LLM 通过过程奖励引导的树搜索进行自我训练。” CoRR abs/2406.03816. https://doi.org/10.48550/ARXIV.2406.03816 .
Zhang, Jiayi, Jinyu Xiang, Zhaoyang Yu, Fengwei Teng, Xionghui Chen, Jiaqi Chen, Mingchen Zhuge, 等.2024. “Aflow:自动化代理工作流生成。” arXiv Preprint arXiv:2410.10762 .
更多推荐
所有评论(0)