AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


北航提出Tool-SQL,基于LLM和智能体实现Text2SQL,效果显著提升
发布日期:2024-09-15 09:55:31 浏览次数: 1554




在互联网时代,数据爆发式增长,如果高效的分析数据成为一个亟待解决的问题。SQL是数据分析师的常用工具,编写高效的SQL需要用户具备一定的IT基础,对于普通人员来说存在一定门槛。


Text-to-SQL技术可以实现自然语言转换成SQL,用户只需要用自然语言描述自己的目标,Text-to-SQL工具就可以自动生成对应的SQL,大大降低SQL编写的门槛和效率。


为了提高Text-to-SQL的效果,北航提出了一个基于LLM和智能体的Text-to-SQL框架。实验表明,新方法在执行准确率和完全匹配准确率上得到显著提升。



论文地址:https://arxiv.org/pdf/2408.16991


摘要


最近的Text-to-SQL方法利用大型语言模型(LLMs),通过从数据库管理系统获取反馈来提高效率。然而,这些方法在处理数据库不匹配时遇到困难,这些错误不会触发执行异常。


为了解决这些挑战,提出了一个基于工具辅助智能体框架的方法,为LLM智能体配备了两个专门的工具:一个检索器和一个检测器,用于诊断和纠正SQL查询中的数据库不匹配。这些工具增强了LLMs处理真实世界查询的能力。


引入了一个新的数据集Spider-Mismatch,专门构建以反映真实场景中遇到的条件不匹配问题。实验结果表明,该方法在Spider和Spider-Realistic数据集的平均结果上实现了最高性能,并且在更现实的数据集Spider-Mismatch上明显优于基线方法。


简介


Text-to-SQL任务旨在将自然语言问题转换为SQL查询语句,以便非专业用户更轻松地访问数据库中的数据。先前的研究侧重于使用各种框架和策略训练模型,但需要大量标记数据。最近的研究探索了大型语言模型和上下文学习范式在此任务中的应用。现有方法包括自我纠正和基于执行反馈的细化阶段,以提高SQL查询的准确性。


本文提出了一种名为Tool-SQL的工具辅助智能体框架,旨在通过使用专门的工具来诊断SQL查询中的问题,并利用基于LLM的智能体根据这些工具提供的反馈来精细化这些查询,以增强LLM在现实世界场景中生成准确SQL查询的能力。作者还介绍了一个新的数据集Spider-Mismatch,旨在弥合现有基准和现实世界场景之间的差距。实验结果表明,Tool-SQL在Spider和Spider Realistic的few-shot设置中取得了最高的执行准确率,并且在Spider-Mismatch中也保持了强大的性能。



相关工作


LLM用于Text-to-SQL


LLM在Text-to-SQL任务中被广泛使用,研究集中在设计高质量提示以增强LLM的推理能力。最近的研究采用多阶段框架,将Text-to-SQL任务分解为较小的子任务,并为每个子任务设计不同的提示,以提高LLM的性能。常见的多阶段方法通常引入错误校正模块来减少生成的SQL查询中的错误。


基于LLM的智能体


LLM智能体的潜力不断被探索,工具是LLM智能体的关键能力之一,AutoGPT和OpenAgents是开源实现的AI智能体,ToolLLM和API-Bank专注于LLM智能体与各种开放领域应用的交互。MAC-SQL提出了一个多智能体框架来解决Text-to-SQL任务,我们填补了检查和解决SQL查询中数据库不匹配的工具使用空白。


方法


基于LLM的Text-to-SQL任务


LLM方法采用上下文学习范式,将Text-to-SQL视为生成任务。输入包括任务指令提示、演示示例、数据库模式和新查询。演示示例包括训练集中的k个示例,每个示例都有预期输出。LLM的输出可以是SQL查询或其他形式的中间结果。



框架


Tool-SQL是一个工具辅助智能体框架,用于持续检查和优化SQL查询。该框架使用多个工具和基于LLM的智能体来指导Python函数的操作空间,以生成SQL查询的操作序列。每个工具都会检查函数调用中的错误,并提供特定的反馈,帮助智能体优化特定的SQL子句。最终,Python解释器执行操作序列,LLM补充SQL查询中缺失的信息,生成最终的SQL查询。本文还介绍了两个集成到该框架中的工具:数据库检索器和错误检测器。前者检查SQL条件子句的有效性并探索数据库内容,后者基于SQL执行语法、数据库模式和SQL特性或领域专家定义的更严格的约束条件来检测查询中的错误。




