在互联网时代,数据迸发式增长,假设高效的剖析数据成为一个亟待处置的疑问。SQL是数据剖析师的罕用工具,编写高效的SQL须要用户具有必定的IT基础,关于个别人员来说存在必定门槛。
Text-to-SQL技术可以成功人造言语转换成SQL,用户只有要用人造言语形容自己的目的,Text-to-SQL工具就可以智能生成对应的SQL,大大降低SQL编写的门槛和效率。
为了提高Text-to-SQL的成果,北航提出了一个基于LLM和智能体的Text-to-SQL框架。试验标明,新方法在执行准确率和齐全婚配准确率上失掉清楚优化。论文地址:
摘要
最新的Text-to-SQL方法应用大型言语模型(LLMs)和数据库系统反应,有效处置SQL查问中的执行失误。但是,关于不引发执行意外但与数据库不婚配的疑问,如条件不婚配和严厉解放不婚配等方面体现出应战性。
为处置此类疑问,提出了一个名为SQL审核和细化的工具辅佐代理框架,装备有两个专门工具:检索器和检测器,能诊断和纠正SQL查问与数据库的不婚配疑问。这增强了LLMs处置实践查问的才干。
同时引入了一个新的数据集Spider-Mismatch,专门构建以反映实在场景中遇到的条件不婚配疑问。试验结果标明,该方法在Spider和Spider-Realistic数据集的平均结果上成功了最高性能,并且在更事实的数据集Spider-Mismatch上清楚优于基线方法。
简介
Text-to-SQL义务努力于将人造言语疑问智能转化为结构化查问言语(SQL)查问,便于非专家用户访问数据库。历史上,此义务的钻研集中于开发须要少量标注数据的训练模型。近期,钻研转向应用大型言语模型(LLMs)和高低文学习(ICL),经过提供示例启动模型微调。最后的ICL方法旨在经过创立更好的提醒来应用LLMs的推理才干,然后续钻研经过多步骤环节辅佐LLMs生成SQL查问。这包括自校对方法和基于执行反应的细化方法,后者经过数据库治理系统(DBMS)执行反应来改良查问。
虽然这些方法经过DBMS反应处置执行失误,但难以处置不触发执行意外的数据库不婚配失误。这包括条件不婚配和查问器解放的不婚配,这两种状况在事实场景中经常出现,下图展现了这两种失误:
为了处置这些疑问,提出了一个工具辅佐代理框架,经常使用数据库检索器和失误检测器工具来检测和纠正SQL查问中的失误。
此外,干流Spider数据集及其变体很少反映实在场景中的条件不婚配疑问。为了弥合这一差距,引入了Spider-Mismatch数据集,专门设计来突出SQL条件子句中的不婚配疑问,经过特定搅扰应战模型,更贴合事实环球状况。
相关上班
Text-to-SQL
在近年来,大型言语模型(LLMs)关于文本转SQL(Text-to-SQL)义务的运行成为了钻研的热点,泛滥钻研努力于经过各种方法优化LLMs在此畛域中的体现。特意是,关于如何设计更有效的提醒以开掘LLMs在解析Text-to-SQL义务时的后劲成为了钻研的焦点。
例如,ACT-SQL和一个由Tai等人在2023年提出的方法,都经过构建复杂的思想链提醒来增强LLMs的推理才干。另一方面,DAIL-SQL在2024年由Gao等人启动的钻研中,对LLM在Text-to-SQL义务中的提醒工程启动了系统性的讨论,这包括了疑问的示意、示例的选用以及示例的组织方式。
近期的钻研趋势驳回一种多阶段的框架战略,用意经过将Text-to-SQL义务细分为若干更小的子义务,并为每个子义务定制专门的提醒,从而优化LLMs的处置性能。比如,Pourreza和Rafiei在2024年提出的DINSQL方法,就是将Text-toSQL义务合成为形式链接、疑问分类、SQL生成及自相关四个子步骤,以期减轻义务的全体难度。接着,Xie等人在2024年进一步对DINSQL的流程启动了增强,引入了DEA-SQL,该方法不只沿用了DINSQL的框架,还新增了一个被动学习模块。
为了降低生成SQL查问中的失误率,多阶段方法理论聚集成一个失误校对模块。DIN-SQL和DEA-SQL经过驳回自我纠错机制,指点LLMs依据提醒中的规定对SQL启动修正。此外,MAC-SQL方法由Wang等人在2024年提出,它经过应用数据库治理系统的反应来指点LLMs,专一于处置SQL查问执行环节中的失误。
随着大型言语模型(LLM)的迅速开展,基于这些模型的代理技术的运行后劲正逐渐被开掘。这些代理的**长处之一在于它们的识别工具才干,此配置极大地弥合了LLM代理与外部环球之间的消息鸿沟。在此背景下,多个名目和钻研团队投入了少量资源,开收回了一系列旨在增强这些代理配置的工具和框架。
AutoGPT(团队于2023年提出)是一种开源的AI代理成功,它集成了泛滥工具,旨在优化单个代理的才干。同时,OpenAgents(由Xie等人在2023年开发)设计了三种不同的代理,每种都聚焦于特定的运行畛域,并搭载了专为该畛域定制的工具。
另外,ToolLLM(由Qin等人在2024年提出)和API-Bank(由Li等人在2023年提出)专一于促成LLM代理与允许RESTful API的开明域实践运行之间的交互。这为代理提供了与实在环球运行程序启动交互的才干,极大地裁减了它们的运行范围。
在更详细的运行场景中,如Text-to-SQL义务,MAC-SQL(由Wang等人在2024年提出)引入了一个多代理框架。该框架旨在独立处置Text-to-SQL转换环节中遇到的各种子义务,例如经过执行意外来精细调整SQL语句。虽然在应用工具诊断SQL查问失误及提供反应以协助LLM代理启动SQL细化方面已取得了必定停顿,但在检测和处置SQL查问与数据库不婚配的疑问上,相关钻研仍相对匮乏。
为了填补这一钻研空白,钻研人员开局探求经常使用工具来识别和处置SQL查问中的数据库不婚配疑问。这一停顿不只提高了基于LLM的代理处置复杂查问的才干,也为进一步优化代理与外部数据交互的准确性和效率开拓了新的门路。
方法
基于LLM的Text-to-SQL义务
LLM的方法理论驳回高低文学习范式,将Text-to-SQL视为生成义务。生成环节可以公式化为:
其中,对大言语模型f的输入包括义务指令提醒I、一组演示示例E、数据库D的数据库形式S和新查问Q。证实E = [(S,Q,Y),...,(S,Q,Y)]由来自训练集的k个示例组成,每个示例具有预期输入Y。LLM的输入Y可以是SQL查问或其余方式的两边结果。
框架
Tool-SQL,这是一个工具辅佐的代理框架,旨在经常使用基于LLM的代理指点的多个工具来继续审核和改良SQL查问。这个框架定义了一组Python函数作为基于LLM的代理的举措空间。这些函数对应于不同的SQL子句。输入Y是示意SQL查问的操作序列,而不是SQL查问自身。经过Python解释器执行操作序列,工具集中的每个工具T都被调用,以依据疑问Q和数据库D审核函数调用Y中的不同失误。假设检测到失误,每个工具都会向基于LLM的代理提供特定的反应,协助代理细化特定的SQL子句,而不是自觉地修正SQL查问。审核环节可表述为:
审核和细化环节是迭代的。在基于LLM的代理生成一系列操作之后,将调用一切工具来审核潜在疑问。假设一切工具都同意了操作序列,则它将用于组装最终的SQL查问。同样,假设任何工具检测到疑问,则代理将基于原始序列Y和来自工具的反应来生成新的举措序列Y。该环节可以重复屡次,直到一切工具都同意该序列或到达最大尝试次数。细化环节可以公式化为:
大抵方法如下:
函数
在设计了一套基于SQL的函数库,该库蕴含八个专门针对构建和细化SQL查问的Python函数。这些函数区分对应SQL的不同子句,以便简化和组织查问的构建环节。例如,处置“WHERE”子句的义务交由“add where”函数担任。进一步地,为了缩小基于大型言语模型(LLM)的代理在执行义务时须要思考的操作范围,将SQL中用于查问串联的操作符(如“UNION”、“INTERSECT”和“EXCEPT”)整合进一个一致的“增加兼并”函数中。同时,逻辑运算符如“AND”和“OR”,理论用于“WHERE”或“HAVING”子句,被设计成在函数外部处置,留给LLM在最终步骤中处置,以此简化查问构建环节。每个函数接受特定于其对应SQL子句的参数,例如,一个“WHERE”子句的“A = B”条件,会以“add where(A,=,B)”的方式传递给函数。这种参数化的设计方式不只提高了工具在诊断SQL子句失误方面的效率,也缩小了字符串解析的复杂度。
测验工具
数据库检索器
定义了两个工具-数据库检索器和失误检测器,它们审核SQL查问中的疑问,并协助基于LLM的代理改良SQL查问。
数据库检索器数据库检索器的关键职责是协助基于LLM的代理验证SQL条件子句的正确性。如图3所示,检索器审核条件举措中的参数(例如,“add where”和“add having”)婚配数据库中的任何条目,假设没有找到婚配项,则为代理提供对相似单元格的援用。经过经常使用检索器,代理可以将SQL查问中的值与数据库中相应的单元格对齐,或许选择从条件子句中扫除列,这关于实践场景中的Text-to-SQL义务至关关键。在事实环境中,用户疑问理论蕴含与数据库中的规范化值不同的不规定值,因此在执行查问之前须要启动验证。此外,用户疑问的含糊性或许使其具有应战性,即使关于初级代理来说,在条件子句中定位正确的列名也是如此。
失误检测器
失误检测器的配置在于识别与严厉解放不婚配的疑问,并直接访问数据库以发现SQL执行中的失误。当LLM生成的SQL蕴含失误时,理论是由于对特定畛域的SQL不相熟或遭到幻觉等起因的影响,这使得失误检测变得尤为关键。为了启动宽泛的检测,开发了一个验证程序,它经过解析Python函数的参数,并在数据库的协助下执行。
与Wang et al. 2024提出的MAC-SQL方法不同,该方法并不直接在数据库治理系统(DBMS)中执行SQL查问来失掉反应。这种差异化的做法是由于直接执行SQL查问的方法在失误检测才干上有限,理论只能捕捉到语法失误和数据库形式失误等执行意外。
在启动失误检测的环节中,首要步骤是提取数据库的形式消息,这包括一切表名、列名及其类型、外键相关等。随后,经过设计的验证程序对照这些消息审核函数参数能否满足SQL操作和数据库形式的要求。针对更严厉的解放,诊断环节聚焦于基于SQL特色来检测诸如外键相关不婚配、"JOIN"操作的冗余或缺失、条件子句中列类型不婚配、以及"GROUP BY"子句的缺失或不当经常使用等失误。
此外,还特意强调了该工具的可裁减性,它能够轻松顺应检测用户定义的解放。在实践运行场景中,这象征着经过剖析函数调用的参数,工具可以针对具有特定数据处置需求的场景启动调整。例如,关于须要扫除"NULL"值或须要以特定格局处置列数据的状况,该工具能够启动相应的裁减以满足这些特定的需求。
SQL生成
在最后阶段,咱们经常使用纠正后的举措序列生成SQL查问。咱们经常使用Python解释器来执行这些函数调用并提取SQL查问的关键组件。关于“WHERE”或“HAVING”子句中缺失的逻辑运算符“AND”和“OR”(不包括在举措序列中),咱们依托LLM来预测它们。有了一切的组件,咱们就可以组装完整的SQL查问了。
Spider-Mismatch数据集
数据集构建
在实在环球的运行场景中,用户提出的疑问出现出宽泛的多样性,这些疑问与数据库的实践内容之间往往存在不小的差距。为了更准确地评价不同模型在实践环境中的顺应性及泛化才干,Spider基准测试应运而生。但是,Spider基准并非完美,因此衍生出了几个新的数据集,包括Spider-SYN、Spider-DK和Spider-Realistic,以便更好地应答不同的应战。同时,Bird数据集的推出,关注点放在了处置更为复杂的数据库内容和优化SQL查问的效率上。大少数现行方法并没有充沛思考到用户疑问中提到的数值与数据库中实践数值之间的潜在不婚配疑问,为处置这一疑问,SpiderMismatch数据集被引入。这个新数据集经过削减模型在生成正确的条件子句时所需克制的难度,引入了用户疑问与数据库内容之间的巧妙差同性,从而推进了模型性能的进一步优化。
条件后处置模块
的LLM Text-to-SQL技术在处置SQL查问中的值方面存在无余,这让生成准确的条件子句变得复杂。针对这一疑问,本文引入了一个被称为条件后处置的新模块。该模块的作用是从预测的SQL语句中抽取出值的援用,并应用SimCSE检索技术,将每个值与其所在列最婚配的单元格启动交流。为了确保评价的分歧性,本钻研在一切测试方法中均运行了条件后处置模块,以便启动公正比拟。
试验
试验设置
结果
试验结果标明,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查问准确性中的关键作用。
讨论
钻研展现了ChatGPT和GPT-4在作为优化代理时,对SQL查问失误修正环节的影响。关键发现是大局部失误能经过单次修正失掉处置,尤其是那些触及执行失误和解放不婚配的状况。但是,仍需多轮迭代来精细调整,特意是对条件子句的修正。这象征着在处置复杂的用户疑问时,基于大型言语模型(LLM)的代理或许须要屡次尝试才干找到正确的条件。
试验结果还标明,联合Tool-SQL的ChatGPT和GPT-4在启动失误修正时的平均迭代次数区分为0.74和0.44。这种方法防止了在没有失误检测时引入不用要的步骤,缩小了额外老本。
此外,钻研还调查了去除条件后处置模块对性能的影响。结果显示,移除该模块后,一切基准测试的性能都有所降低,这强调了LLM预测值与数据库实践值之间存在差异。虽然如此,由于该方法能够协助LLM代理生成正确的条件子句,去除后处置模块并未造成性能降低。反之,该模块在实践运行中或许会造成失误的答案,由于它会强迫交流条件子句中的值为与之最相似的数据库单元格,从而或许惹起无答案或失误答案的疑问。
论断
在本文中,咱们提出了工具SQL框架设计的SQL生成在更事实的状况下。这个框架着重于经常使用基于LLM的代理来改良SQL查问,并从各种工具中取得有针对性的反应,以审核SQL查问中的特定疑问。咱们设计了一个数据库检索器和一个失误检测器,以处置事实环球中经常出现的潜在数据库不婚配疑问。在Spider数据集和Spider-Realistic数据集上的平均试验结果标明,咱们的方法在少数状况下到达了最高的性能。此外,在SpiderMismatch上的试验结果标明,该方法在实践搅扰下仍能坚持较高的性能,说明了该方法在增强SQL查问性能方面的有效性。
原文链接: