CN117056351A - Sql语句生成方法、装置及设备 - Google Patents

Sql语句生成方法、装置及设备 Download PDF

Info

Publication number
CN117056351A
CN117056351A CN202311285556.5A CN202311285556A CN117056351A CN 117056351 A CN117056351 A CN 117056351A CN 202311285556 A CN202311285556 A CN 202311285556A CN 117056351 A CN117056351 A CN 117056351A
Authority
CN
China
Prior art keywords
candidate tables
queried
sql
statement
candidate
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
CN202311285556.5A
Other languages
English (en)
Other versions
CN117056351B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311285556.5A priority Critical patent/CN117056351B/zh
Publication of CN117056351A publication Critical patent/CN117056351A/zh
Application granted granted Critical
Publication of CN117056351B publication Critical patent/CN117056351B/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
    • 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/245Query processing
    • G06F16/2453Query optimisation
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种SQL语句生成方法、装置及设备,可以涉及人工智能技术,该方法包括:获取自然语言形式的待查询语句;将待查询语句输入第一大语言模型,得到待查询语句的应用信息、时间信息和指标信息;基于应用信息和指标信息,召回K个第一候选表;基于待查询语句、K个第一候选表和时间信息,得到待查询语句对应的第一SQL语句,从而可以提高SQL语句生成效率,进而可以提高数据库查询效率,也为实现自然语言与数据库之间的无缝交互提供了有力支持。

Description

SQL语句生成方法、装置及设备
技术领域
本申请实施例涉及人工智能(Artificial Intelligence, AI)技术领域,尤其涉及一种SQL语句生成方法、装置及设备。
背景技术
结构化查询语言(Structured Query Language,SQL)语句是对数据库进行操作的一种语言。目前SQL语句主要依赖用户手动编写,这种方式导致SQL语句生成效率较低,进而导致数据库查询效率较低。
发明内容
本申请实施例提供一种SQL语句生成方法、装置及设备,从而可以提高SQL语句生成效率,进而可以提高数据库查询效率。
第一方面,本申请实施例提供一种SQL语句生成方法,该方法包括:获取自然语言形式的待查询语句;将待查询语句输入第一大语言模型,得到待查询语句的应用信息、时间信息和指标信息;基于应用信息和指标信息,召回K个第一候选表,K为大于1的整数;基于待查询语句、K个第一候选表和时间信息,得到待查询语句对应的第一SQL语句。
第二方面,本申请实施例提供一种SQL语句生成装置,该装置包括:收发模块和处理模块,其中,收发模块用于获取自然语言形式的待查询语句;处理模块用于:将待查询语句输入第一大语言模型,得到待查询语句的应用信息、时间信息和指标信息;基于应用信息和指标信息,召回K个第一候选表,K为大于1的整数;基于待查询语句、K个第一候选表和时间信息,得到待查询语句对应的第一SQL语句。
第三方面,本申请实施例提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面或其各实现方式中的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如第一方面或其各实现方式中的方法。
第六方面,本申请实施例提供一种计算机程序,计算机程序使得计算机如执行如第一方面或其各实现方式中的方法。
通过本申请实施例提供的技术方案,电子设备可以基于大语言模型,将自然语言形式的待查询语句自动转换为SQL语句,而无需用户手动编写SQL语句,相对于人工方式可以提高SQL语句生成效率,进而可以提高数据库查询效率。
其中,大语言模型可以对待查询语句进行命名实体识别,得到待查询语句的关键信息,以更好的理解用户的查询意图;进一步地将这些关键信息与数据库中的表的信息进行关联,从而可以基于用户的查询意图实现精确的库表定位,进而可以提高SQL语句的准确度,也为实现自然语言与数据库之间的无缝交互提供了有力支持。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的应用场景示意图;
图2为本申请实施例提供的一种SQL语句生成方法的流程图;
图3为LoRA方法的实现原理示意图;
图4为本申请实施例提供的一种SQL语句生成方法示意图;
图5为本申请实施例提供的另一种SQL语句生成方法示意图;
图6为本申请实施例提供的一种SQL语句生成装置600的示意;
图7是本申请实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在介绍本申请技术方案之前,下面先对本申请技术方案的相关知识进行阐述:
一、SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL语句是对数据库进行操作的一种语言。
二、大语言模型,是一种语言模型,由具有许多参数(通常数十亿个权重或更多)的神经网络组成,使用自监督学习或半监督学习对大量未标记文本进行训练得到。大型语言模型是通用的模型,在广泛的任务中表现出色,而不是针对一项特定任务。
三、正则表达式,又称规则表达式(Regular Expression,RE),是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
四、主键,是能确定一条记录的唯一标识。
五、外键,用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。例如:a表(用户信息表)中存有用户号,用户名称,其中,用户号为主键。b表(用户订单表)中存有每个用户的订单,a表的用户号是b表的外键。
六、命名实体识别(Named EntityRecognition,NER),又被称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。
七、低秩适应(Low-Rank Adaptation,LoRA)方法:微调冻结了大语言模型的权重,并将可训练的秩分解矩阵注入到 转换模块(Transformer)架构的每一层,极大地减少了下游任务的可训练参数的数量。
八、少样本(few shot)学习(learning),指从少量标注样本中进行学习的一种思想。少样本学习与标准的监督学习不同,由于训练数据太少,所以不能让模型去“认识”图片,再泛化到测试集中。而是让模型来区分两个图片的相似性。当把少样本学习运用到分类问题上时,就可以称之为少样本分类。当运用于回归问题上时,就可以称之为少样本回归。
本申请实施例涉及人工智能(Artificial Intelligence, AI)技术。
人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、预训练模型技术、操作/交互系统、机电一体化等。其中,预训练模型又称大模型、基础模型,经过微调后可以广泛应用于人工智能各大方向下游任务。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
自然语言处理(Nature Language processing,NLP)是计算机科学领域与人工智能领域中的重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理涉及自然语言,即人们日常使用的语言,与语言学研究密切;同时涉及计算机科学和数学。人工智能领域模型训练的重要技术,预训练模型,即是从NLP领域的大语言模型(Large Language Model,LLM)发展而来。经过微调,大语言模型可以广泛应用于下游任务。
在本申请实施例中,可以通过微调的大语言模型执行NER任务,例如,可以将自然语言形式的待查询语句输入至微调后的大语言模型,通过该微调的大语言模型识别待查询语句的应用信息、时间信息、指标信息。还可以识别待查询语句的至少一个限制条件。
应理解的是,在本申请实施例中,可以将该微调后的大语言模型称为第一大语言模型。
在本申请实施例中,也可以将待查询语句、第i个限制条件列表、K个第一候选表的筛选字段、待查询语句的时间信息、K个第一候选表中的第i个候选表和至少一个样本输入至微调后的大语言模型,得到第i个SQL结果。
应理解的是,在本申请实施例中,可以将该微调后的大语言模型称为第二大语言模型或者单SQL生成模型。
其中,i=1,2……K,在本申请实施例中,用于将待查询语句转换为SQL语句的电子设备,其可以基于待查询语句的应用信息、指标信息和至少一个限制条件,召回K个第一候选表,分别是第1个候选表、第2个候选表……第K个候选表。
在本申请实施例中,第1个限制条件列表是由所述待查询语句的至少一个限制条件构成的列表,第i个限制条件列表是第i-1个限制条件列表中除第i-1个候选表匹配到的限制条件以外的其他限制条件构成的列表。
应理解的是,考虑到如下两方面原因,用于将待查询语句转换为SQL语句的电子设备需要筛选第一候选表的字段,即确定第一候选表的筛选字段:一方面为了保证大语言模型的处理能力,有些大语言模型对输入至其中的数据量有一定的要求,而通常第一候选表的数据量较大;另一方面大语言模型在对第一候选表进行处理时,其可以对第一候选表的字段选择,如果第一候选表的数据量较大,该大语言模型容易出现字段选择错误的情况。
在本申请实施例中,所述至少一个样本可以是与待查询语句具有相同类型的fewshot,每个样本可以包括:自然语言形式的历史查询语句以及该语句对应的SQL语句,从而提示(prompt)大语言模型,令其学习到这些样本,从而快速且准确地将待查询语句转换为SQL语句。
在本申请实施例中,第i个SQL结果包括:第i个子SQL语句,该第i个SQL结果还可以包括:K个第一候选表中的第i个候选表的外键。
在本申请实施例中,也可以将第1个SQL结果至第K个SQL结果输入至微调后的大语言模型,得到第一SQL语句。
应理解的是,在本申请实施例中,可以将该微调后的大语言模型称为第三大语言模型或者SQL关联模型。
在本申请实施例中,也可以将待查询语句、K个第一候选表、第一SQL语句和第一SQL语句的报错信息输入至微调后的大语言模型,得到第二SQL语句。
应理解的是,在本申请实施例中,可以将该微调后的大语言模型称为第四大语言模型或者SQL重写模型。
下面将对本申请技术方案所要解决的技术问题、发明构思和应用场景进行阐述:
如上所述,目前SQL语句主要依赖用户手动编写,这种方式导致SQL语句生成效率较低,进而导致数据库查询效率较低。
为了解决上述技术问题,本申请实施例提出基于大语言模型,将自然语言形式的待查询语句自动转换为SQL语句的方法,从而可以提高SQL语句生成效率,进而可以提高数据库查询效率。
示例性地,图1为本申请一实施例提供的应用场景示意图,如图1所示,该场景涉及:终端设备110和服务器120。其中,终端设备110和服务器120之间可以通过有线或无线通信方式进行直接或间接地连接。
在一些可实现方式中,该终端设备110上可以安装有数据库查询应用(Application,APP),该APP用于进行数据库查询,其中,该APP可以是独立的应用程序、网页应用、宿主应用中的小程序等,但不限于此。
在一些可实现方式中,在数据库查询过程中,终端设备110可以通过获取用户在数据库查询APP中输入的待查询语句,并可以采用本申请实施例提供的SQL语句生成方法将该待查询语句转换为SQL语句,进一步地,将该SQL语句发送给服务器120,以使服务器120基于SQL语句进行数据库查询,并将查询结果返回给终端设备110。
在另一些可实现方式中,在数据库查询过程中,终端设备110可以通过获取用户在数据库查询APP中输入的待查询语句,并将该待查询语句发送给服务器120,进一步地,服务器120可以采用本申请实施例提供的SQL语句生成方法将待查询语句转换为SQL语句,还可以基于SQL语句进行数据库查询,并将查询结果返回给终端设备110。
应理解的是,该服务器120可以为终端设备110中的数据库查询APP提供后端服务,例如,可以采用本申请实施例提供的SQL语句生成方法将待查询语句转换为SQL语句、基于SQL语句进行数据库查询,并将查询结果返回给终端设备110等等。
在一些可实现方式中,服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一些可实现方式中,在一些可实现方式中,终端设备110终端可以是车载终端、智能手机、平板电脑、笔记本电脑、桌上型电脑、智能音箱、有屏音箱、智能手表等等,但不限于此。
应理解的是,图1所示的应用场景包括两个终端设备,实际上,可以包括其他数量的终端设备,本申请对此不做限制。此外,图1仅是本申请技术方案的一种示例性应用场景,本申请实施例的应用场景不局限于此。
下面将对本申请技术方案进行详细阐述:
图2为本申请实施例提供的一种SQL语句生成方法的流程图,该方法可以由用于将自然语言形式的待查询语句转换为SQL语句的电子设备执行,该电子设备可以是终端设备,例如该电子设备可以是如图1中的终端设备110,或者,该电子设备可以是服务器,例如该电子设备可以是如图1中的服务器120。如图2所示,该方法可以包括:
S210:获取自然语言形式的待查询语句;
S220:将待查询语句输入第一大语言模型,得到待查询语句的应用信息、时间信息和指标信息;
S230:基于应用信息和指标信息,召回K个第一候选表,K为大于1的整数;
S240:基于待查询语句和K个第一候选表和时间信息,得到待查询语句对应的第一SQL语句。
下面将对S210进行说明:
在一些可实现方式中,若用于将自然语言形式的待查询语句转换为SQL语句的电子设备是终端设备,则该终端设备可以获取用户在数据库查询APP中输入的待查询语句。
在一些可实现方式中,若用于将自然语言形式的待查询语句转换为SQL语句的电子设备是服务器,则用户可以在数据库查询APP中输入待查询语句,终端设备通该APP将该待查询语句发送给服务器,以使服务器获取该待查询语句。
在一些可实现方式中,该待查询语句可以是以下至少一种形式的语句,但不限于此:文字形式、语音形式。例如,用户可以在数据库查询APP的输入框中输入文字形式的待查询语句。再例如,用户可以通过音频设备输入语音形式的待查询语句。
下面将对S220进行说明:
在一些可实现方式中,电子设备可以将待查询语句输入第一大语言模型,得到待查询语句的至少一个限制条件。当然,在有些情况下,待查询语句不具有限制条件,如果其不具有限制条件,则后续在进行候选表召回、SQL语句生成等过程可以不考虑限制条件即可。
应理解的是,第一大语言模型用于执行NER任务,即对待查询语句进行命名实体识别,以识别待查询语句的应用信息、时间信息和指标信息。如果待查询语句包括至少一个限制条件,该第一大语言模型也可以识别待查询语句的至少一个限制条件。
应理解的是,在本申请实施例中,之所以使用第一大语言模型执行NER任务,是因为用户提问方式比较随意的,使得不同用户,甚至同一用户多次输入的待查询语句格式不统一,用普通模型无法较好地执行NER任务。
在一些可实现方式中,待查询语句的应用信息可以是待查询语句携带的应用标识,但不限于此。例如,待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”。其中,该待查询语句的应用信息可以是A视频应用的标识A。
待查询语句的时间信息可以是待查询语句携带的时间信息。例如,待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”。其中,该待查询语句的时间信息可以是昨天。
如果待查询语句未携带时间信息,第一大语言模型在进行命名实体识别时,可以默认一个时间信息。
待查询语句的指标信息指的是待查询语句携带的指标信息。例如,待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”。其中,该待查询语句的指标信息可以是用户人数。
待查询语句的至少一个限制条件包括:待查询语句携带的限制条件。例如,待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”。其中,该待查询语句包括两个限制条件,分别是:“看过《动画片1》”、“广东”。
在一些可实现方式中,待查询语句的至少一个限制条件还包括:电子设备通过第一大语言模型对待查询语句携带的限制条件进行扩充,得到的扩充限制条件。例如,电子设备通过第一大语言模型对“看过《动画片1》”进行扩充,得到的扩充限制条件可以是:“《动画片1》是个剧集”。再例如,电子设备通过第一大语言模型对“广东”进行扩充,得到的扩充限制条件可以是:“广东是一个省份”。
在本申请实施例中,第一大语言模型是经过微调后的大语言模型(即预训练模型),其中,在本申请实施例中,可以采用LoRA方法微调预训练模型,得到第一大语言模型,但不限于此。
应理解的是,预训练模型通常由神经网络构成,而神经网络包含许多密集的层,这些层通常需要执行矩阵乘法。这些层中的权重矩阵通常具有全秩。当预训练模型需要适应特定任务时,预训练模型往往需要具有较低的“固有维度(instrisic dimension或instrisic rank)”。
图3为LoRA方法的实现原理示意图,如图3所示,LoRA方法的实现原理在于:在原始的预训练模型的旁边增加一个旁路,该旁路用于实现降维再升维的操作,来模拟所谓的intrinsic rank。训练该模型时,固定原始的预训练模型的权重,只训练降维矩阵A与升维矩阵B。而该模型的输入输出维度不变,输出时将B*A与原始的预训练模型的权重叠加。其中,可以用随机高斯分布初始化A矩阵,用0矩阵初始化B矩阵,保证在训练开始该旁路上的矩阵是0矩阵。
例如,图3左边是原始的预训练模型的权重W,该模型的输入和输出维度都是d,在该模型训练期间,这些权重被冻结,即不接受梯度更新。右边部分包括:降维矩阵A与升维矩阵B,其中,可以用随机高斯分布初始化A矩阵,用0矩阵初始化B矩阵,经过A矩阵处理之后,数据的维度从d降低至r,而经过矩阵B处理之后,数据的维度从r升至d。
假设输入的数据是x,按照如图3所示的LoRA方法的实现原理,得到的数据h如下:
其中,表示输出数据、/>是原始的预训练模型的权重构成的权重矩阵、/>表示输入数据、/>、/>表示降维矩阵、/>表示升维矩阵。
下面将对S230进行说明:
在一些可实现方式中,S230可以包括:
S230-1A:对应用信息对应的P个第二候选表进行召回,P为大于K的整数;
S230-2A:基于指标信息,在P个第二候选表中召回K个第一候选表。
在一些可实现方式中,针对P个第二候选表中的任一个候选表,若该候选表与所述应用信息关联,则可以认为该候选表是该应用信息对应的候选表。其中,该候选表与该应用信息之间的关联关系可以是直接关联关系或者间接关联关系,本申请实施例对此不做限制。例如,假设该候选表的描述信息包括该应用信息,在这种情况下,可以认为该候选表与该应用信息具有直接关联关系。假设该候选表的描述信息未直接包括该应用信息,但是包括与该应用信息的相关信息,在这种情况下,可以认为该候选表与该应用信息具有间接关联关系。
例如,假设待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”。其中,该待查询语句的应用信息是A视频应用的标识A。表a的描述信息是:A视频应用的剧集表。表b的描述信息是:使用A视频应用的用户归属地表。表c的描述信息是:剧集《动画片1》的配音演员表。基于此,可以认为表a、表b均与标识A具有直接映射关系,进而认为表a、表b均与标识A对应。由于表c的描述信息包括:《动画片1》,而该《动画片1》是A视频应用播放的剧集,因此,可以认为表c与标识A具有间接映射关系,进而认为表c与标识A对应。
在有些可实现方式中,如果待查询语句具有至少一个限制条件,那么电子设备可以基于待查询语句的至少一个限制条件和指标信息,在P个第二候选表中召回K个第一候选表。如果待查询语句不具有至少一个限制条件,那么电子设备可以仅基于指标信息,在P个第二候选表中召回K个第一候选表。下面以基于待查询语句的至少一个限制条件和指标信息进行候选表召回为例,实际上,如果仅基于指标信息进行候选表召回,其过程可参考基于待查询语句的至少一个限制条件和指标信息的候选表召回过程。
在一些可实现方式中,S230-2A可以包括:
S230-2A-1a:计算至少一个限制条件中的每个限制条件与每个第二候选表的信息的第一相似度;
S230-2A-2a:计算指标信息与每个第二候选表的信息的第二相似度;
S230-2A-3a:基于第一相似度和第二相似度,在P个第二候选表中召回K个第一候选表。
在一些可实现方式中,针对每个第二候选表,该第二候选表的信息包括以下至少一项:该第二候选表的描述信息、该第二候选表的全部字段。例如,假设表a的描述信息是:A视频应用的剧集表,其中,表a包括如下字段:date、id、title和watch_time,其中,date表示表中每条记录产生时间、id表示用户标识、title表示剧集名称、watch_time表示观看时长。基于此,表a的信息可以包括表a的描述信息,也可以包括表a的全部字段,还可以包括:表a的描述信息以及表a的全部字段。
应理解的是,在本申请实施例中,在计算任意两个信息的相似度时,电子设备需要将这两个信息分别转换为对应的嵌入向量(embedding)。基于此,计算任意两个信息的相似度也就是计算嵌入向量之间的相似度。
在一些可实现方式中,电子设备可以将任一个信息输入至Transformer的双向编码器表示(Bidirectional Encoder Representation from Transformer,BERT)模型,以得到该信息对应的嵌入向量,但不限于此。
例如,电子设备可以将每个限制条件输入BERT模型,得到每个限制条件对应的嵌入向量。再例如,电子设备可以将每个第二候选表的信息输入BERT模型,得到该信息对应的嵌入向量。
在本申请实施例中,可以采用以下任一种相似度计算方法,但不限于此:基于皮尔森相关性的相似度计算方法、基于欧几里德距离的相似度计算方法、余弦相似度计算方法、调整余弦相似度计算方法、斯皮尔曼相关的相似度计算方法。
应理解的是,本申请实施例对S230-2A-1a与S230-2A-2a的执行顺序不做限制,例如,电子设备可以先执行S230-2A-1a,再执行S230-2A-2a;或者,先执行S230-2A-2a,再执行S230-2A-1a;又或者,可以同时执行S230-2A-1a和S230-2A-2a。
在一些可实现方式中,S230-2A-3a可以包括:
S230-2A-3a-1:按照第一相似度和第二相似度由大到小的顺序,选择前K个相似度;
S230-2A-3a-2:将前K个相似度对应的第二候选表确定为K个第一候选表,并召回K个第一候选表。
应理解的是,在该可实现方式中,电子设备可以对全部第一相似度和全部第二相似度一起进行排序,按照第一相似度和第二相似度由大到小的顺序,选择前K个相似度,并将前K个相似度对应的第二候选表确定为K个第一候选表,并召回K个第一候选表。
例如,假设待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”。其中,该待查询语句的限制条件包括:“看过《动画片1》”、“《动画片1》是个剧集”、“广东”、“广东是一个省份”。该待查询语句的指标信息是用户人数。
假设电子设备基于该待查询语句的应用信息粗召回的候选表包括:表a、表b和表c,其中,表a是A视频应用的剧集表。表b是使用A视频应用的用户归属地表。表c是剧集《动画片1》的配音演员表。
假设限制条件:“看过《动画片1》”与表a的相似度是50%,限制条件:“看过《动画片1》”与表b的相似度是2%,限制条件:“看过《动画片1》”与表c的相似度是40%。
假设限制条件:“《动画片1》是个剧集”与表a的相似度是80%,限制条件:“《动画片1》是个剧集与表b的相似度是2%,限制条件:“《动画片1》是个剧集”与表c的相似度是20%。
假设限制条件:“广东”与表a的相似度是2%,限制条件:“广东”与表b的相似度是50%,限制条件:“广东”与表c的相似度是1%。
假设限制条件:“广东是一个省份”与表a的相似度是1%,限制条件:“广东是一个省份”与表b的相似度是85%,限制条件:“广东是一个省份”与表c的相似度是1%。
假设指标信息:用户人数与表a的相似度是50%,指标信息:用户人数与表b的相似度是70%,指标信息:用户人数与表c的相似度是1%。
进一步地,上述全部相似度由大到小排序是:85%>80%>70%>50%=50%=50%>40%>20%>2%=2%=2%>1%=1%=1%=1%。如果K=3,那么电子设备可以选择85%、80%、70%分别对应的候选表,即表b和表a。
在一些可实现方式中,如果存在相似度相等的情况,并且需要在这些相等的相似度中选择部分相似度,那么电子设备可以在这些相等的相似度中随机选择部分相似度,但不限于此。例如,全部相似度由大到小排序是:85%>80%>70%>50%=50%=50%>40%>20%>2%=2%=2%>1%=1%=1%=1%。如果K=4,那么电子设备可以选择85%、80%、70%和任一个50%。
在另一些可实现方式中,S230-2A-3a可以包括:
S230-2A-3a-1’:在全部第一相似度和全部第二相似度中选择大于预设相似度的相似度;
S230-2A-3a-2’:将选择的相似度对应的第二候选表确定为第一候选表,并召回第一候选表。
应理解的是,在该可实现方式中,电子设备可以对全部第一相似度和全部第二相似度一起进行排序,接着选择大于预设相似度的相似度,进一步地,将选择的相似度对应的第二候选表确定为第一候选表,并召回第一候选表。
接着上一示例,上述全部相似度由大到小排序是:85%>80%>70%>50%=50%=50%>40%>20%>2%=2%=2%>1%=1%=1%=1%。假设预设相似度是60%,那么电子设备可以选择85%、80%、70%分别对应的候选表,即表b和表a。
应理解的是,本申请实施例对S230-2A-3a的可实现方式不做限制。
在一些可实现方式中,S230-2A可以包括:
S230-2A-1b:将所述至少一个限制条件、所述指标信息和每个第二候选表的信息输入至第一神经网络模型,以在P个第二候选表中确定K个第一候选表;
S230-2A-2b:召回K个第一候选表。
应理解的是,第一神经网络模型的输入可以包括:所述至少一个限制条件、所述指标信息和每个第二候选表的信息;第一神经网络模型的输出可以是K个第一候选表的描述信息。
在一些可实现方式中,训练设备可以获取第一训练集,并通过第一训练集训练第一神经网络模型,其中,第一训练集中的每个训练样本可以包括:至少一个限制条件、指标信息、粗召回候选表的信息以及细召回候选表的描述信息(即标签)。
在一些可实现方式中,训练设备在训练第一神经网络模型时,其利用的损失函数可以是以下任一项,但不限于此:L1损失函数、均方误差(Mean Squared Error,MSE)损失函数、交叉熵损失(Cross Entropy Loss)函数等等。
应理解的是,本申请实施例对S230-2A的可实现方式不做限制。
应理解的是,在本申请实施例中,可以将召回P个第二候选表的过程称为粗召回过程,将基于指标信息,在P个第二候选表中召回K个第一候选表称为细召回过程。由于数据库中表的数量较为庞大,在本申请实施例中,通过应用信息进行候选表的粗召回,可以过滤掉与该应用信息无关的表,从而可以提高候选表的召回效率,进而可以提高SQL语句的生成效率。
在一些可实现方式中,S230可以包括:
S230-1B:将所述应用信息、所述指标信息和数据库中每个表的描述信息输入至第二神经网络模型,以确定K个第一候选表;
S230-2B:召回K个第一候选表。
应理解的是,第二神经网络模型的输入可以包括:所述应用信息、所述指标信息和数据库中每个表的描述信息;如果待查询语句具有至少一个限制条件,第二神经网络模型的输入还可以包括至少一个限制条件。第二神经网络模型的输出可以是K个第一候选表的描述信息。
在一些可实现方式中,训练设备可以获取的第二训练集,并通过第二训练集训练第二神经网络模型,其中,第二训练集中的每个训练样本可以包括:应用信息、所述指标信息和数据库中每个表的描述信息以及召回候选表的描述信息(即标签)。每个训练样本还可以包括至少一个限制条件。
在一些可实现方式中,训练设备在训练第二神经网络模型时,其利用的损失函数可以是以下任一项,但不限于此:L1损失函数、MSE损失函数、交叉熵损失(Cross EntropyLoss)函数等等。
应理解的是,本申请实施例对S230的可实现方式不做限制。
下面将对S240进行说明:
在一些可实现方式中,如果待查询语句具有至少一个限制条件,那么电子设备可以基于所述待查询语句、所述待查询语句的至少一个限制条件、所述K个第一候选表和所述时间信息,得到所述第一SQL语句。如果待查询语句不具有至少一个限制条件,那么电子设备可以不考虑限制条件,以生成第一SQL语句。下面以基于所述待查询语句、所述待查询语句的至少一个限制条件、所述K个第一候选表和所述时间信息,得到所述第一SQL语句为例,实际上,如果不考虑限制条件,以生成第一SQL语句,其过程可参考基于所述待查询语句、所述待查询语句的至少一个限制条件、所述K个第一候选表和所述时间信息的第一SQL语句生成过程。
在一些可实现方式中,在S240之前,SQL语句生成方法还包括:
S240-1A:分别基于时间字段、用户标识字段、至少一个限制条件和指标信息,确定K个第一候选表的筛选字段;
相应的,S240可以包括:
S240-2A:基于待查询语句、至少一个限制条件、K个第一候选表、K个第一候选表的筛选字段和时间信息,得到第一SQL语句。
应理解的是,电子设备可以通过大语言模型得到第一SQL语句,例如,将待查询语句、至少一个限制条件、K个第一候选表、K个第一候选表的筛选字段和时间信息输入至第二大语言模型,得到第一SQL语句。考虑到一方面为了保证大语言模型的处理能力,有些大语言模型对输入至其中的数据量有一定的要求,而通常第一候选表的数据量较大;另一方面大语言模型在对第一候选表进行处理时,其可以对第一候选表的字段选择,如果第一候选表的数据量较大,该大语言模型容易出现字段选择错误的情况,基于此,电子设备可以筛选第一候选表的字段,即确定第一候选表的筛选字段。通过设置筛选字段可以降低大语言模型的计算量,从而可以提高SQL语句的生成效率。
在一些可实现方式中,基于时间字段,确定K个第一候选表的筛选字段,包括:计算时间字段与K个第一候选表中每个字段的第三相似度;将K个第一候选表中对应第三相似度大于第一预设阈值的字段确定为K个第一候选表的筛选字段。
在一些可实现方式中,电子设备可以在离线数据库中查找每个第一候选表的每个字段。
在一些可实现方式中,电子设备在计算时间字段与K个第一候选表中每个字段的第三相似度时,需要将时间字段以及K个第一候选表中每个字段分别转换为对应的嵌入向量(embedding)。基于此,计算时间字段与每个字段的相似度也就是计算嵌入向量之间的相似度。
在一些可实现方式中,电子设备可以将时间字段输入至BERT模型,以得到时间字段对应的嵌入向量,但不限于此。
在一些可实现方式中,电子设备可以将K个第一候选表中每个字段输入至BERT模型,以得到K个第一候选表中每个字段对应的嵌入向量,但不限于此。
应理解的是,关于第三相似度的计算方法可以参考第一相似度的计算方法,本申请实施例对此不再赘述。
在一些可实现方式中,第一预设阈值的取值可以是70%、80%、90%等等,本申请实施例对此不做限制。
例如,假设表a包括如下字段:date、id、title和watch_time,其中,date表示表中每条记录产生时间、id表示用户标识、title表示剧集名称、watch_time表示观看时长。假设电子设备计算时间字段与date的相似度是90%,计算时间字段与id的相似度是1%,计算时间字段与title的相似度是2%,计算时间字段与watch_time的相似度是20%,假设第一预设阈值的取值是80%,基于此,电子设备可以将date作为表a的筛选字段。
再例如,假设表b包括如下字段:ds、user_name、province和city,其中,ds表示表中每条记录产生时间、user_name表示用户标识、province表示省份、city表示城市。假设电子设备计算时间字段与ds的相似度是92%,计算时间字段与user_name的相似度是5%,计算时间字段与province的相似度是1%,计算时间字段与city的相似度是1%,假设第一预设阈值的取值是80%,基于此,电子设备可以将ds作为表b的筛选字段。
在一些可实现方式中,基于时间字段,确定K个第一候选表的筛选字段,包括:通过第一正则表达式确定K个第一候选表包含时间字段的至少一个第一字段;将至少一个第一字段确定为K个第一候选表的筛选字段。
应理解的是,第一正则表达式可以规定将包含时间字段的字段确定为筛选字段。
例如,假设表a包括如下字段:date、id、title和watch_time,其中,date表示表中每条记录产生时间、id表示用户标识、title表示剧集名称、watch_time表示观看时长。电子设备通过第一正则表达式可以将包含时间字段的date确定为筛选字段。
再例如,假设表b包括如下字段:ds、user_name、province和city,其中,ds表示表中每条记录产生时间、user_name表示用户标识、province表示省份、city表示城市。电子设备通过第一正则表达式可以将包含时间字段的ds确定为筛选字段。
在一些可实现方式中,基于用户标识字段,确定K个第一候选表的筛选字段,包括:计算用户标识字段与K个第一候选表中每个字段的第四相似度,并将K个第一候选表中对应第四相似度大于第二预设阈值的字段确定为K个第一候选表的筛选字段。
在一些可实现方式中,电子设备在计算用户标识字段与K个第一候选表中每个字段的第四相似度时,需要将用户标识字段以及K个第一候选表中每个字段分别转换为对应的嵌入向量(embedding)。基于此,计算用户标识字段与每个字段的相似度也就是计算嵌入向量之间的相似度。
应理解的是,关于如何将任一信息转换为对应的嵌入向量,可以参考上文,本申请实施例对此不再赘述。
应理解的是,关于第四相似度的计算方法可以参考第一相似度的计算方法,本申请实施例对此不再赘述。
在一些可实现方式中,第二预设阈值的取值可以是70%、80%、90%等等,本申请实施例对此不做限制。
例如,假设表a包括如下字段:date、id、title和watch_time,其中,date表示表中每条记录产生时间、id表示用户标识、title表示剧集名称、watch_time表示观看时长。假设电子设备计算用户标识字段与date的相似度是1%,计算用户标识字段与id的相似度是90%,计算用户标识字段与title的相似度是2%,计算用户标识字段与watch_time的相似度是2%,假设第二预设阈值的取值是80%,基于此,电子设备可以将id作为表a的筛选字段。
再例如,假设表b包括如下字段:ds、user_name、province和city,其中,ds表示表中每条记录产生时间、user_name表示用户标识、province表示省份、city表示城市。假设电子设备计算用户标识字段与ds的相似度是2%,计算用户标识字段与user_name的相似度是95%,计算用户标识字段与province的相似度是1%,计算用户标识字段与city的相似度是1%,假设第二预设阈值的取值是80%,基于此,电子设备可以将user_name作为表b的筛选字段。
在一些可实现方式中,基于用户标识字段,确定K个第一候选表的筛选字段,包括:通过第二正则表达式确定K个第一候选表包含用户标识字段的至少一个第二字段;将至少一个第二字段确定为K个第一候选表的筛选字段。
应理解的是,第二正则表达式可以规定将包含用户标识字段的字段确定为筛选字段。
例如,假设表a包括如下字段:date、id、title和watch_time,其中,date表示表中每条记录产生时间、id表示用户标识、title表示剧集名称、watch_time表示观看时长。电子设备通过第二正则表达式可以将包含用户标识字段的id确定为筛选字段。
再例如,假设表b包括如下字段:ds、user_name、province和city,其中,ds表示表中每条记录产生时间、user_name表示用户标识、province表示省份、city表示城市。电子设备通过第二正则表达式可以将包含用户标识字段的user_name确定为筛选字段。
在一些可实现方式中,基于至少一个限制条件,确定K个第一候选表的筛选字段,包括:计算至少一个限制条件中的每个限制条件与K个第一候选表中每个字段的第五相似度;将K个第一候选表中对应第五相似度大于第三预设阈值的字段确定为K个第一候选表的筛选字段。
在一些可实现方式中,针对至少一个限制条件中的每个限制条件,电子设备在计算该限制条件与K个第一候选表中每个字段的第五相似度时,需要将该限制条件以及K个第一候选表中每个字段分别转换为对应的嵌入向量(embedding)。基于此,计算该限制条件与每个字段的相似度也就是计算嵌入向量之间的相似度。
应理解的是,关于如何将任一信息转换为对应的嵌入向量,可以参考上文,本申请实施例对此不再赘述。
应理解的是,关于第五相似度的计算方法可以参考第一相似度的计算方法,本申请实施例对此不再赘述。
在一些可实现方式中,第三预设阈值的取值可以是70%、80%、90%等等,本申请实施例对此不做限制。
例如,假设表a包括如下字段:date、id、title和watch_time,其中,date表示表中每条记录产生时间、id表示用户标识、title表示剧集名称、watch_time表示观看时长。假设待查询语句的限制条件包括:“看过《动画片1》”、“《动画片1》是个剧集”、“广东”、“广东是一个省份”。假设电子设备计算限制条件:“看过《动画片1》”与date的相似度是1%,计算限制条件:“看过《动画片1》”与id的相似度是1%,计算限制条件:“看过《动画片1》”与title的相似度是92%,计算限制条件:“看过《动画片1》”与watch_time的相似度是2%,假设第三预设阈值的取值是80%,基于此,电子设备可以将title作为表a的筛选字段。假设电子设备计算限制条件:“《动画片1》是个剧集”与date的相似度是1%,计算限制条件:“《动画片1》是个剧集”与id的相似度是1%,计算限制条件:“《动画片1》是个剧集”与title的相似度是95%,计算限制条件:“《动画片1》是个剧集”与watch_time的相似度是1%,假设第三预设阈值的取值是80%,基于此,电子设备还是确定将title作为表a的筛选字段。假设电子设备计算限制条件:“广东”与date的相似度是1%,计算限制条件:“广东”与id的相似度是1%,计算限制条件:“广东”与title的相似度是2%,计算限制条件:“广东”与watch_time的相似度是1%,假设第三预设阈值的取值是80%,基于此,电子设备尚未确定出表a的筛选字段。假设电子设备计算限制条件:“广东是一个省份”与date的相似度是1%,计算限制条件:“广东是一个省份”与id的相似度是1%,计算限制条件:“广东是一个省份”与title的相似度是3%,计算限制条件:“广东是一个省份”与watch_time的相似度是1%,假设第三预设阈值的取值是80%,基于此,电子设备尚未确定出表a的筛选字段。
再例如,假设表b包括如下字段:ds、user_name、province和city,其中,ds表示表中每条记录产生时间、user_name表示用户标识、province表示省份、city表示城市。假设待查询语句的限制条件包括:“看过《动画片1》”、“《动画片1》是个剧集”、“广东”、“广东是一个省份”。假设电子设备计算限制条件:“看过《动画片1》”与ds的相似度是1%,计算限制条件:“看过《动画片1》”与user_name的相似度是1%,计算限制条件:“看过《动画片1》”与province的相似度是2%,计算限制条件:“看过《动画片1》”与city的相似度是2%,假设第三预设阈值的取值是80%,基于此,电子设备尚未确定出表a的筛选字段。假设电子设备计算限制条件:“《动画片1》是个剧集”与ds的相似度是1%,计算限制条件:“《动画片1》是个剧集”与user_name的相似度是1%,计算限制条件:“《动画片1》是个剧集”与province的相似度是5%,计算限制条件:“《动画片1》是个剧集”与city的相似度是1%,假设第三预设阈值的取值是80%,基于此,电子设备尚未确定出表a的筛选字段。假设电子设备计算限制条件:“广东”与ds的相似度是1%,计算限制条件:“广东”与user_name的相似度是1%,计算限制条件:“广东”与province的相似度是95%,计算限制条件:“广东”与city的相似度是60%,假设第三预设阈值的取值是80%,基于此,电子设备确定province是表a的筛选字段。假设电子设备计算限制条件:“广东是一个省份”与ds的相似度是1%,计算限制条件:“广东是一个省份”与user_name的相似度是1%,计算限制条件:“广东是一个省份”与province的相似度是93%,计算限制条件:“广东是一个省份”与city的相似度是65%,假设第三预设阈值的取值是80%,基于此,电子设备还是确定province是表a的筛选字段。
在一些可实现方式中,基于至少一个限制条件,确定K个第一候选表的筛选字段,包括:将所述至少一个限制条件和K个第一候选表的全部字段输入至第三神经网络模型,以确定K个第一候选表的筛选字段。
在一些可实现方式中,训练设备可以获取的第三训练集,并通过第三训练集训练第三神经网络模型,其中,第三训练集中的每个训练样本可以包括:至少一个限制条件和候选表的全部字段以及候选表的筛选字段(即标签)。
在一些可实现方式中,训练设备在训练第三神经网络模型时,其利用的损失函数可以是以下任一项,但不限于此:L1损失函数、MSE损失函数、交叉熵损失(Cross EntropyLoss)函数等等。
在一些可实现方式中,基于指标信息,确定K个第一候选表的筛选字段,包括:计算指标信息与K个第一候选表中每个字段的第六相似度;将K个第一候选表中对应第六相似度大于第四预设阈值的字段确定为K个第一候选表的筛选字段。
在一些可实现方式中,电子设备在计算指标信息与K个第一候选表中每个字段的第六相似度时,需要将该指标信息以及K个第一候选表中每个字段分别转换为对应的嵌入向量(embedding)。基于此,计算该指标信息与每个字段的相似度也就是计算嵌入向量之间的相似度。
应理解的是,关于如何将任一信息转换为对应的嵌入向量,可以参考上文,本申请实施例对此不再赘述。
应理解的是,关于第六相似度的计算方法可以参考第一相似度的计算方法,本申请实施例对此不再赘述。
在一些可实现方式中,第四预设阈值的取值可以是70%、80%、90%等等,本申请实施例对此不做限制。
例如,假设表a包括如下字段:date、id、title和watch_time,其中,date表示表中每条记录产生时间、id表示用户标识、title表示剧集名称、watch_time表示观看时长。假设指标信息是用户人数,并且假设电子设备计算用户人数与date的相似度是1%,计算用户人数与id的相似度是90%,计算用户人数与title的相似度是2%,计算用户人数与watch_time的相似度是1%,假设第四预设阈值的取值是80%,基于此,电子设备可以确定表a的筛选字段是id。
再例如,假设表b包括如下字段:ds、user_name、province和city,其中,ds表示表中每条记录产生时间、user_name表示用户标识、province表示省份、city表示城市。假设指标信息是用户人数,并且假设电子设备计算用户人数与ds的相似度是1%,计算用户人数与user_name的相似度是95%,计算用户人数与province的相似度是2%,计算用户人数与city的相似度是1%,假设第四预设阈值的取值是80%,基于此,电子设备可以确定表a的筛选字段是user_name。
在一些可实现方式中,基于指标信息,确定K个第一候选表的筛选字段,包括:将指标信息和K个第一候选表的全部字段输入至第四神经网络模型,以确定K个第一候选表的筛选字段。
在一些可实现方式中,训练设备可以获取的第四训练集,并通过第四训练集训练第四神经网络模型,其中,第四训练集中的每个训练样本可以包括:指标信息和候选表的全部字段以及候选表的筛选字段(即标签)。
在一些可实现方式中,训练设备在训练第四神经网络模型时,其利用的损失函数可以是以下任一项,但不限于此:L1损失函数、MSE损失函数、交叉熵损失(Cross EntropyLoss)函数等等。
在一些可实现方式中,在S240-2A之前,SQL语句生成方法还包括:
S240-2A-1a:确定待查询语句的类型;
S240-2A-2a:获取与待查询语句相同类型的至少一个样本;
相应的,S240-2A可以包括:
S240-2A-3a:基于待查询语句、至少一个限制条件、K个第一候选表、K个第一候选表的筛选字段、时间信息和至少一个样本,得到第一SQL语句。
在一些可实现方式中,电子设备可以将待查询语句输入至分类模型,得到待查询语句的类型。其中,待查询语句的类型也可以被理解为待查询语句的提问形式,例如,待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”,该待查询语句的提问形式是:查询+时间信息+应用信息+限制条件+指标信息。
在一些可实现方式中,该分类模型也可以是经过微调后的大语言模型,本申请实施例对此不做限制。
在一些可实现方式中,针对所述至少一个样本中的每个样本,该样本可以包括:自然语言形式的历史查询语句以及该语句对应的SQL语句。
例如,待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”,该待查询语句的提问形式是:查询+时间信息+应用信息+限制条件+指标信息。而某历史查询语句是:“帮我查询昨天通过A视频应用看过《剧集2》的北京用户人数”,该历史查询语句的提问形式也是:查询+时间信息+应用信息+限制条件+指标信息。基于此,该历史查询语句以及对应的SQL语句将构成一个样本。
应理解的是,在利用大语言模型生成SQL语句的过程中,采用与待查询语句相匹配的few shot具有重要意义,第一,可以充分利用大语言模型的泛化能力,从而在仅有少量样本的情况下实现高效、准确的SQL语句生成。第二,通常用户提问的领域和场景可能会发生变化,通过使用与待查询语句相匹配的few shot,可以让大语言模型在学习过程中更加关注与待查询语句相关的特征,从而提高模型在处理实际用户提问时的泛化能力和准确性。第三,即使待查询语句是一个新类型的查询语句,在本申请实施例中,无需重新巡训练大语言模型,而是可以确定与待查询语句类型相同的fewshot,从而提示(prompt)大语言模型,令其学习到这些样本,从而快速且准确地将待查询语句转换为SQL语句。
在一些可实现方式中,S240-2A-3a可以包括:
S240-2A-3a-1:将待查询语句、第i个限制条件列表、K个第一候选表的筛选字段、时间信息、K个第一候选表中的第i个候选表和至少一个样本输入第二大语言模型,得到第i个SQL结果;其中,i=1,2……K,第1个限制条件列表是由至少一个限制条件构成的列表,第i个限制条件列表是第i-1个限制条件列表中除第i-1个候选表匹配到的限制条件以外的其他限制条件构成的列表;第i个SQL结果包括:第i个子SQL语句;
S240-2A-3a-2:基于第1个SQL结果至第K个SQL结果,得到第一SQL语句。
应理解的是,如果待查询语句关联一个候选表,即上述第一候选表的数量是1,那么可以直接将待查询语句、至少一个限制条件、K个第一候选表的筛选字段、时间信息、K个第一候选表和至少一个样本输入一个大语言模型,得到SQL语句即可,这种直接生成SQL语句的方式对SQL语句的准确率影响不大。但是待查询语句关联多个候选表,这种直接生成SQL语句的方式对SQL语句的准确率影响较大。基于此,本申请实施例提出了依照用户编写SQL语句的逻辑思维方式将待查询语句生成SQL语句。即从待查询语句出发,针对每张第一候选表确定在这张表上能筛选出来的字段,并区分出来关联的外键,以生成对应的SQL结果;对全部SQL结果进行关联,形成一个可执行的SQL语句,即第一SQL语句。这种依照用户逻辑思维方式生成SQL语句的方法比较符合SQL语句的生成逻辑,从而可以提高SQL语句的准确度。
在一些可实现方式中,电子设备可以对K个第一候选表采用任一种排序方式进行排序,例如可以采用随机排序方式。
在一些可实现方式中,电子设备可以采用如下方式判断任一个第一候选表与限制列表中的任一个限制条件是否匹配,但不限于此:计算该第一候选表的信息与该限制条件的相似度,如果该第一候选表的信息与该限制条件的相似度大于预设阈值,则确定该第一候选表与该限制条件匹配;如果该第一候选表的信息与该限制条件的相似度小于或等于预设阈值,则确定该第一候选表与该限制条件不匹配。
在一些可实现方式中,在240-2A-3a-2之前,SQL语句生成方法还包括:获取第K+1个限制条件列表;其中,第K+1个限制条件列表是第K个限制条件列表中除第K个候选表匹配到的限制条件以外的其他限制条件构成的列表;相应的,若第K+1个限制条件列表为空,则基于第1个SQL结果至第K个SQL结果,得到第一SQL语句。若第K+1个限制条件列表为非空,则将K更新为K’,其中,K’为大于K的整数,并重新基于所述应用信息、所述指标信息和所述至少一个限制条件,召回K’个第一候选表,基于所述待查询语句、所述至少一个限制条件、所述K’个第一候选表和所述时间信息,得到新的第一SQL语句。换句话讲,若第K+1个限制条件列表为非空,可以扩充第一候选表的数量,并重新生成第一SQL语句。
在一些可实现方式中,基于第1个SQL结果至第K个SQL结果,得到第一SQL语句,包括:将第1个SQL结果至第K个SQL结果输入至第三大语言模型,得到第一SQL语句。
在本申请实施例中,第i个SQL结果包括:第i个子SQL语句。
在一些可实现方式中,第i个SQL结果还包括:K个第一候选表中的第i个候选表的外键,但不限于此。其中,第1个SQL结果至第K个SQL结果所包括的外键用于关联第1个子SQL语句至第K个子SQL语句。
应理解的是,第三大语言模型用于关联第1个SQL结果至第K个SQL结果,以生成第一SQL语句,基于此,第三大语言模型也被称为SQL关联模型。
图4为本申请实施例提供的一种SQL语句生成方法示意图,如图4所示,假设针对待查询语句存在K个第一候选表,电子设备可以将该待查询语句、第1个限制条件列表、K个第一候选表的筛选字段、待查询语句的时间信息、第1个候选表和至少一个样本输入第二大语言模型,得到第1个SQL结果;其中,第1个限制条件列表是由至少一个限制条件构成的列表。进一步地,电子设备可以从第1个限制条件列表中删除与第1个候选表匹配的限制条件,形成第2个限制条件列表。接着电子设备可以将该待查询语句、第2个限制条件列表、K个第一候选表的筛选字段、待查询语句的时间信息、第2个候选表和至少一个样本输入第二大语言模型,得到第2个SQL结果;进一步地,电子设备可以从第2个限制条件列表中删除与第2个候选表匹配的限制条件,形成第3个限制条件列表,以此类推,电子设备可以将该待查询语句、第K个限制条件列表、K个第一候选表的筛选字段、待查询语句的时间信息、第K个候选表和至少一个样本输入第二大语言模型,得到第K个SQL结果。进一步地,电子设备可以从第K个限制条件列表中删除与第K个候选表匹配的限制条件,形成第K+1个限制条件列表。更进一步地,电子设备可以判断第K+1个限制条件列表是否为空,如果为空,则将第1个SQL结果至第K个SQL结果输入至第三大语言模型,得到第一SQL语句。如果为非空,则扩充候选集,并重新生成SQL语句,其中,由于候选表发生了变化,因此,候选表的筛选字段可能也会发生变化,基于此,如图4所示,在重新生成SQL语句时,扩充了候选表之后,指向第1个候选表的筛选字段和第1个候选表。
在一些可实现方式中,S240-2A-3a可以包括:
S240-2A-3a-1’:将待查询语句、至少一个限制条件、K个第一候选表的筛选字段、时间信息、K个第一候选表和至少一个样本输入第五大语言模型,得到第一SQL语句。
应理解的是,S240-2A-3a的该可实现方式与该步骤的上一可实现方式的区别在于:在该可实现方式中,直接将待查询语句、至少一个限制条件、K个第一候选表的筛选字段、时间信息、K个第一候选表和至少一个样本输入第五大语言模型,得到第一SQL语句。而在上一可实现方式中,依照用户编写SQL语句的逻辑思维方式将待查询语句生成SQL语句。
应理解的是,本申请实施例对S240-2A-3a的可实现方式不做限制。
在一些可实现方式中,S240-2A可以包括:
S240-2A-1b:基于待查询语句、至少一个限制条件、K个第一候选表、K个第一候选表的筛选字段和时间信息,得到第一SQL语句。
在一些可实现方式中,S240-2A-1b可以包括:
S240-2A-1b-1:将待查询语句、第i个限制条件列表、K个第一候选表的筛选字段、时间信息、K个第一候选表中的第i个候选表输入第二大语言模型,得到第i个SQL结果;其中,i=1,2……K,第1个限制条件列表是由至少一个限制条件构成的列表,第i个限制条件列表是第i-1个限制条件列表中除第i-1个候选表匹配到的限制条件以外的其他限制条件构成的列表;第i个SQL结果包括:第i个子SQL语句;
S240-2A-1b-2:基于第1个SQL结果至第K个SQL结果,得到第一SQL语句。
下面通过一个示例对SQL语句方法进行阐述:
例如,假设待查询语句是:“帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数”。该待查询语句对应两个候选表,分别是table_a和table_b,分别如下:
table_a A视频应用的剧集表  字段:date 表示table_a中每条记录产生时间id 表示用户标识title 表示剧集名称watch_time 表示观看时长table_b 使用A视频应用的用户归属地表  字段:ds 表示table_b中每条记录产生时间user_name 表示用户标识province 表示省份city 表示城市query:帮我查询昨天通过A视频应用看过《动画片1》的广东用户人数  第一次生成SQL结果:  限制列表:【看过《动画片1》,《动画片1》是个剧集,广东,广东是一个省份】
候选表:table_a  筛选字段:date,id,title  生成子SQL语句:selectidfrom table_awhere title =《动画片1》and date=20230830  外键:id  第二次生成SQL结果:  限制列表:【广东,广东是一个省份】
表:table_b  筛选字段:ds,user_name,province  生成子SQL语句:selectuser_namefrom table_bwhere province = "广东"and ds=20230830  外键:user_name生成最终的SQL语句:select count(distinct t1.id)from (select idfrom table_awhere title =《动画片1》and date=20230830) t1join (select user_namefrom table_bwhere province = "广东"and ds=20230830) t2on t1.id = t2.user_name应理解的是,关于S240-2A-1b的该可实现方式可以参考S240-2A-3a的第一种可实现方式,本申请实施例对此不再赘述。
在一些可实现方式中,S240-2A可以包括:
S240-2A-1b-1’:将待查询语句、至少一个限制条件、K个第一候选表的筛选字段、时间信息和K个第一候选表输入第六大语言模型,得到第一SQL语句。
应理解的是,关于S240-2A-1b的该可实现方式可以参考S240-2A-3a的第二种可实现方式,本申请实施例对此不再赘述。
应理解的是,S240-2A的该可实现方式与该步骤的上一可实现方式的区别在于:在该可实现方式中,电子设备可以无需获取与待查询语句具有相同类型的至少一个样本,进而无需基于所述至少一个样本得到第一SQL语句。而在上一可实现方式中,电子设备可以需要获取与待查询语句具有相同类型的至少一个样本,进而基于所述至少一个样本得到第一SQL语句。
应理解的是,本申请实施例对S240-2A的可实现方式不做限制。
在一些可实现方式中,S240可以包括:
S240-2B:基于待查询语句、至少一个限制条件、K个第一候选表和时间信息,得到第一SQL语句。
应理解的是,S240的该可实现方式与S240的上一可实现方式的区别在于:在该可实现方式中,电子设备无需确定K个第一候选表的筛选字段,在生成第一SQL语句时也无需使用K个第一候选表的筛选字段,而在S240的上一可实现方式,需要确定K个第一候选表的筛选字段,在生成第一SQL语句时也需要使用K个第一候选表的筛选字段。基于此,关于S240的该可实现方式的解释说明可参考S240的上一可实现方式的解释说明,本申请实施例对此不再赘述。
在一些可实现方式中,在S240之后,SQL语句生成方法还可以包括:
S250:执行第一SQL语句;
S260:若第一SQL语句执行失败,则生成第一SQL语句的报错信息;其中,报错信息包括纠错信息。
应理解的是,通常SQL语句的报错信息仅包括:出错信息,但不包括纠错信息,在本申请实施例中,可以对报错信息进行进一步增强,即报错信息包括纠错信息,如果后续是通过人工方式修正SQL语句,使得用户基于该纠错信息可以快速修正SQL语句,如果后续通过自动化方式修正SQL语句,也可以使得用于修正SQL语句的大语言模型基于该报错信息可以快速修正SQL语句。
例如,假设SQL语句如下:
SELECT a.province , COUNT(DISTINCT a.id) AS uv FROM table_a JOINtable_b ON a.id=b.id GROUP BY a.province
假设id字段实际应该在table_b中,基于此,报错信息如下:
id is not in table_a,is in table_b;
其中,id is not in table_a是出错信息,is in table_b是纠错信息。
再例如,假设SQL语句如下:
SELECT a.province , COUNT(DISTINCT id) AS uv FROM table_a JOIN table_b ON a.id= b.id GROUP BY a.province
由于在COUNT(DISTINCT id)中并没有指明id是属于那张表,假设id字段实际应该在table_b中,基于此,报错信息如下:
column id is ambiguous, id is in table_b;
其中,column id is ambiguous是出错信息,is in table_b是纠错信息。
在一些可实现方式中,生成第一SQL语句的报错信息,包括:计算第一SQL语句的错误字段与K个第一候选表中每个字段的第七相似度,并将K个第一候选表中对应第七相似度大于第五预设阈值的字段的所属表确定为错误字段的所属表。
在一些可实现方式中,电子设备在计算错误字段与K个第一候选表中每个字段的第七相似度时,需要将错误字段以及K个第一候选表中每个字段分别转换为对应的嵌入向量(embedding)。基于此,计算错误字段与每个字段的相似度也就是计算嵌入向量之间的相似度。
在一些可实现方式中,电子设备可以将错误字段输入至BERT模型,以得到错误字段对应的嵌入向量,但不限于此。
在一些可实现方式中,电子设备可以将K个第一候选表中每个字段输入至BERT模型,以得到K个第一候选表中每个字段对应的嵌入向量,但不限于此。
应理解的是,关于第七相似度的计算方法可以参考第一相似度的计算方法,本申请实施例对此不再赘述。
在一些可实现方式中,第五预设阈值的取值可以是70%、80%、90%等等,本申请实施例对此不做限制。
在一些可实现方式中,生成第一SQL语句的报错信息,包括:通过第三正则表达式识别错误字段的所属表;基于错误字段的所属表,生成第一SQL语句的报错信息。
应理解的是,第三正则表达式可以规定包含错误字段的表是错误字段的所属表。
例如,假设SQL语句如下:
SELECT a.province , COUNT(DISTINCT id) AS uv FROM table_a JOIN table_b ON a.id= b.id GROUP BY a.province
假设电子确定id字段的所属表是table_b,在这种情况下,报错信息如下:
column id is ambiguous, id is in table_b。
在一些可实现方式中,生成第一SQL语句的报错信息之后,还包括:基于待查询语句、K个第一候选表、第一SQL语句和报错信息,得到第二SQL语句。
在一些可实现方式中,基于待查询语句、K个第一候选表、第一SQL语句和报错信息,得到第二SQL语句,包括:将待查询语句、K个第一候选表、第一SQL语句和报错信息输入至第四大语言模型,得到第二SQL语句。
图5为本申请实施例提供的另一种SQL语句生成方法示意图,如图5所示,假设针对待查询语句存在K个第一候选表,电子设备可以将该待查询语句、第1个限制条件列表、K个第一候选表的筛选字段、待查询语句的时间信息、第1个候选表和至少一个样本输入第二大语言模型,得到第1个SQL结果;其中,第1个限制条件列表是由至少一个限制条件构成的列表。进一步地,电子设备可以从第1个限制条件列表中删除与第1个候选表匹配的限制条件,形成第2个限制条件列表。接着电子设备可以将该待查询语句、第2个限制条件列表、K个第一候选表的筛选字段、待查询语句的时间信息、第2个候选表和至少一个样本输入第二大语言模型,得到第2个SQL结果;进一步地,电子设备可以从第2个限制条件列表中删除与第2个候选表匹配的限制条件,形成第3个限制条件列表,以此类推,电子设备可以将该待查询语句、第K个限制条件列表、K个第一候选表的筛选字段、待查询语句的时间信息、第K个候选表和至少一个样本输入第二大语言模型,得到第K个SQL结果。进一步地,电子设备可以从第K个限制条件列表中删除与第K个候选表匹配的限制条件,形成第K+1个限制条件列表。更进一步地,电子设备可以判断第K+1个限制条件列表是否为空,如果为空,则将第1个SQL结果至第K个SQL结果输入至第三大语言模型,得到第一SQL语句。如果为非空,则扩充第一候选集,并重新生成SQL语句。其中,由于候选表发生了变化,因此,候选表的筛选字段可能也会发生变化,基于此,如图5所示,在重新生成SQL语句时,扩充了候选表之后,指向第1个候选表的筛选字段和第1个候选表。进一步地,在生成第一SQL语句之后,电子设备可以执行该第一SQL语句,并检测是否执行成功,如果执行失败,则电子设备可以将待查询语句、K个第一候选表、第一SQL语句和报错信息输入至第四大语言模型,得到第二SQL语句。如果执行成功,则输出该第一SQL语句。
在另一些可实现方式中,基于待查询语句、K个第一候选表、第一SQL语句和报错信息,得到第二SQL语句,包括:将待查询语句、所述至少一个限制条件、K个第一候选表、所述时间信息、第一SQL语句和报错信息输入至第七大语言模型,得到第二SQL语句。
应理解的是,第二SQL语句指的是对第一SQL语句进行修正后得到的SQL语句。
应理解的是,本申请实施例所涉及的第一大语言模型至第七大语言模型,它们的模型结构相同,不同的是:为了适应于不同的任务,它们的模型参数存在一定的差异。
在本申请实施例中,电子设备可以基于大语言模型,将自然语言形式的待查询语句自动转换为SQL语句,而无需用户手动编写SQL语句,相对于人工方式可以提高SQL语句生成效率,进而可以提高数据库查询效率。其中,大语言模型可以对待查询语句进行命名实体识别,即语义分析和结构化处理,得到待查询语句的关键信息,以更好的理解用户的查询意图;进一步地将这些关键信息与数据库中的表的信息进行关联,从而可以基于用户的查询意图实现精确的库表定位,进而可以提高SQL语句的准确度,也为实现自然语言与数据库之间的无缝交互提供了有力支持。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文对本申请实施例提供的方法进行了说明,下面对本申请实施例提供的SQL语句生成装置进行说明。
图6为本申请实施例提供的一种SQL语句生成装置600的示意图,如图6所示,该装置600包括:收发模块610和处理模块620。收发模块610用于获取自然语言形式的待查询语句;处理模块620用于:将待查询语句输入第一大语言模型,得到待查询语句的应用信息、时间信息和指标信息;基于应用信息和指标信息,召回K个第一候选表,K为大于1的整数;基于待查询语句、K个第一候选表和时间信息,得到待查询语句对应的第一SQL语句。
在一些可实现方式中,处理模块620具体用于:对应用信息对应的P个第二候选表进行召回,P为大于K的整数;基于指标信息,在P个第二候选表中召回K个第一候选表。
在一些可实现方式中,处理模块620具体用于:基于待查询语句的至少一个限制条件和指标信息,在P个第二候选表中召回K个第一候选表。
在一些可实现方式中,处理模块620具体用于:计算至少一个限制条件中的每个限制条件与每个第二候选表的信息的第一相似度;计算指标信息与每个第二候选表的信息的第二相似度;基于第一相似度和第二相似度,在P个第二候选表中召回K个第一候选表。
在一些可实现方式中,处理模块620具体用于:按照第一相似度和第二相似度由大到小的顺序,选择前K个相似度;将前K个相似度对应的第二候选表确定为K个第一候选表,并召回K个第一候选表。
在一些可实现方式中,处理模块620具体用于:基于待查询语句、待查询语句的至少一个限制条件、K个第一候选表和时间信息,得到第一SQL语句。
在一些可实现方式中,处理模块620还用于:在处理模块620基于待查询语句、待查询语句的至少一个限制条件、K个第一候选表和时间信息,得到第一SQL语句之前,分别基于时间字段、用户标识字段、至少一个限制条件和指标信息,确定K个第一候选表的筛选字段;相应的,处理模块620具体用于:基于待查询语句、至少一个限制条件、K个第一候选表、K个第一候选表的筛选字段和时间信息,得到第一SQL语句。
在一些可实现方式中,处理模块620具体用于:计算时间字段与K个第一候选表中每个字段的第三相似度;将K个第一候选表中对应第三相似度大于第一预设阈值的字段确定为K个第一候选表的筛选字段;或者,通过第一正则表达式确定K个第一候选表包含时间字段的至少一个第一字段;将至少一个第一字段确定为K个第一候选表的筛选字段。
在一些可实现方式中,处理模块620具体用于:计算用户标识字段与K个第一候选表中每个字段的第四相似度,并将K个第一候选表中对应第四相似度大于第二预设阈值的字段确定为K个第一候选表的筛选字段;或者,通过第二正则表达式确定K个第一候选表包含用户标识字段的至少一个第二字段;将至少一个第二字段确定为K个第一候选表的筛选字段。
在一些可实现方式中,处理模块620具体用于:计算至少一个限制条件中的每个限制条件与K个第一候选表中每个字段的第五相似度;将K个第一候选表中对应第五相似度大于第三预设阈值的字段确定为K个第一候选表的筛选字段。
在一些可实现方式中,处理模块620具体用于:计算指标信息与K个第一候选表中每个字段的第六相似度;将K个第一候选表中对应第六相似度大于第四预设阈值的字段确定为K个第一候选表的筛选字段。
在一些可实现方式中,处理模块620还用于:在处理模块620基于待查询语句、至少一个限制条件、K个第一候选表、K个第一候选表的筛选字段和时间信息,得到第一SQL语句之前,确定待查询语句的类型;获取与待查询语句相同类型的至少一个样本;相应的,处理模块620具体用于:基于待查询语句、至少一个限制条件、K个第一候选表、K个第一候选表的筛选字段、时间信息和至少一个样本,得到第一SQL语句。
在一些可实现方式中,处理模块620具体用于:将待查询语句、第i个限制条件列表、K个第一候选表的筛选字段、时间信息、K个第一候选表中的第i个候选表和至少一个样本输入第二大语言模型,得到第i个SQL结果;其中,i=1,2……K,第1个限制条件列表是由至少一个限制条件构成的列表,第i个限制条件列表是第i-1个限制条件列表中除第i-1个候选表匹配到的限制条件以外的其他限制条件构成的列表;第i个SQL结果包括:第i个子SQL语句;基于第1个SQL结果至第K个SQL结果,得到第一SQL语句。
在一些可实现方式中,处理模块620还用于:在处理模块620基于第1个SQL结果至第K个SQL结果,得到第一SQL语句之前,获取第K+1个限制条件列表;其中,第K+1个限制条件列表是第K个限制条件列表中除第K个候选表匹配到的限制条件以外的其他限制条件构成的列表;相应的,处理模块620具体用于:若第K+1个限制条件列表为空,则基于第1个SQL结果至第K个SQL结果,得到第一SQL语句。
在一些可实现方式中,处理模块620具体用于:将第1个SQL结果至第K个SQL结果输入至第三大语言模型,得到第一SQL语句。
在一些可实现方式中,处理模块620还用于:在处理模块620基于待查询语句、K个第一候选表和时间信息,得到待查询语句对应的第一结构化查询语言SQL语句之后,执行第一SQL语句;若第一SQL语句执行失败,则生成第一SQL语句的报错信息;其中,报错信息包括纠错信息。
在一些可实现方式中,处理模块620具体用于:计算第一SQL语句的错误字段与K个第一候选表中每个字段的第七相似度,并将K个第一候选表中对应第七相似度大于第五预设阈值的字段的所属表确定为错误字段的所属表;或者,通过第三正则表达式识别错误字段的所属表;基于错误字段的所属表,生成第一SQL语句的报错信息。
在一些可实现方式中,处理模块620还用于:在处理模块620生成第一SQL语句的报错信息之后,基于待查询语句、K个第一候选表、第一SQL语句和报错信息,得到第二SQL语句。
在一些可实现方式中,处理模块620具体用于:将待查询语句、K个第一候选表、第一SQL语句和报错信息输入至第四大语言模型,得到第二SQL语句。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图6所示的装置600可以执行图2对应的方法实施例,并且装置600中的各个模块的前述和其它操作和/或功能分别为了实现图2中的各个方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置600。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图7是本申请实施例提供的电子设备的示意性框图。
如图7所示,该电子设备可包括:
存储器710和处理器720,该存储器710用于存储计算机程序,并将该程序代码传输给该处理器720。换言之,该处理器720可以从存储器710中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器720可用于根据该计算机程序中的指令执行上述方法实施例。
在本申请的一些实施例中,该处理器720可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器710包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器710中,并由该处理器720执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
如图7所示,该电子设备还可包括:
收发器730,该收发器730可连接至该处理器720或存储器710。
其中,处理器720可以控制该收发器730与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器730可以包括发射机和接收机。收发器730还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上内容仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。

Claims (20)

1.一种SQL语句生成方法,其特征在于,包括:
获取自然语言形式的待查询语句;
将所述待查询语句输入第一大语言模型,得到所述待查询语句的应用信息、时间信息和指标信息;
基于所述应用信息和所述指标信息,召回K个第一候选表,K为大于1的整数;
基于所述待查询语句、所述K个第一候选表和所述时间信息,得到所述待查询语句对应的第一结构化查询语言SQL语句。
2.根据权利要求1所述的方法,其特征在于,所述基于所述应用信息和所述指标信息,召回K个第一候选表,包括:
对所述应用信息对应的P个第二候选表进行召回,P为大于K的整数;
基于所述指标信息,在所述P个第二候选表中召回所述K个第一候选表。
3.根据权利要求2所述的方法,其特征在于, 所述基于所述指标信息,在所述P个第二候选表中召回所述K个第一候选表,包括:
基于所述待查询语句的至少一个限制条件和所述指标信息,在所述P个第二候选表中召回所述K个第一候选表。
4.根据权利要求3所述的方法,其特征在于,所述基于所述待查询语句的至少一个限制条件和所述指标信息,在所述P个第二候选表中召回所述K个第一候选表,包括:
计算所述至少一个限制条件中的每个限制条件与每个所述第二候选表的信息的第一相似度;
计算所述指标信息与每个所述第二候选表的信息的第二相似度;
基于所述第一相似度和所述第二相似度,在所述P个第二候选表中召回所述K个第一候选表。
5.根据权利要求4所述的方法,其特征在于,所述基于所述第一相似度和所述第二相似度,在所述P个第二候选表中召回所述K个第一候选表,包括:
按照所述第一相似度和所述第二相似度由大到小的顺序,选择前K个相似度;
将所述前K个相似度对应的第二候选表确定为所述K个第一候选表,并召回所述K个第一候选表。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述基于所述待查询语句、所述K个第一候选表和所述时间信息,得到所述待查询语句对应的第一结构化查询语言SQL语句,包括:
基于所述待查询语句、所述待查询语句的至少一个限制条件、所述K个第一候选表和所述时间信息,得到第一SQL语句。
7.根据权利要求6所述的方法,其特征在于,所述基于所述待查询语句、所述待查询语句的至少一个限制条件、所述K个第一候选表和所述时间信息,得到第一SQL语句之前,还包括:
分别基于时间字段、用户标识字段、所述至少一个限制条件和所述指标信息,确定所述K个第一候选表的筛选字段;
所述基于所述待查询语句、所述待查询语句的至少一个限制条件、所述K个第一候选表和所述时间信息,得到第一SQL语句,包括:
基于所述待查询语句、所述至少一个限制条件、所述K个第一候选表、所述K个第一候选表的筛选字段和所述时间信息,得到所述第一SQL语句。
8.根据权利要求7所述的方法,其特征在于,基于所述时间字段,确定所述K个第一候选表的筛选字段,包括:
计算所述时间字段与所述K个第一候选表中每个字段的第三相似度;将所述K个第一候选表中对应所述第三相似度大于第一预设阈值的字段确定为所述K个第一候选表的筛选字段;或者,
通过第一正则表达式确定所述K个第一候选表包含所述时间字段的至少一个第一字段;将所述至少一个第一字段确定为所述K个第一候选表的筛选字段。
9.根据权利要求7所述的方法,其特征在于,基于所述用户标识字段,确定所述K个第一候选表的筛选字段,包括:
计算所述用户标识字段与所述K个第一候选表中每个字段的第四相似度,并将所述K个第一候选表中对应所述第四相似度大于第二预设阈值的字段确定为所述K个第一候选表的筛选字段;或者,
通过第二正则表达式确定所述K个第一候选表包含所述用户标识字段的至少一个第二字段;将所述至少一个第二字段确定为所述K个第一候选表的筛选字段。
10.根据权利要求7所述的方法,其特征在于,基于所述至少一个限制条件,确定所述K个第一候选表的筛选字段,包括:
计算所述至少一个限制条件中的每个限制条件与所述K个第一候选表中每个字段的第五相似度;
将所述K个第一候选表中对应所述第五相似度大于第三预设阈值的字段确定为所述K个第一候选表的筛选字段。
11.根据权利要求7所述的方法,其特征在于,基于所述指标信息,确定所述K个第一候选表的筛选字段,包括:
计算所述指标信息与所述K个第一候选表中每个字段的第六相似度;
将所述K个第一候选表中对应所述第六相似度大于第四预设阈值的字段确定为所述K个第一候选表的筛选字段。
12.根据权利要求7所述的方法,其特征在于,所述基于所述待查询语句、所述至少一个限制条件、所述K个第一候选表、所述K个第一候选表的筛选字段和所述时间信息,得到所述第一SQL语句之前,还包括:
确定所述待查询语句的类型;
获取与所述待查询语句相同类型的至少一个样本;
所述基于所述待查询语句、所述至少一个限制条件、所述K个第一候选表、所述K个第一候选表的筛选字段和所述时间信息,得到所述第一SQL语句,包括:
基于所述待查询语句、所述至少一个限制条件、所述K个第一候选表、所述K个第一候选表的筛选字段、所述时间信息和所述至少一个样本,得到所述第一SQL语句。
13.根据权利要求12所述的方法,其特征在于,所述基于所述待查询语句、所述至少一个限制条件、所述K个第一候选表、所述K个第一候选表的筛选字段、所述时间信息和所述至少一个样本,得到所述第一SQL语句,包括:
将所述待查询语句、第i个限制条件列表、所述K个第一候选表的筛选字段、所述时间信息、所述K个第一候选表中的第i个候选表和所述至少一个样本输入第二大语言模型,得到第i个SQL结果;其中,i=1,2……K,第1个限制条件列表是由所述至少一个限制条件构成的列表,所述第i个限制条件列表是第i-1个限制条件列表中除第i-1个候选表匹配到的限制条件以外的其他限制条件构成的列表;所述第i个SQL结果包括:第i个子SQL语句;
基于第1个SQL结果至第K个SQL结果,得到所述第一SQL语句。
14.根据权利要求13所述的方法,其特征在于,所述基于第1个SQL结果至第K个SQL结果,得到所述第一SQL语句之前,还包括:
获取第K+1个限制条件列表;其中,所述第K+1个限制条件列表是第K个限制条件列表中除第K个候选表匹配到的限制条件以外的其他限制条件构成的列表;
所述基于第1个SQL结果至第K个SQL结果,得到所述第一SQL语句,包括:
若所述第K+1个限制条件列表为空,则基于所述第1个SQL结果至所述第K个SQL结果,得到所述第一SQL语句。
15.根据权利要求14所述的方法,其特征在于,所述基于所述第1个SQL结果至所述第K个SQL结果,得到所述第一SQL语句,包括:
将所述第1个SQL结果至所述第K个SQL结果输入至第三大语言模型,得到所述第一SQL语句。
16.根据权利要求1-5中任一项所述的方法,其特征在于,所述基于所述待查询语句、所述K个第一候选表和所述时间信息,得到所述待查询语句对应的第一结构化查询语言SQL语句之后,还包括:
执行第一SQL语句;
若所述第一SQL语句执行失败,则生成所述第一SQL语句的报错信息;其中,所述报错信息包括纠错信息。
17.根据权利要求16所述的方法,其特征在于,所述生成所述第一SQL语句的报错信息,包括:
计算所述第一SQL语句的错误字段与所述K个第一候选表中每个字段的第七相似度,并将所述K个第一候选表中对应所述第七相似度大于第五预设阈值的字段的所属表确定为所述错误字段的所属表;或者,通过第三正则表达式识别所述错误字段的所属表;
基于所述错误字段的所属表,生成所述第一SQL语句的报错信息。
18.根据权利要求16所述的方法,其特征在于,所述生成所述第一SQL语句的报错信息之后,还包括:
基于所述待查询语句、所述K个第一候选表、所述第一SQL语句和所述报错信息,得到第二SQL语句。
19.一种SQL语句生成装置,其特征在于,包括:
收发模块,用于获取自然语言形式的待查询语句;
处理模块,用于:
将所述待查询语句输入第一大语言模型,得到所述待查询语句的应用信息、时间信息和指标信息;
基于所述应用信息和所述指标信息,召回K个第一候选表,K为大于1的整数;
基于所述待查询语句、所述K个第一候选表和所述时间信息,得到所述待查询语句对应的第一SQL语句。
20.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至18中任一项所述的方法。
CN202311285556.5A 2023-10-07 2023-10-07 Sql语句生成方法、装置及设备 Active CN117056351B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311285556.5A CN117056351B (zh) 2023-10-07 2023-10-07 Sql语句生成方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311285556.5A CN117056351B (zh) 2023-10-07 2023-10-07 Sql语句生成方法、装置及设备

Publications (2)

Publication Number Publication Date
CN117056351A true CN117056351A (zh) 2023-11-14
CN117056351B CN117056351B (zh) 2024-02-09

Family

ID=88669529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311285556.5A Active CN117056351B (zh) 2023-10-07 2023-10-07 Sql语句生成方法、装置及设备

Country Status (1)

Country Link
CN (1) CN117056351B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251473A (zh) * 2023-11-20 2023-12-19 摩斯智联科技有限公司 车辆数据查询分析方法、系统、装置和存储介质
CN117271561A (zh) * 2023-11-20 2023-12-22 海信集团控股股份有限公司 一种基于大语言模型的sql语句生成方法、装置及设备
CN118377783A (zh) * 2024-06-27 2024-07-23 卓世智星(青田)元宇宙科技有限公司 Sql语句生成方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988784A (zh) * 2021-04-26 2021-06-18 广州思迈特软件有限公司 数据查询方法、查询语句生成方法及其装置
CN114138817A (zh) * 2021-12-03 2022-03-04 中国建设银行股份有限公司 基于关系型数据库的数据查询方法、设备、介质及产品
CN115292349A (zh) * 2022-07-28 2022-11-04 浪潮软件集团有限公司 一种生成sql的方法、系统及装置
US20220358125A1 (en) * 2021-05-10 2022-11-10 Servicenow, Inc. Systems and methods for translating natural language queries into a constrained domain-specific language
CN116842036A (zh) * 2023-06-28 2023-10-03 平安科技(深圳)有限公司 数据查询方法、装置、计算机设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988784A (zh) * 2021-04-26 2021-06-18 广州思迈特软件有限公司 数据查询方法、查询语句生成方法及其装置
US20220358125A1 (en) * 2021-05-10 2022-11-10 Servicenow, Inc. Systems and methods for translating natural language queries into a constrained domain-specific language
CN114138817A (zh) * 2021-12-03 2022-03-04 中国建设银行股份有限公司 基于关系型数据库的数据查询方法、设备、介质及产品
CN115292349A (zh) * 2022-07-28 2022-11-04 浪潮软件集团有限公司 一种生成sql的方法、系统及装置
CN116842036A (zh) * 2023-06-28 2023-10-03 平安科技(深圳)有限公司 数据查询方法、装置、计算机设备及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251473A (zh) * 2023-11-20 2023-12-19 摩斯智联科技有限公司 车辆数据查询分析方法、系统、装置和存储介质
CN117271561A (zh) * 2023-11-20 2023-12-22 海信集团控股股份有限公司 一种基于大语言模型的sql语句生成方法、装置及设备
CN117271561B (zh) * 2023-11-20 2024-03-01 海信集团控股股份有限公司 一种基于大语言模型的sql语句生成方法、装置及设备
CN117251473B (zh) * 2023-11-20 2024-03-15 摩斯智联科技有限公司 车辆数据查询分析方法、系统、装置和存储介质
CN118377783A (zh) * 2024-06-27 2024-07-23 卓世智星(青田)元宇宙科技有限公司 Sql语句生成方法及装置
CN118377783B (zh) * 2024-06-27 2024-09-17 卓世智星(青田)元宇宙科技有限公司 Sql语句生成方法及装置

Also Published As

Publication number Publication date
CN117056351B (zh) 2024-02-09

Similar Documents

Publication Publication Date Title
CN117056351B (zh) Sql语句生成方法、装置及设备
US20220382564A1 (en) Aggregate features for machine learning
US7945576B2 (en) Location recognition using informative feature vocabulary trees
US11586838B2 (en) End-to-end fuzzy entity matching
CN109408578B (zh) 一种针对异构环境监测数据融合方法
CN107122469A (zh) 基于语义相似度与时效性频率的查询推荐排序方法与装置
US10217469B2 (en) Generation of a signature of a musical audio signal
CN116703531B (zh) 物品数据处理方法、装置、计算机设备和存储介质
CN113869420A (zh) 基于对比学习的文本推荐方法及相关设备
CN117009539A (zh) 知识图谱的实体对齐方法、装置、设备及存储介质
CN115114542A (zh) 一种对象推荐方法、系统、训练方法、介质及计算机设备
KR20240004518A (ko) 노드 정보를 사용하여 신경망 파라미터를 업데이트하는 디코더, 인코더, 제어부, 방법 및 컴퓨터 프로그램
CN112329470B (zh) 一种基于端到端模型训练的智能地址识别方法及装置
CN112348041B (zh) 日志分类、日志分类训练方法及装置、设备、存储介质
CN112685623B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN112541446B (zh) 一种生物特征库更新方法、装置及电子设备
CN115587125A (zh) 元数据管理方法及装置
Zhang et al. Heterogeneous Graph Neural Network with Personalized and Adaptive Diversity for News Recommendation
CN114168625A (zh) 一种语法树的优化方法、装置
CN117851578B (zh) 一种信息服务方法、装置及电子设备
US11829735B2 (en) Artificial intelligence (AI) framework to identify object-relational mapping issues in real-time
CN111736845B (zh) 一种编码方法和装置
CN118312605A (zh) 一种基于大语言模型的用户输入过滤方法及装置
CN113033819A (zh) 基于异构模型的联邦学习方法、装置及介质
CN116881450A (zh) 资讯分类方法、装置、计算机设备、存储介质和程序产品

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