函数调用设计


基于SQL主要子句,设计了八个Python函数,用于组装SQL查询。将SQL查询连接运算符合并为一个函数,简化了LLM智能体的操作空间。引入了“QA()”函数来处理子问题,增强了智能体的推理能力。在推理阶段,智能体一次性生成操作序列,避免了与环境之间的过多交互。数据库检索工具检查条件子句并向智能体提供反馈。



检验工具


数据库检索器用于验证SQL条件子句的正确性,通过检查参数是否匹配数据库中的条目,并提供类似单元格的参考。错误检测器用于检测更严格约束条件的不匹配和SQL执行错误,通过间接访问数据库进行检查。检测过程包括提取数据库架构信息和设计验证程序来检查参数是否满足SQL操作和数据库架构。



SQL生成


使用Python解释器执行这些函数调用并提取SQL查询的主要组件。对于在操作序列中未包含的“WHERE”或“HAVING”子句中缺失的逻辑运算符“AND”和“OR”,我们依靠LLM来预测它们。将所有组件放置后,我们可以组装完整的SQL查询。


Spider-Mismatch数据集


数据集构建


用户问题在现实场景中呈现多样性,与数据库内容可能存在显著差异。Spider是一个用于评估模型泛化能力的基准,但存在一些不足。为此,衍生了Spider-SYN、Spider-DK和Spider-Realistic等新数据集。Bird数据集则关注更复杂的数据库内容和SQL查询效率。现有方法未考虑问题中值的提及与数据库中单元格的差异,SpiderMismatch数据集则引入了这种差异,增加了模型生成正确条件子句的难度。



条件后处理模块


条件后处理模块,用于解决现有LLM Text-to-SQL方法在处理SQL查询中的值时的挑战。该模块从预测的SQL中提取值提及,并用相应列中最相似的单元格(使用SimCSE检索)替换每个值。该模块应用于实验中的所有方法,以提供公平比较。


实验


实验设置


数据集。使用Spider和Spider-Realistic数据集。


LLM。使用ChatGPT和GPT-4。


评估指标。包括执行准确率和完全匹配准确率。


基线。包括DIN-SQL、MAC-SQL和ACT-SQL。


结果


实验结果表明,Tool-SQL在Spider数据集和Spider-Realistic数据集上的执行准确率最高,且在Spider-Mismatch数据集上也表现出色。Tool-SQL的性能稳定,能够有效地处理不同场景下的挑战。




消融分析


实验结果表明,当去除数据库检索器时,ChatGPT和GPT-4的执行准确率分别下降了4.1%和3.2%,说明用户问题的歧义性使得语言模型难以生成正确的SQL条件子句。当去除错误检测工具时,ChatGPT的性能下降更明显,这表明较弱的语言模型更容易出错。此外,将错误检测工具替换为数据库验证工具时,ChatGPT和GPT-4的执行准确率分别下降了1.6%和1.0%,这突显了错误检测工具在SQL查询中的重要性。



讨论


结果表明,大多数SQL查询错误可以通过单次纠正解决,但仍有许多错误需要多次迭代精化,尤其是条件子句的精化。作者提出的方法通过数据库检测器帮助语言模型智能体程序生成正确的条件子句,避免了引入静态过程的额外成本。作者还探讨了条件后处理模块的影响,发现移除后处理模块会导致性能显著下降,而引入后处理模块可能会在实际场景中导致错误答案。




讨论


本文提出了Tool-SQL框架,旨在解决SQL查询在实际场景中的问题。该框架使用基于LLM的智能体来优化SQL查询,并通过数据库检索器和错误检测器解决实际场景中常见的数据库不匹配问题。实验结果表明,该方法在少样本情况下表现最佳,并且在更现实的干扰下仍能保持高性能,证明了该方法在增强LLM在实际场景中的SQL生成能力方面的有效性。

关注【灵度智能】公众号,获取更多AI资讯。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询