CN117271561A - 一种基于大语言模型的sql语句生成方法、装置及设备 - Google Patents

一种基于大语言模型的sql语句生成方法、装置及设备 Download PDF

Info

Publication number
CN117271561A
CN117271561A CN202311540773.4A CN202311540773A CN117271561A CN 117271561 A CN117271561 A CN 117271561A CN 202311540773 A CN202311540773 A CN 202311540773A CN 117271561 A CN117271561 A CN 117271561A
Authority
CN
China
Prior art keywords
text
sql
candidate
execution step
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202311540773.4A
Other languages
English (en)
Other versions
CN117271561B (zh
Inventor
冯卫森
刘微
孟卫明
杨斌
刘秀美
葛赛赛
张传伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hisense Group Holding Co Ltd
Original Assignee
Hisense Group Holding Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hisense Group Holding Co Ltd filed Critical Hisense Group Holding Co Ltd
Priority to CN202311540773.4A priority Critical patent/CN117271561B/zh
Publication of CN117271561A publication Critical patent/CN117271561A/zh
Application granted granted Critical
Publication of CN117271561B publication Critical patent/CN117271561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请涉及人工智能技术领域,尤其涉及一种基于大语言模型的SQL语句生成方法、装置及设备。由大语言模型确定对待转换文本进行转换的N个转换计划,及每个执行步骤对应的多个候选SQL语句,再基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,也就是说使大语言模型确定多种转换计划,每个转换计划包括至少一个执行步骤,即将待转换文本分解为简单文本,以提高大语言模型处理文本的能力,并生成每个执行步骤的多个候选SQL语句,基于路径搜索算法确定最优候选SQL语句,有效提高了大语言模型生成SQL语句的准确率。本申请所保护的技术方案具有可泛化性、实时性、可控性、可靠性特点,符合可信赖特性。

Description

一种基于大语言模型的SQL语句生成方法、装置及设备
技术领域
本申请涉及人工智能技术领域,尤其涉及一种基于大语言模型的SQL语句生成方法、装置及设备。
背景技术
大语言模型(Large Language Models,LLMs)已经被证明具有推理能力,能够解决涉及数学、符号、常识、以及知识推理的任务。目前大语言模型的推理过程是使用原始自回归的机制去生成文本,也就是在字符级别逐个地从左到右地生成文字。
相关技术中,一般是将待转换文本输入到大语言模型中,大语言模型直接输出该待转换文本对应的结构化查询语言(Structured Query Language,SQL)语句,但是,由于大语言模型是从左到右逐字进行处理的,如果待转换文本是比较复杂的文本,那么大语言模型输出的SQL语句的可靠性和稳健性不能保证。
因此,如何提高SQL语句生成的准确率成为亟待解决的问题。
发明内容
本申请实施例提供了一种基于大语言模型的SQL语句生成方法、装置、及设备,用以解决现有技术中大语言模型直接输出的SQL语句的可靠性和稳健性不能保证的问题。
第一方面,本申请提供了一种基于大语言模型的SQL语句生成方法,所述方法包括:
获取待转换文本;
将所述待转换文本输入到所述大语言模型中,所述大语言模型根据所述待转换文本中包括的内容,确定对所述待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤;确定每个所述执行步骤对应的多个候选SQL语句;基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
第二方面,本申请还提供了一种基于大语言模型的SQL语句生成装置,所述装置包括:
获取模块,用于获取待转换文本;
生成模块,用于将所述待转换文本输入到所述大语言模型中,所述大语言模型根据所述待转换文本中包括的内容,确定对所述待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤;确定每个所述执行步骤对应的多个候选SQL语句;基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
第三方面,本申请还提供了一种电子设备,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如上述任一所述基于大语言模型的SQL语句生成方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一所述基于大语言模型的SQL语句生成方法的步骤。
在本申请实施例中,获取待转换文本,将待转换文本输入到大语言模型中,由大语言模型根据待转换文本中包括的内容,确定对待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤,并确定每个执行步骤对应的多个候选SQL语句,再基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,从而将目标候选SQL语句确定为待转换文本对应的目标SQL语句,即利用大语言模型的语言处理能力,使大语言模型生成多种转换计划,每个转换计划包括至少一个执行步骤,即将待转换文本分解为简单文本,以提高大语言模型处理文本的能力,并针对每个执行步骤生成多个候选SQL语句,基于路径搜索算法,确定最优转换计划及最优转换计划中的最优候选SQL语句,有效提高了大语言模型生成SQL语句的准确率。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于大语言模型的SQL语句生成过程的流程示意图;
图2为本申请实施例提供的一种目标树的示意图;
图3为本申请实施例提供的一种基于大语言模型生成候选SQL语句的过程示意图;
图4为本申请实施例提供的一种基于大语言模型的SQL语句生成装置结构示意图;
图5为本申请实施例提供的一种电子设备结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图,对本申请的实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
目前利用大语言模型进行基础任务推理的方法主要有三类:分别是输入输出提示(Input–output prompting)、思维链的系列提示(Chain of Thought prompting)。
其中,输入输出提示是最普遍与最直观的问题解决方式,它把问题输入 x 结合任务指令和/或少量样本数据作为大语言模型的输入提示词,直接得到大语言模型输出y,可以形式化表示为。
其中,思维链的系列提示可以包括思维链(Chain of Thought)、零样本思维链(Zero-shot Chain of Thought)和自动思维链(Auto Chain of Thought)。思维链在问题输入x和输出y之间引入思维(thoughts)桥接 x 和 y,每个思维是一个连贯的句子,作为问题解决的一个中间步骤。每个思维是依次生成的语言序列,实际上输出y就是最后生成的语言序列。零样本思维链提示需要在提示词手工加入推理过程,零样本思维链提出两阶段提示方法:首先使用“Let’s think step by step.”这一“咒语”让大语言模型自己给出推理过程,随后将原始问题输入 x 与先前输出的推理过程结合起来,让大语言模型抽取出答案。自动思维链弥补了零样本思维链没有使用上下文学习(In Context Learning)的缺陷,自动思维链也是一个两阶段的提示方法:第一阶段是对问题集合进行聚类,第二阶段是示例抽取,对于输入问题q,找到问题集合中与之接近的一批问题,然后将问题与“Let’sthink step by step.”提示词进行拼接,生成这批问题对应的推理过程。最后把这些问题和推理过程,构成作为上下文学习内容加到提示(prompt)中,再让大语言模型对问题q进行作答。
尽管输入输出提示易于理解与设计,但是得到的输出常常是错误的,输入输出提示过程相当于一个黑盒,除了缺乏外部知识,也缺乏了关键的推理能力。虽然思维链对推理任务有一定的提升,但是需要手工构建每个任务的示范样例,面对新的任务时,需要重新构建一套样本。零样本思维链在数学推理任务上能够达到与少样本思维链接近的水平,但是在常识、符号推理和其他逻辑推理任务上没有出色的效果,存在鲁棒性不足的问题。自动思维链可以自动化构建示例样本,提升了提示效率。思维链的系列提示方法仅限于特定的某些推理任务,但是思维的拆分依旧是模糊的,输出的答案存在幻觉问题,并且在思维之间会出现错误传播。目前,学界已经验证了以上介绍的进行推理任务的方法在某些推理任务上有较好的效果,但是对于需要严密推理能力的任务,例如Text2SQL、意图切换识别、槽位替换等,尚未有全面且深入的研究,以激发并挖掘大语言模型在高级推理任务上的应用潜力。
为了提升大语言模型将文本转换为SQL语言的推理能力,本申请实施例提供了一种基于大语言模型的SQL语句生成方法、装置及设备,该方法中获取待转换文本;将待转换文本输入到大语言模型中,大语言模型根据待转换文本中包括的内容,确定对待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤;确定每个执行步骤对应的多个候选SQL语句;基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将目标候选SQL语句确定为待转换文本对应的目标SQL语句。
图1为本申请实施例提供的一种基于大语言模型的SQL语句生成过程的流程示意图,如图1所示,该过程包括以下步骤:
S101:获取待转换文本。
本申请提供的基于大语言模型的SQL语句生成方法应用于电子设备,该电子设备可以是服务器、PC、移动终端等。
在本申请实施例中,可以获取将转换为SQL语句的待转换文本。该待转换文本可以是电子设备的使用者输入到电子设备中的,电子设备的使用者在输入待转换文本时,可以是以文本方式输入的,也可以是语音方式输入的,也就是说,电子设备的使用者可以通过与电子设备连接的键盘输入待转换文本,也可以是电子设备的使用者对电子设备说出待转换文本的语音,电子设备的语音采集模块在采集到该待转换文本的语音之后,对该语音进行语音识别处理,得到的文本即可作为待转换文本。本申请实施例中所获取到的待转换文本也可以是与电子设备连接的其他电子设备发送给电子设备的,还可以电子设备对图像进行图像识别处理得到的文本。
示例性地,本申请实施例所获取的待转换文本可以是“2022年青岛市GDP分别是多少?那制造业的呢?再帮我看看济南的。”。
需要说明的是,本申请实施例对待转换文本的获取方式,以及待转换文本的具体内容不进行限制,本领域的技术人员可以根据需要进行配置。
S102:将所述待转换文本输入到所述大语言模型中,所述大语言模型根据所述待转换文本中包括的内容,确定对所述待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤。
在获取到待转换文本之后,为了确定待转换文本对应的目标SQL语句,从而基于该目标SQL语句在相应的数据库中查找待转换文本对应的结果,在本申请实施例中,可以将该待转换文本输入到大语言模型中,从而使该大语言模型生成待转换文本对应的目标SQL语句。其中,大语言模型可以理解为是基于转换器(transformer)架构的模型;该大语言模型也可以理解为是具有庞大的参数规模和复杂程度的机器学习模型,例如,具有数百万到数十亿参数或者上百亿参数的神经网络模型;该大语言模型也可以理解为是通过半(弱)监督、全监督、自监督或者无监督等技术,在大规模训练数据上训练得到的一种深度学习模型。在本申请实施例中,大语言模型可以处理多种不同任务,在训练大语言模型时一般是基于某个目标任务领域的训练数据进行训练的,训练得到的大语言模型一般情况下可以被迁移到与目标任务领域相近的其他任务领域中进行使用。
大语言模型在接收到待转换文本之后,大语言模型可以根据待转换文本中包括的内容,确定对待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤。其中,N可以是任意正整数,即N=1,2,3……,N的具体取值可以由本领域的技术人员根据需要进行配置。大语言模型在确定每个转换计划的执行步骤时,确定执行步骤的思想应保证足够小使得大语言模型可以生成可靠且多样的候选SQL语句,也应该足够大使得大语言模型能够评估这个执行步骤所生成的候选SQL语句能够成功解决问题的可能性。基于大语言模型强大的语言处理能力,即使一个简单文本,大语言模型也可能将该简单文本分解为多个执行步骤,因此,针对同一待转换文本确定的不同转换计划所包括的执行步骤的数量可以相同也可以不同,每个转换计划中具体包括几个执行步骤需要大语言模型根据接收到的待转换文本的内容而确定。
示例性地,大语言模型在确定对待转换文本进行转换的N个转换计划时,可以将预先保存的第一提示文本与待转换文本进行拼接,得到拼接文本。例如,该拼接文本可以是“你是一个数据库专家,当前要解决的任务是Text2SQL,就是把Text2SQL任务分解成几个子任务,每个子任务都可以转换成可执行的结构化查询语句SQL,输出的SQL语句保持准确性以及运行效率。输入:2022年青岛市GDP分别是多少?那制造业的呢?再帮我看看济南的”,其中,“你是一个数据库专家,当前要解决的任务是Text2SQL,就是把Text2SQL任务分解成几个子任务,每个子任务都可以转换成可执行的结构化查询语句SQL,输出的SQL语句保持准确性以及运行效率。输入:”为第一提示文本,“2022年青岛市GDP分别是多少?那制造业的呢?再帮我看看济南的”为待转换文本。在得到了拼接文本之后,大语言模型即可以根据拼接文本中的第一提示文本对待转换文本进行处理,从而确定对待转换文本进行转换的N个转换计划。例如,N个转换计划中的某一个转换计划可以是“第一步查询青岛市2022年的GDP,第二步查询青岛市2022年制造业贡献的GDP数值,第三步查询济南市2022年的GDP,第四步查询济南市2022年制造业贡献的GDP数值”,其中,“第一步查询青岛市2022年的GDP”即为执行步骤1,“第二步查询青岛市2022年制造业贡献的GDP数值”即为执行步骤2,“第三步查询济南市2022年的GDP”即为执行步骤3,“第四步查询济南市2022年制造业贡献的GDP数值”即为执行步骤4。需要说明的是,大语言模型如何基于提示文本对相应的文本进行处理为现有技术,本申请实施例不再赘述。
需要说明的是,当大语言模型实际能够确定的转换计划的方案数量小于预先设置的N时,针对实际确定的转换计划进行后续处理即可,也就是说,大语言模型在确定转换计划时,应尽可能保证确定的转换计划的数量为预设数量,但是在确实无法确定该预设数量的转换计划时,基于所能确定的转换计划进行后续操作即可。
S103:确定每个所述执行步骤对应的多个候选SQL语句。
在得到了对待转换文本进行转换的每个转换计划之后,可以确定每个转换计划中的每个执行步骤对应的多个候选SQL语句。大语言模型在确定每个执行步骤对应的多个候选SQL语句时,可以将预先保存的提示文本与每个转换计划及转换计划中包括的执行步骤进行拼接,再对拼接之后的文本进行处理,从而生成每个执行步骤对应的多个候选SQL语句。示例性地,预先保存的提示文本可以是“请为以下文本中的每个执行步骤生成多个候选SQL语句”。大语言模型如何基于提示文本生成相应文本对应的SQL语句为现有技术,本申请实施例对生成SQL语句的过程不再赘述。
S104:基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
在得到了每个转换计划中每个执行步骤对应的多个候选SQL语句之后,为了在众多的候选SQL语句中确定最优的SQL语句,在本申请实施例中,可以基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句。其中,路径搜索算法可以是迪克斯特拉算法(Dijkstra's Algorithm)、广度优先搜索(Breadth First Search,BFS)或深度优先搜索(Depth-First-Search,DFS)等。
在确定了目标候选SQL语句之后,可以将所确定的目标候选SQL语句确定为待转换文本对应的目标SQL语句。
在本申请实施例中,获取待转换文本,将待转换文本输入到大语言模型中,由大语言模型根据待转换文本中包括的内容,确定对待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤,并确定每个执行步骤对应的多个候选SQL语句,再基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,从而将目标候选SQL语句确定为待转换文本对应的目标SQL语句,即利用大语言模型的语言处理能力,使大语言模型生成多种转换计划,每个转换计划包括至少一个执行步骤,即将待转换文本分解为简单文本,以提高大语言模型处理文本的能力,并针对每个执行步骤生成多个候选SQL语句,基于路径搜索算法,确定最优转换计划及最优转换计划中的最优候选SQL语句,有效提高了大语言模型生成SQL语句的准确率。
为了进一步提高SQL语句生成的准确率,在上述实施例的基础上,在本申请实施例中,所述大语言模型根据所述待转换文本中包括的内容,确定对所述待转换文本进行转换的N个转换计划包括:
所述大语言模型将预先保存的第一提示文本、示例文本与所述待转换文本拼接,得到第一目标文本,所述第一提示文本为提示所述大语言模型对所述待转换文本的转换计划进行确定的文本,所述示例文本为对其他待转换文本所确定的N个转换计划的举例;
基于所述示例文本中举例的转换计划的思路对所述第一目标文本进行处理,得到对所述待转换文本进行转换的N个转换计划。
为了进一步提高SQL语句生成的准确率,在本申请实施例中可以预先保存示例文本,该示例文本可以是本领域的技术人员对某一个文本进行转换时所规划的N个转换计划,也就是说,该示例文本可以理解为是为大语言模型举的一个例子。示例性地,该示例文本可以是“输入:2022年青岛市GDP分别是多少?那制造业的呢?再帮我看看济南的。计划:第一步查询青岛市2022年的GDP,第二步查询青岛市2022年制造业贡献的GDP,第三步查询济南市2022年的GDP,第四步查询济南市2022年制造业贡献的GDP”。
大语言模型在确定对待转换文本进行转换的N个转换计划的过程中,大语言模型可以将预先保存的第一提示文本、示例文本与待转换文本拼接,得到第一目标文本,第一提示文本即为提示大语言模型对待转换文本的转换计划进行确定的文本。示例性地,该第一提示文本可以是“你是一个数据库专家,当前要解决的任务是Text2SQL,就是把Text2SQL任务分解成几个子任务,每个子任务都可以转换成可执行的结构化查询语句SQL”。本申请实施例对第一提示文本及示例文本的具体内容不进行限制。
大语言模型在得到了第一目标文本之后,可以学习示例文本中所举的例子,在确定转换计划时的思路,从而基于学习到的该思路对第一目标文本进行处理,得到对待转换文本进行转换的N个转换计划。
具体的,假设第一提示文本为A,示例文本为B,待转换文本为C,那么拼接得到的第一目标文本即为:ABC。大语言模型在对该第一目标文本进行处理时,可以学习B中包括的转换计划的确定的思路,再按照第一提示文本A中的要求,基于所学习到的思路对待转换文本C进行处理,从而得到对待转换文本C进行转换的N个转换计划。
需要说明的是,大语言模型如何基于已给出的一个示例文本对相应的文本进行处理为现有技术,本申请实施例对此过程不再赘述。
为了进一步提高SQL语句生成的准确率,在上述各实施例的基础上,在本申请实施例中,所述确定每个所述执行步骤对应的多个候选SQL语句包括:
所述大语言模型针对每个转换计划,获取该转换计划中已经生成候选SQL语句的目标执行步骤;将预先保存的第二提示文本、该转换计划与所述目标执行步骤对应的候选SQL语句进行拼接,得到第二目标文本,所述第二提示文本为提示所述大语言模型生成所述目标执行步骤的下一执行步骤对应的候选SQL语句的文本;对所述第二目标文本进行处理,得到所述目标执行步骤的下一执行步骤对应的候选SQL语句;确定所述下一执行步骤是否为该转换计划中的最后一个执行步骤,若是,则确定继续确定其他转换计划中包括的每个执行步骤对应的候选SQL语句;若否,则继续执行获取该转换计划中已经生成候选SQL语句的目标执行步骤的步骤。
在本申请实施例中,大语言模型可以针对每个转换计划,获取该转换计划中已经生成候选SQL语句的目标执行步骤,也就是说,确定该转换计划中当前哪个执行步骤已经生成了对应的候选SQL语句。
为了进一步提高SQL语句生成的准确率,在本申请实施例中,可以预先保存第二提示文本,该第二提示文本为提示大语言模型生成目标执行步骤的下一执行步骤对应的候选SQL语句的文本。示例性地,该第二提示文本可以是“生成目标执行步骤的下一执行步骤对应的多个候选SQL语句”。为了生成目标执行步骤的下一执行步骤对应的候选SQL语句,大语言模型可以将预先保存的第二提示文本、该转换计划以及目标执行步骤对应的候选SQL语句进行拼接,得到第二目标文本。将目标执行步骤对应的候选SQL语句与第二提示文本和该转换计划进行拼接,是为了提示大语言模型在对第二目标文本进行处理时,哪个执行步骤已经完成了候选SQL语句的转换,接下来将要对哪个执行步骤进行处理。
在得到了第二目标文本之后,对该第二目标文本进行处理,得到目标执行步骤的下一执行步骤对应的候选SQL语句。大语言模型如何根据提示文本生成某一文本对应的SQL语句为现有技术,在此不再赘述。
在确定了该目标执行步骤的下一执行步骤之后,大语言模型为了确定接下来将要确定哪个执行步骤对应候选SQL语句,可以确定该下一执行步骤是否为该转换计划中的最后一个执行步骤。如果确定该下一执行步骤为该转换计划中的最后一个执行步骤,则说明该转换计划中的所有执行步骤均确定了对应候选SQL语句,接下来可以继续确定其他转换计划中包括的每个执行步骤对应的候选SQL语句。
如果确定该下一执行步骤不为该转换计划中的最后一个执行步骤,则说明该转换计划中的执行步骤没有全部转换完成,接下来可以继续执行获取该转换计划中已经生成候选SQL语句的目标执行步骤的步骤。也就是说,将该下一执行步骤确定为目标执行步骤,并继续执行确定该转换计划中该新确定的目标执行步骤的下一执行步骤对应的多个候选SQL语句。
具体的,假设确定了对待转换文本进行转换的2个转换计划,分别为转换计划A和转换计划B,其中转换计划A包括执行步骤1、执行步骤2、执行步骤3和执行步骤4。转换计划A中已经生成候选SQL语句的执行步骤为执行步骤2,那么,该执行步骤2即为目标执行步骤。接下来,大语言模型将生成执行步骤2的下一执行步骤即执行步骤3对应的候选SQL语句。由于执行步骤3不为转换计划A中的最后一个执行步骤,因此,接下来将继续执行获取该转换计划A中已经生成候选SQL语句的目标执行步骤的步骤,即将执行步骤3确定为目标执行步骤,并继续确定执行步骤4对应的候选SQL语句。
为了进一步提高SQL语句生成的准确率,在上述各实施例的基础上,在本申请实施例中,确定所述下一执行步骤是否为该转换计划中的最后一个执行步骤的过程包括:
将第三提示文本、该转换计划与所述下一执行步骤对应的候选SQL语句进行拼接,得到第三目标文本,所述第三提示文本为提示所述大语言模型确定所述下一执行步骤是否为该转换计划最后一个执行步骤的文本;
对所述第三目标文本进行处理,得到评估文本,所述评估文本为描述该转换计划中的每个执行步骤是否均确定了对应的候选SQL语句的文本。
为了进一步提高SQL语句生成的准确率,在本申请实施例中,可以使大语言模型进行自我检验,即评估每一个中间思维所取得的进展。为了让大语言模型在进行SQL语句生成过程中可以对进展进行评估,在本申请实施例中,预先保存有第三提示文本,该第三提示文本可以是提示大语言模型确定目标执行步骤的下一执行步骤是否为该转换计划最后一个执行步骤的文本。大语言模型在确定该下一执行步骤是否为该转换计划中的最后一个执行步骤的过程中,可以将预先保存的该第三提示文本、该转换计划与下一执行步骤对应的候选SQL语句进行拼接,得到第三目标文本。假设第三提示文本为A,该转换计划为B,下一执行步骤对应的候选SQL语句为D,那么,拼接得到的第三目标文本即为ABD。
在得到了第三目标文本之后,大语言模型对该第三目标文本进行处理,得到评估文本,即由大语言模型生成描述该转换计划中的每个执行步骤是否均确定了对应的候选SQL语句的文本。
具体的,假设确定了对待转换文本进行转换的2个转换计划,分别为转换计划A和转换计划B,其中转换计划A包括执行步骤1、执行步骤2、执行步骤3和执行步骤4。转换计划A中已经生成候选SQL语句的执行步骤为执行步骤2,那么,该执行步骤2即为目标执行步骤。接下来,大语言模型将生成执行步骤2的下一执行步骤“执行步骤3”对应的候选SQL语句。在生成了执行步骤3对应的候选SQL语句之后,大语言模型可以将第三提示文本“基于给出的转换计划、子任务与反馈结果,请判断到目前为止是否完成用户输入任务(全部完成、部分完成)”、转换计划“执行步骤1、执行步骤2、执行步骤3和执行步骤4”与执行步骤3对应的候选SQL语句进行拼接,得到第三目标文本,并对该第三目标文本进行处理,得到评估文本。大语言模型所输出的评估文本为“部分完成”。
本申请实施例所提供的评估状态的策略是独立地评估每个状态,即用大语言模型对当前状态进行等级划分。
在一种可能得实施方式中,还以保存示例评估文本,将第三提示文本、该转换计划与下一执行步骤对应的候选SQL语句进行拼接,得到第三目标文本的过程中,可以将第三提示文本、示例评估文本、转换计划和下一执行步骤对应的候选SQL语句进行拼接,得到第三目标文本。也就是说,使大语言模型基于示例评估文本对当前的完成状态进行分析,从而提高大语言模型评估的准确率。示例性地,包括了示例评估文本的第三目标文本可以是:基于给出的转换计划、子任务与反馈结果,请判断到目前为止是否完成用户输入任务(全部完成、部分完成)。计划:第一步查询青岛市2022年的GDP,第二步查询青岛市2022年制造业贡献的GDP数值,第三步查询济南市2022年的GDP,第四步查询济南市2022年制造业贡献的GDP数值。下一步子任务:查询青岛市2022年的GDP。反馈:SELECT city, gdp FROM tableWHERE city = ‘青岛’ AND year = 2022;判断:部分完成。下一步子任务:查询青岛市2022年制造业贡献的GDP。反馈:SELECT city, manufacture_gdp FROM table WHERE city =‘青岛’ AND year = 2022 AND category = '制造业';判断:部分完成。下一步子任务:查询济南市2022年的GDP。反馈:SELECT city, gdp FROM table WHERE city = ‘济南’ ANDyear = 2022;判断:部分完成。下一步子任务:查询济南市2022年制造业贡献的GDP。反馈:SELECT city, manufacture_gdp FROM table WHERE city = ‘济南’ AND year = 2022AND category = '制造业';判断:全部完成。
为了进一步提高SQL语句生成的准确率,在上述各实施例的基础上,在本申请实施例中,所述路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句包括:
根据所述N个转换计划中的每个执行步骤对应的每个候选SQL语句,构造目标树,所述目标树中的根节点包括N个第一子节点,每个第一子节点对应一个转换计划,任一第一子节点包括多个第二子节点,任一第二子节点对应一个候选SQL语句,所述多个第二子节点之间是根据对应的候选SQL语句归属的转换计划、以及转换计划中的执行步骤的顺序依次进行连接的;
将每个转换计划中的第一个执行步骤对应的每个候选SQL语句确定为待评估语句;
针对每个待评估语句,所述大语言模型对该待评估语句进行评估,得到第一评分;确定该待评估语句对应的转换计划中,位于该待评估语句所对应的第一执行步骤之前的其他执行步骤的第一数量,及位于所述第一执行步骤之后的其他执行步骤的第二数量;根据所述第一数量、所述第一评分、所述第二数量,以及预设权重,确定该待评估语句对应的目标评分;根据每个待评估语句对应的目标评分,确定最优SQL语句,并将所述最优SQL语句更新为已评估语句;判断所述最优SQL语句对应的子节点是否包括其他子节点;若是,则将所述最优SQL语句所在的转换计划中,位于所述最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句确定为所述待评估语句,并执行针对每个待评估语句,使所述大语言模型对该待评估语句进行评估,得到第一评分的步骤;若否,则将所述目标树中所述最优SQL语句对应的子节点所在的路径确定为最优路径;
将所述最优路径中包括的每个子节点对应的候选SQL语句,确定为所述目标候选SQL语句,并将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
为了进一步提高SQL语句生成的准确率,在确定最优转换计划中的每个执行步骤对应的目标候选SQL语句时,可以在保证找到最佳路径的同时,也能考虑到上下文信息,并且尽可能优先考虑“更有可能”是最短路径的节点,从而达到优化搜索效率的目的。
也就是说,在本申请实施例中把每个问题形式化为一次路径搜索,每个节点是一个思维,即每个节点代表着大语言生成模型生成的转换计划或执行步骤,代表从输入到当前节点为止得到的答案。利用大语言模型进行Text2SQL推理具体包括四个关键步骤:(1)把中间过程分解成思维的步骤,即确定对待转换文本进行转换的N个转换计划;(2)对每个状态生成潜在的思维,即确定每个转换计划的每个执行步骤对应的多个候选SQL语句;(3)启发式地评估状态,即大语言模型确定下一执行步骤是否为该转换计划中的最后一个执行步骤;(4)将N个转换计划的执行步骤对应的候选SQL语句构建成树,并基于路径搜索算法对所构建成的树进行处理,确定最优路径,所确定的最优路径中的每个节点对应候选SQL语句即为目标SQL语句。
在本申请实施例中,可以根据确定的N个转换计划中的每个执行步骤对应的每个候选SQL语句,构造目标树。其中,该目标树中的根节点包括了N个第一子节点,每个第一子几点即对应着一个转换计划,示例性地,确定了3个转换计划分别为转换计划1、转换计划2和转换计划3,那么目标数中根节点下的第一层即包括了三个第一子节点,其中第一个第一子节点对应着转换计划1,第二个第一子节点对应着转换计划2,第三个第一子节点对应着转换计划3。
由于每个转换计划中包括了至少一个执行步骤,且任一执行步骤又对应着多个候选SQL语句,因此,任一第一子节点又包括了多个第二子节点,任一第二子节点即对应着一个候选SQL语句,为了将该众多第二子节点构成结构清晰的树结构,在本申请实施例中,在将每个第二子节点连接时,是根据第二节点对应的候选SQL语句所归属的转换计划、以及转换计划中的执行步骤的顺序依次进行连接的。
具体的,图2为本申请实施例提供的一种目标树的示意图,如图2所示,为了便于理解,将目标树分为了多层,其中,目标树的第一层包括了一个节点,该节点即为目标树的根节点,该根节点对应着待转换文本。根节点下面的一层,即目标树的第二层包括了N个节点,该N个节点即为上述内容所述的第一子节点,第二层中的每个节点对应着一个转换计划。每个转换计划对应的节点又均包括了多个第二子节点,为了便于理解,在本申请实施例中,将目标树的第二层往下的每一层包括的节点均称为第二子节点,该每个第二子节点均对应着一个候选SQL语句。其中,目标树的第三层包括的各个第二子节点,即代表着每个转换计划中的第一个执行步骤对应的每个候选SQL语句。如图2所示,第三层中标识为SQL1.1.1和SQL1.1.2的第二子节点,即代表着第一个转换计划中的第一个执行步骤对应的两个候选SQL语句。第三层中标识为SQLn.1.1、SQLn.1.2、SQLn.1.3的第二子节点,即代表着第n个转换计划中的第一个执行步骤对应的三个候选SQL语句。目标树的第四层包括的各个第二子节点,即代表着每个转换计划中的第二个执行步骤对应的每个候选SQL语句。如图2所示,第四层中标识为SQL1.2.1和SQL1.2.2的第二子节点,即代表着第一个转换计划中的第二个执行步骤对应的两个候选SQL语句,以此类推。
为了确定目标树中的最优路径,在构建完成目标树之后,可以将每个转换计划中的第一个执行步骤对应的每个候选SQL语句确定为待评估语句,即将图2中的第三层中各个第二子节点对应的候选SQL语句确定为待评估语句。
确定了待评估语句之后,针对每个待评估语句,大语言模型对该待评估语句进行评估,从而得到第一评分,也就是说,由大语言模型对生成的候选SQL语句的好坏进行评估。
为了在保证确定准确率最高的候选SQL语句的同时,还能保证解决问题的步骤最少,即效率最高,在本申请实施例中,还可以确定该待评估语句对应的转换计划中,位于该待评估语句所对应的第一执行步骤之前的其他执行步骤的第一数量,及位于第一执行步骤之后的其他执行步骤的第二数量。也就是说,确定执行到该待评估语句对应的执行步骤时,对应的转换计划中已经执行了的执行步骤的第一数量,以及对应的转换计划中还未执行的执行步骤的第二数量。
在确定了第一数量、第二数量和第一评分之后,即可根据第一数量、第一评分、第二数量,以及预设权重,确定该待评估语句对应的目标评分。示例性的,预先针对第一数量对应保存有权重1、针对第一评分对应保存有权重2、针对第二数量对应保存有权重3,其中权重1、权重2和权重3的和值为1。那么所确定目标评分可以表示为:目标评分=第一数量*权重1+第一评分*权重2+第二数量*权重3。
需要说明的是,本申请实施例是希望确定路径最短且对应的候选SQL语句的质量最高的路径,因此,在本申请实施例中,可以预先将评分划分区间,并为每个区间分配最终评分。例如,将评分划分为优、良、中、差,其中优对应的最终评分为10,良对应的最终评分为40,中对应的最终评分为70,差对应的最终评分为99。那么,基于该评分区间划分方式,根据第一评分,第一数量、第二数量所确定的目标评分越小越好,因此,在根据每个待评估语句对应的目标评分,确定最优SQL语句时,可以将目标评分中的最小值对应的候选SQL语句确定为最优SQL语句,并将该最优SQL语句标记为已评估语句。并判断该最优SQL语句对应的子节点是否包括其他子节点,也就是说,判断该最优SQL语句对应的执行步骤,是否为对应的转换计划中的最后一个执行步骤。若是,则说明还没有找到最优路径,可以将该最优SQL语句对应的下一执行步骤对应的每个候选SQL语句确定为待评估语句,并继续执行针对每个待评估语句,使大语言模型对该待评估语句进行评估,得到第一评分的步骤。若是,则说明已经确定了目标树中的最优路径,可以将该最优SQL语句对应的第二子节点所在的路径确定为最优路径,并将该最优路径中包括的每个第二子节点对应的候选SQL语句,确定为目标候选SQL语句,并将该目标候选SQL语句确定为待转换文本对应的目标SQL语句。
为了进一步提高SQL语句生成的准确率,在上述各实施例的基础上,在本申请实施例中,所述大语言模型对该待评估语句进行评估,得到第一评分包括:
所述大语言模型将预先保存的第四提示文本、该待评估语句对应的执行步骤的内容与该待评估语句拼接,得到第四目标文本,所述第四提示文本为提示所述大语言模型对该待评估语句进行评价的文本;
对该第四目标文本进行处理,得到所述第一评分。
大语言模型在对该待评估语句进行评估时,大语言模型可以将预先保存的第四提示文本、该待评估语句对应的执行步骤的内容与该待评估语句拼接,得到第四目标文本,其中,该第四提示文本为提示大语言模型对该待评估语句进行评价的文本。示例性地,该第四提示文本可以是“请对下面的SQL语句的准确性进行评估,评估结果为优、良、中、差中的一项”。在得到了该第四目标文本之后,即对该第四目标文本进行处理,从而得到评估结果,该评估结果对应的分值即为第一评分。
具体的,假设预先配置的评估结果“优”对应的最终评分为10,“良”对应的最终评分为40,“中”对应的最终评分为70,“差”对应的最终评分为99。大语言根据第四目标文本,确定的评估结果为良,那么,则可以确定第一评分为40。
为了进一步提高SQL语句生成的准确率,在上述各实施例的基础上,在本申请实施例中,所述根据所述第一数量、所述第一评分、所述第二数量,以及预设权重,确定该待评估语句对应的目标评分包括:
确定所述第一数量与第一预设权重的第一积值,所述第一评分与第二预设权重的第二积值,以及所述第一积值与所述第二积值的第一和值,所述第一预设权重与所述第二预设权重的和为1;
将所述第一和值与所述第二数量的和值,确定为该待评估语句对应的目标评分。
在本申请实施例中,预先配置有第一预设权重和第二预设权重,第一预设权重与第二预设权重的和为1。在确定该待评估语句对应的目标评分时,可以确定第一数量与第一预设权重的第一积值,第一评分与第二预设权重的第二积值,以及第一积值与第二积值的第一和值。将第一和值与第二数量的和值,确定为该待评估语句对应的目标评分。
具体的,确定目标评分的过程可以使用如下公式进行表示:
f(n)=g(n)+h(n)
其中,f(n)为待评估语句n的目标评分;h(n)为待评估语句n对应的第二数量;g(n)为待评估语句n对应的第一和值,该g(n)可以表示为:g(n)=x1*A+x2*B,其中x1为第一预设权重,A为待评估语句n对应的第一数量,x2为第二预设权重,A为待评估语句n对应的第一评分。
为了进一步提高SQL语句生成的准确率,在上述各实施例的基础上,在本申请实施例中,所述将所述最优SQL语句所在的转换计划中,位于所述最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句确定为所述待评估语句包括:
确定所述最优SQL语句所在的转换计划中,位于所述最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句;
针对所确定的每个候选SQL语句,判断该候选SQL语句是否为已评估语句,若否,则将该候选SQL语句确定为所述待评估语句。
由于存在某一个候选SQL语句同时为多个执行步骤对应的候选SQL语句的情况,因此,可能在确定最优SQL语句时,该最优SQL语句所对应的执行步骤的下一执行步骤对应的候选SQL语句中,存在已评估语句,因此为了避免重复检索,在本申请实施例中,在将最优SQL语句所在的转换计划中,位于最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句确定为待评估语句时,可以确定该最优SQL语句所在的转换计划中,位于该最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句。
并针对所确定的每个候选SQL语句,判断该候选SQL语句是否为已评估语句,若是,则无需对该候选SQL语句重复进行检索,若否,则将该候选SQL语句确定为待评估语句。
具体的,假设某一个转换计划中的执行步骤3对应有候选SQL语句A、候选SQL语句B、候选SQL语句C,执行步骤4对应有候选SQL语句D、候选SQL语句E、候选SQL语句F。假设确定了候选SQL语句C为最优SQL语句,而执行步骤4对应的候选SQL语句E为已评估语句,那么,则可以将候选SQL语句D和候选SQL语句F确定为待评估语句。
本申请实施例提供的路径搜索方案可以寻找最有可能的最佳路径,提升搜索效率。尽管类似BFS的启发式方法运行效率非常高,但是经常给出一个近似解而不是保证最优解,而本申请实施例提供的路径搜索方案能够保证找到一条最短且效果最优的路径,同时不损失太多运行效率。如下表1为本申请实施例提供的一种路径搜索的伪代码:
表1
上述表1中,open_list中保存有各个待评估语句,closed_list中保存有已评估语句;评价函数为上述实施例中所述的f(n)=g(n)+h(n)。
下面结合一个具体的实施例对候选SQL语句生成过程进行说明,图3为本申请实施例提供的一种基于大语言模型生成候选SQL语句的过程示意图。如图3所示,将待转换文本输入到大语言模型中,大语言模型在接收到待转换文本之后,可以将第一提示文本、示例文本与所述待转换文本拼接,得到第一目标文本,从而对该第一目标文本进行处理,得到对待转换文本进行转换的N个转换计划。
具体的,第一目标文本包括以下内容:
你是一个数据库专家,当前要解决的任务是Text2SQL,就是把Text2SQL任务分解成几个子任务,每个子任务都可以转换成可执行的结构化查询语句SQL,输出的SQL语句保持准确性以及运行效率。
输入:2022年青岛市GDP分别是多少?那制造业的呢?再帮我看看济南的。
计划:
第一步查询青岛市2022年的GDP,对应SQL语句为 SELECT city, gdp FROM tableWHERE city = ‘青岛’ AND year = 2022;
第二步查询青岛市2022年制造业贡献的GDP,对应SQL语句为 SELECT city,manufacture_gdp FROM table WHERE city = ‘青岛’ AND year = 2022 AND category ='制造业';
第三步查询济南市2022年的GDP,对应SQL语句为 SELECT city, gdp FROM tableWHERE city = ‘济南’ AND year = 2022;
第四步查询济南市2022年制造业贡献的GDP,对应SQL语句为 SELECT city,manufacture_gdp FROM table WHERE city = ‘济南’ AND year = 2022 AND category ='制造业';
基于以下用户的输入描述,写出5种完成该Text2SQL任务的计划。
输入:{input_text}。
上述第一目标文本中“你是一个数据库专家,当前要解决的任务是Text2SQL,就是把Text2SQL任务分解成几个子任务,每个子任务都可以转换成可执行的结构化查询语句SQL,输出的SQL语句保持准确性以及运行效率。”即为第一提示文本,“输入:”和“计划:”后面的文本即为示例文本, “{input_text}”即为待转换文本。
图3中所示的Plan1、Plan2、Plan3、Plan4、Plan5,即为大语言模型所确定的5个转换计划。
为了确定更多的候选SQL语句,在得到了5个转换计划中每个执行步骤之后,大语言模型可以针对每个转换计划,获取该转换计划中已经生成候选SQL语句的目标执行步骤,将预先保存的第二提示文本、该转换计划与目标执行步骤对应的候选SQL语句进行拼接,得到第二目标文本,以确定每个执行步骤对应的多个候选SQL语句。
具体的,第二目标文本包括以下内容:
基于给出的计划与反馈结果,请简要分析并给出下一步的子任务,可以列出多种可能的下一步任务。
计划:第一步查询青岛市2022年的GDP,对应SQL语句为 SELECT city, gdp FROMtable WHERE city = ‘青岛’ AND year = 2022;
第二步查询青岛市2022年制造业贡献的GDP,对应SQL语句为 SELECT city,manufacture_gdp FROM table WHERE city = ‘青岛’ AND year = 2022 AND category ='制造业';
第三步查询济南市2022年的GDP,对应SQL语句为 SELECT city, gdp FROM tableWHERE city = ‘济南’ AND year = 2022;
第四步查询济南市2022年制造业贡献的GDP,对应SQL语句为 SELECT city,manufacture_gdp FROM table WHERE city = ‘济南’ AND year = 2022 AND category ='制造业';
反馈:SELECT city, gdp FROM table WHERE city = ‘青岛’ AND year = 2022;
下一步子任务:查询青岛市2022年制造业贡献的GDP
输入:{input_text}
上述第二目标文本中“基于给出的计划与反馈结果,请简要分析并给出下一步的子任务,可以列出多种可能的下一步任务。”即为第二提示文本,“计划”后面的文本即为对应的转换计划,“反馈”后面的SQL语句即表示当前已生成多个候选SQL语句的最后一个执行步骤对应的候选SQL语句,“下一步子任务:查询青岛市2022年制造业贡献的GDP”即为大语言模型所确定的接下里将要确定哪个一个执行步骤的候选SQL语句。“{input_text}”即为在应用时对应的转换计划包括的内容。
在确定了该下一步子任务对应的多个候选SQL语句之后,大语言模型可以进一步将第三提示文本、该转换计划与下一执行步骤对应的候选SQL语句进行拼接,得到第三目标文本,以确定对应的转换计划中包括的执行步骤是否均确定完成候选SQL语句。
具体的,第三目标文本可以包括以下内容:
基于给出的转换计划、子任务与反馈结果,请判断到目前为止是否完成用户输入任务(全部完成、部分完成)。
计划:第一步查询青岛市2022年的GDP,第二步查询青岛市2022年制造业贡献的GDP数值,第三步查询济南市2022年的GDP,第四步查询济南市2022年制造业贡献的GDP数值。
下一步子任务:查询青岛市2022年的GDP。
反馈:SELECT city, gdp FROM table WHERE city = ‘青岛’ AND year = 2022;
判断:部分完成。
下一步子任务:查询青岛市2022年制造业贡献的GDP。
反馈:SELECT city, manufacture_gdp FROM table WHERE city = ‘青岛’ ANDyear = 2022 AND category = '制造业';
判断:部分完成。
下一步子任务:查询济南市2022年的GDP。
反馈:SELECT city, gdp FROM table WHERE city = ‘济南’ AND year = 2022;
判断:部分完成。
下一步子任务:查询济南市2022年制造业贡献的GDP。
反馈:SELECT city, manufacture_gdp FROM table WHERE city = ‘济南’ ANDyear = 2022 AND category = '制造业';
判断:全部完成
输入:{input_text}
上述第三目标文本中“基于给出的转换计划、子任务与反馈结果,请判断到目前为止是否完成用户输入任务(全部完成、部分完成)”即为第三提示文本。从“计划:第一步查询青岛市2022年的GDP”到“输入:{input_text}”之间的内容即为预先保存的示例文本,“输入:{input_text}”即标识为对应的转换计划及当前已经确定完成的候选SQL语句。
在确定了每个执行步骤对应的候选SQL语句之后,基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将目标候选SQL语句确定为待转换文本对应的目标SQL语句。
经测试,本申请实施例提供的SQL语句生成方法可以解决95%以上的问题,大语言模型的自我纠错能力大大提升了推理的准确率,同时通过本申请实施例提供的路径搜索方案也能够呈现极短的推理耗时。
本申请实施例提供的一种探索多条思维推理路径,以提升大语言模型自主推理Text2SQL能力的实现方法。本申请实施例提供的SQL语句生成方法聚焦于大语言模型推理尚未探索的Text2SQL领域,具有高灵活性、高自动化水平、可自我纠错等优势,激发了大语言模型高级推理能力,为大语言模型的多模态扩展提供了启发。
大语言模型推理Text2SQL的实现充分利用了大语言模型的语言处理能力、可扩展性、适应性和学习能力,让大语言模型自主分解思维、生成思维、评估状态,最大限度地减少了人工干预。此外,结路径搜索算法在提升搜索效率的同时也能保证找到最佳的思维路径。
现有的方法是对解决问题的连续的多个思维进行采样,但本申请提出的方法积极维护一系列具有延续关系的思维序列,其中每个思维都是一个连贯的文本,作为解决问题的中间步骤。这种高级语义单元允许大语言模型进行自我检验,即评估每一个中间思维所取得的进展。这种通过大语言模型自我评估和思考的启发式搜索方式是新颖的,并结合具有最优性与高运行效率的路径搜索算法,能够进一步提升结果的可解释性与可靠性。
本申请实施例提供的一种基于大语言模型SQL语句生成方法、装置、设备及介质,在充分理解业务的前提下,提升了大语言模型推理Text2SQL任务的可解释性与可靠性。首先借助大语言模型的生成能力清晰地拆分思维,思维之间具有前后延续关系,在可解释性方面超越了其他提示方法。其次,本申请允许大语言模型在自我评估的同时,结合之前的反馈进行自我纠错,降低思维之间错误传播的概率,巩固输出的可靠性;而且路径搜索算法是基于启发式地搜索算法,确保了结果的最优性。
本申请所保护的技术方案具有可泛化性、实时性、可控性、可靠性特点,符合可信赖特性。
在上述各实施例的基础上,图4为本申请实施例提供的一种基于大语言模型的SQL语句生成装置结构示意图,该装置包括:
获取模块401,用于获取待转换文本;
生成模块402,用于将所述待转换文本输入到所述大语言模型中,所述大语言模型根据所述待转换文本中包括的内容,确定对所述待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤;确定每个所述执行步骤对应的多个候选SQL语句;基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
在一种可能的实施方式中,所述生成模块402,具体用于所述大语言模型将预先保存的第一提示文本、示例文本与所述待转换文本拼接,得到第一目标文本,所述第一提示文本为提示所述大语言模型对所述待转换文本的转换计划进行确定的文本,所述示例文本为对其他待转换文本所确定的N个转换计划的举例;基于所述示例文本中举例的转换计划的思路对所述第一目标文本进行处理,得到对所述待转换文本进行转换的N个转换计划。
在一种可能的实施方式中,所述生成模块402,具体用于所述大语言模型针对每个转换计划,获取该转换计划中已经生成候选SQL语句的目标执行步骤;将预先保存的第二提示文本、该转换计划与所述目标执行步骤对应的候选SQL语句进行拼接,得到第二目标文本,所述第二提示文本为提示所述大语言模型生成所述目标执行步骤的下一执行步骤对应的候选SQL语句的文本;对所述第二目标文本进行处理,得到所述目标执行步骤的下一执行步骤对应的候选SQL语句;确定所述下一执行步骤是否为该转换计划中的最后一个执行步骤,若是,则确定继续确定其他转换计划中包括的每个执行步骤对应的候选SQL语句;若否,则继续执行获取该转换计划中已经生成候选SQL语句的目标执行步骤的步骤。
在一种可能的实施方式中,所述生成模块402,具体用于将第三提示文本、该转换计划与所述下一执行步骤对应的候选SQL语句进行拼接,得到第三目标文本,所述第三提示文本为提示所述大语言模型确定所述下一执行步骤是否为该转换计划的最后一个执行步骤的文本;对所述第三目标文本进行处理,得到评估文本,所述评估文本为描述该转换计划中的每个执行步骤是否均确定了对应的候选SQL语句的文本。
在一种可能的实施方式中,所述生成模块402,具体用于根据所述N个转换计划中的每个执行步骤对应的每个候选SQL语句,构造目标树,所述目标树中的根节点包括N个第一子节点,每个第一子节点对应一个转换计划,任一第一子节点包括多个第二子节点,任一第二子节点对应一个候选SQL语句,所述多个第二子节点之间是根据对应的候选SQL语句归属的转换计划、以及转换计划中的执行步骤的顺序依次进行连接的;将每个转换计划中的第一个执行步骤对应的每个候选SQL语句确定为待评估语句;针对每个待评估语句,所述大语言模型对该待评估语句进行评估,得到第一评分;确定该待评估语句对应的转换计划中,位于该待评估语句所对应的第一执行步骤之前的其他执行步骤的第一数量,及位于所述第一执行步骤之后的其他执行步骤的第二数量;根据所述第一数量、所述第一评分、所述第二数量,以及预设权重,确定该待评估语句对应的目标评分;根据每个待评估语句对应的目标评分,确定最优SQL语句,并将所述最优SQL语句更新为已评估语句;判断所述最优SQL语句对应的子节点是否包括其他子节点;若是,则将所述最优SQL语句所在的转换计划中,位于所述最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句确定为所述待评估语句,并执行针对每个待评估语句,使所述大语言模型对该待评估语句进行评估,得到第一评分的步骤;若否,则将所述目标树中所述最优SQL语句对应的子节点所在的路径确定为最优路径;将所述最优路径中包括的每个子节点对应的候选SQL语句,确定为所述目标候选SQL语句,并将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
在一种可能的实施方式中,所述生成模块402,具体用于所述大语言模型将预先保存的第四提示文本、该待评估语句对应的执行步骤的内容与该待评估语句拼接,得到第四目标文本,所述第四提示文本为提示所述大语言模型对该待评估语句进行评价的文本;对该第四目标文本进行处理,得到所述第一评分。
在一种可能的实施方式中,所述生成模块402,具体用于确定所述第一数量与第一预设权重的第一积值,所述第一评分与第二预设权重的第二积值,以及所述第一积值与所述第二积值的第一和值,所述第一预设权重与所述第二预设权重的和为1;将所述第一和值与所述第二数量的和值,确定为该待评估语句对应的目标评分。
在一种可能的实施方式中,所述生成模块402,具体用于确定所述最优SQL语句所在的转换计划中,位于所述最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句;针对所确定的每个候选SQL语句,判断该候选SQL语句是否为已评估语句,若否,则将该候选SQL语句确定为所述待评估语句。
在上述实施例的基础上,本申请实施例还提供了一种电子设备,图5为本申请实施例提供的一种电子设备结构示意图,如图5所示,包括:处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信;
存储器503中存储有计算机程序,当程序被处理器501执行时,使得处理器501执行上述任一实施例所述基于大语言模型的SQL语句生成方法的步骤。
由于上述电子设备解决问题的原理与基于大语言模型的SQL语句生成方法相似,因此上述电子设备的实施可以参见方法的实施例,重复之处不再赘述。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口502用于上述电子设备与其他设备之间的通信。存储器可以包括随机存取存储器(RandomAccess Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字指令处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
在上述各实施例的基础上,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有可由处理器执行的计算机程序,当程序在处理器上运行时,使得处理器执行时实现上述任一实施例所述基于大语言模型的SQL语句生成方法的步骤。
由于上述计算机可读存储介质解决问题的原理与基于大语言模型的SQL语句生成方法相似,因此上述计算机可读存储介质的实施可以参见方法的实施例,重复之处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种基于大语言模型的SQL语句生成方法,其特征在于,所述方法包括:
获取待转换文本;
将所述待转换文本输入到所述大语言模型中,所述大语言模型根据所述待转换文本中包括的内容,确定对所述待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤;确定每个所述执行步骤对应的多个候选SQL语句;基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
2.根据权利要求1所述的方法,其特征在于,所述大语言模型根据所述待转换文本中包括的内容,确定对所述待转换文本进行转换的N个转换计划包括:
所述大语言模型将预先保存的第一提示文本、示例文本与所述待转换文本拼接,得到第一目标文本,所述第一提示文本为提示所述大语言模型对所述待转换文本的转换计划进行确定的文本,所述示例文本为对其他待转换文本所确定的N个转换计划的举例;
基于所述示例文本中举例的转换计划的思路对所述第一目标文本进行处理,得到对所述待转换文本进行转换的N个转换计划。
3.根据权利要求1所述的方法,其特征在于,所述确定每个所述执行步骤对应的多个候选SQL语句包括:
所述大语言模型针对每个转换计划,获取该转换计划中已经生成候选SQL语句的目标执行步骤;将预先保存的第二提示文本、该转换计划与所述目标执行步骤对应的候选SQL语句进行拼接,得到第二目标文本,所述第二提示文本为提示所述大语言模型生成所述目标执行步骤的下一执行步骤对应的候选SQL语句的文本;对所述第二目标文本进行处理,得到所述目标执行步骤的下一执行步骤对应的候选SQL语句;确定所述下一执行步骤是否为该转换计划中的最后一个执行步骤,若是,则确定继续确定其他转换计划中包括的每个执行步骤对应的候选SQL语句;若否,则继续执行获取该转换计划中已经生成候选SQL语句的目标执行步骤的步骤。
4.根据权利要求3所述的方法,其特征在于,确定所述下一执行步骤是否为该转换计划中的最后一个执行步骤的过程包括:
将第三提示文本、该转换计划与所述下一执行步骤对应的候选SQL语句进行拼接,得到第三目标文本,所述第三提示文本为提示所述大语言模型确定所述下一执行步骤是否为该转换计划的最后一个执行步骤的文本;
对所述第三目标文本进行处理,得到评估文本,所述评估文本为描述该转换计划中的每个执行步骤是否均确定了对应的候选SQL语句的文本。
5.根据权利要求1所述的方法,其特征在于,所述路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句包括:
根据所述N个转换计划中的每个执行步骤对应的每个候选SQL语句,构造目标树,所述目标树中的根节点包括N个第一子节点,每个第一子节点对应一个转换计划,任一第一子节点包括多个第二子节点,任一第二子节点对应一个候选SQL语句,所述多个第二子节点之间是根据对应的候选SQL语句归属的转换计划、以及转换计划中的执行步骤的顺序依次进行连接的;
将每个转换计划中的第一个执行步骤对应的每个候选SQL语句确定为待评估语句;
针对每个待评估语句,所述大语言模型对该待评估语句进行评估,得到第一评分;确定该待评估语句对应的转换计划中,位于该待评估语句所对应的第一执行步骤之前的其他执行步骤的第一数量,及位于所述第一执行步骤之后的其他执行步骤的第二数量;根据所述第一数量、所述第一评分、所述第二数量,以及预设权重,确定该待评估语句对应的目标评分;根据每个待评估语句对应的目标评分,确定最优SQL语句,并将所述最优SQL语句更新为已评估语句;判断所述最优SQL语句对应的子节点是否包括其他子节点;若是,则将所述最优SQL语句所在的转换计划中,位于所述最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句确定为所述待评估语句,并执行针对每个待评估语句,使所述大语言模型对该待评估语句进行评估,得到第一评分的步骤;若否,则将所述目标树中所述最优SQL语句对应的第二子节点所在的路径确定为最优路径;
将所述最优路径中包括的每个第二子节点对应的候选SQL语句,确定为所述目标候选SQL语句,并将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
6.根据权利要求5所述的方法,其特征在于,所述大语言模型对该待评估语句进行评估,得到第一评分包括:
所述大语言模型将预先保存的第四提示文本、该待评估语句对应的执行步骤的内容与该待评估语句拼接,得到第四目标文本,所述第四提示文本为提示所述大语言模型对该待评估语句进行评价的文本;
对该第四目标文本进行处理,得到所述第一评分。
7.根据权利要求5所述的方法,其特征在于,所述根据所述第一数量、所述第一评分、所述第二数量,以及预设权重,确定该待评估语句对应的目标评分包括:
确定所述第一数量与第一预设权重的第一积值,所述第一评分与第二预设权重的第二积值,以及所述第一积值与所述第二积值的第一和值,所述第一预设权重与所述第二预设权重的和为1;
将所述第一和值与所述第二数量的和值,确定为该待评估语句对应的目标评分。
8.根据权利要求6所述的方法,其特征在于,所述将所述最优SQL语句所在的转换计划中,位于所述最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句确定为所述待评估语句包括:
确定所述最优SQL语句所在的转换计划中,位于所述最优SQL语句所对应的执行步骤的下一执行步骤对应的每个候选SQL语句;
针对所确定的每个候选SQL语句,判断该候选SQL语句是否为已评估语句,若否,则将该候选SQL语句确定为所述待评估语句。
9.一种基于大语言模型的SQL语句生成装置,其特征在于,所述装置包括:
获取模块,用于获取待转换文本;
生成模块,用于将所述待转换文本输入到所述大语言模型中,所述大语言模型根据所述待转换文本中包括的内容,确定对所述待转换文本进行转换的N个转换计划,任一转换计划中包括至少一个执行步骤;确定每个所述执行步骤对应的多个候选SQL语句;基于路径搜索算法确定最优转换计划中的每个执行步骤对应的目标候选SQL语句,将所述目标候选SQL语句确定为所述待转换文本对应的目标SQL语句。
10.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-8任一项所述基于大语言模型的SQL语句生成方法的步骤。
CN202311540773.4A 2023-11-20 2023-11-20 一种基于大语言模型的sql语句生成方法、装置及设备 Active CN117271561B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311540773.4A CN117271561B (zh) 2023-11-20 2023-11-20 一种基于大语言模型的sql语句生成方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311540773.4A CN117271561B (zh) 2023-11-20 2023-11-20 一种基于大语言模型的sql语句生成方法、装置及设备

Publications (2)

Publication Number Publication Date
CN117271561A true CN117271561A (zh) 2023-12-22
CN117271561B CN117271561B (zh) 2024-03-01

Family

ID=89221869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311540773.4A Active CN117271561B (zh) 2023-11-20 2023-11-20 一种基于大语言模型的sql语句生成方法、装置及设备

Country Status (1)

Country Link
CN (1) CN117271561B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016050066A1 (zh) * 2014-09-29 2016-04-07 华为技术有限公司 知识库中问句解析的方法及设备
US20170091298A1 (en) * 2015-09-25 2017-03-30 International Business Machines Corporation Replicating structured query language (sql) in a heterogeneous replication environment
WO2023051021A1 (zh) * 2021-09-30 2023-04-06 阿里巴巴达摩院(杭州)科技有限公司 人机对话方法、装置、设备及存储介质
CN116629227A (zh) * 2023-07-24 2023-08-22 海信集团控股股份有限公司 一种将文本转换为sql语句的方法及设备
CN116756169A (zh) * 2023-05-30 2023-09-15 淘宝(中国)软件有限公司 交互式生成数据报表的方法及计算设备
CN116991869A (zh) * 2023-07-24 2023-11-03 北京泰策科技有限公司 一种基于nlp语言模型自动生成数据库查询语句的方法
CN116991875A (zh) * 2023-09-26 2023-11-03 海信集团控股股份有限公司 一种基于大模型的sql语句生成、别名映射方法及设备
CN117033418A (zh) * 2023-08-25 2023-11-10 恒生电子股份有限公司 语句重写方法、系统及装置
CN117056351A (zh) * 2023-10-07 2023-11-14 腾讯科技(深圳)有限公司 Sql语句生成方法、装置及设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016050066A1 (zh) * 2014-09-29 2016-04-07 华为技术有限公司 知识库中问句解析的方法及设备
US20170091298A1 (en) * 2015-09-25 2017-03-30 International Business Machines Corporation Replicating structured query language (sql) in a heterogeneous replication environment
WO2023051021A1 (zh) * 2021-09-30 2023-04-06 阿里巴巴达摩院(杭州)科技有限公司 人机对话方法、装置、设备及存储介质
CN116756169A (zh) * 2023-05-30 2023-09-15 淘宝(中国)软件有限公司 交互式生成数据报表的方法及计算设备
CN116629227A (zh) * 2023-07-24 2023-08-22 海信集团控股股份有限公司 一种将文本转换为sql语句的方法及设备
CN116991869A (zh) * 2023-07-24 2023-11-03 北京泰策科技有限公司 一种基于nlp语言模型自动生成数据库查询语句的方法
CN117033418A (zh) * 2023-08-25 2023-11-10 恒生电子股份有限公司 语句重写方法、系统及装置
CN116991875A (zh) * 2023-09-26 2023-11-03 海信集团控股股份有限公司 一种基于大模型的sql语句生成、别名映射方法及设备
CN117056351A (zh) * 2023-10-07 2023-11-14 腾讯科技(深圳)有限公司 Sql语句生成方法、装置及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
兰小机, 闾国年, 刘德儿, 张书亮: "基于XQuery的GML查询语言研究", 测绘科学, no. 06, 20 December 2005 (2005-12-20), pages 100 - 103 *
曹金超;黄滔;陈刚;吴晓凡;陈珂;: "自然语言生成多表SQL查询语句技术研究", 计算机科学与探索, no. 07, pages 57 - 65 *

Also Published As

Publication number Publication date
CN117271561B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
Bocklisch et al. Rasa: Open source language understanding and dialogue management
CN116737908A (zh) 知识问答方法、装置、设备和存储介质
CN109325040A (zh) 一种faq问答库泛化方法、装置及设备
Zelikman et al. Parsel🐍: Algorithmic Reasoning with Language Models by Composing Decompositions
JP2015028791A (ja) 自律型知識向上装置
CN116909532A (zh) 一种代码生成与缺陷修复方法和装置
CN117743531A (zh) 基于知识图谱和大型语言模型协同的智能查询推理方法及装置
Verma et al. Discovering user-interpretable capabilities of black-box planning agents
de Campos et al. Stochastic local algorithms for learning belief networks: Searching in the space of the orderings
CN117542509A (zh) 一种基于诊疗指导树和诊疗推理引擎的多轮问诊方法
CN117634617A (zh) 知识密集型推理问答方法、装置、电子设备和存储介质
CN117744754A (zh) 大语言模型任务处理方法、装置、设备及介质
CN117932019A (zh) 大语言模型的训练方法、装置、介质及电子设备
CN117271561B (zh) 一种基于大语言模型的sql语句生成方法、装置及设备
CN117933402A (zh) 基于gnn的电网知识图谱多跳推理方法与系统
Allen et al. Conversational agents for complex collaborative tasks
CN117370568A (zh) 一种基于预训练语言模型的电网主设备知识图谱补全方法
Saini et al. Domobot: An ai-empowered bot for automated and interactive domain modelling
CN115422370A (zh) 一种基于知识图谱的需求影响域分析方法
Li et al. Towards Goal-oriented Large Language Model Prompting: A Survey
Stoyanchev et al. Knowledge-graph driven information state approach to dialog
Virmajoki Detecting code smells using artificial intelligence: a prototype
Christakopoulou et al. Glass-box program synthesis: A machine learning approach
CN113076409A (zh) 应用于机器人的对话系统及方法、机器人、可读介质
Cao et al. KERE: A General Reasoning Engine for Complex Problem Solving

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant