CN117235105A - 对大模型进行微调、生成sql语句的方法及装置 - Google Patents
对大模型进行微调、生成sql语句的方法及装置 Download PDFInfo
- Publication number
- CN117235105A CN117235105A CN202311235230.1A CN202311235230A CN117235105A CN 117235105 A CN117235105 A CN 117235105A CN 202311235230 A CN202311235230 A CN 202311235230A CN 117235105 A CN117235105 A CN 117235105A
- Authority
- CN
- China
- Prior art keywords
- slot
- template
- sub
- chinese
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000012549 training Methods 0.000 claims abstract description 81
- 239000000470 constituent Substances 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 239000000523 sample Substances 0.000 description 32
- 238000010586 diagram Methods 0.000 description 6
- 208000014674 injury Diseases 0.000 description 4
- 208000012260 Accidental injury Diseases 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 208000027418 Wounds and injury Diseases 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例披露一种对大模型进行微调的方法及装置,一种生成SQL语句的方法及装置。其中微调方法包括:首先,生成训练样本,其包括具有预定格式的提示文本以及与所述提示文本对应的回答文本,其中所述提示文本中包括中文查询语句,该中文查询语句所查询的数据库表的元信息以及对元信息的中文注解;所述回答文本包括所述中文查询语句对应的SQL语句;然后,利用多个所述训练样本对预训练的大模型进行微调,得到微调后的大模型。基于微调后的大模型,可以准确生成与用户输入的目标查询语句对应的目标SQL语句。
Description
技术领域
本说明书一个或多个实施例涉及自然语言处理技术领域,尤其涉及一种对大模型进行微调的方法及装置、一种生成SQL语句的方法及装置、一种计算机可读存储介质,以及一种计算设备。
背景技术
大语言模型(Large Language Model,简称LLM)一般是指使用多个不同领域的大量文本数据训练的机器学习模型,可以生成自然语言文本或理解自然语言文本的语义。预训练(Pretrain)后的LLM可以直接用于,或者在微调(Finetune)后用于处理特定领域的自然语言任务,比如说,智能问答,具体如:根据用户针对数据库查询进行的提问,生成对应的结构化查询语言(Structured Query Language,简称SQL)语句。
然而,目前当用户采用中文提问时,基于LLM回答SQL语句的任务性能有限。因此,需要一种改进后的方案,可以满足实际应用中的更高要求,包括支持用户以纯中文形式提出SQL生成问题,并回答出准确的SQL语句等。
发明内容
本说明书实施例描述一种对大模型进行微调的方法及装置,以及一种生成SQL语句的方法及装置,可以满足实际应用中的更高要求。
根据第一方面,提供一种对大模型进行微调的方法。该方法包括:
生成训练样本,其包括具有预定格式的提示文本以及与所述提示文本对应的回答文本,其中所述提示文本中包括中文查询语句,该中文查询语句所查询的数据库表的元信息以及对元信息的中文注解;所述回答文本包括所述中文查询语句对应的SQL语句。利用多个所述训练样本对预训练的大模型进行微调,得到微调后的大模型,用于生成与用户输入的目标查询语句对应的目标SQL语句。
在一个实施例中,所述元信息包括多个信息项,所述中文注解包括对各个信息项的注解项;所述预定格式指示提示文本中的内容按以下顺序排列:所述中文查询语句、多对信息项-注解项。
在一个具体的实施例中,所述提示文本还包括生成SQL语句任务的任务名称,所述预定格式还指示将所述任务名称排列在所述中文查询语句之前。
在一个实施例中,其中生成训练样本,包括:获取所述中文查询语句和对应的SQL语句;基于所述SQL语句包含的表名,从数据库系统中提取该表名所对应数据库表的元信息,以及所述元信息的中文注解;利用所述中文查询语句、SQL语句,以及提取的所述元信息和中文注解,构建所述训练样本。
在一个实施例中,其中生成训练样本,包括:基于数据库系统,对针对训练样本配置的模板进行自动填充,生成所述训练样本。
在一个具体的实施例中,所述模板包括针对所述中文查询语句配置的第一子模板、针对所述元信息和中文注解配置的第二子模板,以及针对所述SQL语句配置的第三子模板;其中,对针对训练样本配置的模板进行自动填充,包括:根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位;基于填充至所述第一子模板的数据和所述数据库系统,自动填充所述第二子模板和第三子模板。
在一个更具体的实施例中,所述第一子模板包含第一槽位;其中,根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位,包括:根据所述第一槽位的填充规则中包含的数据类别,基于所述数据库系统确定该数据类别下的数据以填充所述第一槽位。
进一步,在一个例子中,基于所述数据库系统确定该数据类别下的数据以填充所述第一槽位,包括:基于所述数据库系统确定该数据类别下的多个原始数据;从所述多个原始数据中择一填充至所述第一槽位,或者,将其中一个原始数据的别名填充至所述第一槽位。
在一个更具体的例子中,所述数据类别为表名类、列名类、或具有预定数据类型的字段值类。
在另一个例子中,所述第一子模板包含第二槽位,所述模板的配置信息中包括针对所述第二槽位配置的多个候选槽值;其中,根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位,包括:根据所述第二槽位的填充规则,从所述多个候选槽值中择一填充至所述第二槽位。
在又一个例子中,所述第一子模板包含第三槽位;其中,根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位,包括:根据所述第三槽位的填充规则中包含的数据类型,随机生成该数据类型下的数据,填充至所述第三槽位。
在一个更具体的例子中,所述数据类型为数值类型或日期类型。
在再一个例子中,所述第一子模板包括必选部分,并随机包括可选部分;所述可选部分的组成单元包括第四槽位、第五槽位和第六槽位,各自的填充规则依次指示填充逻辑运算符的中文描述、针对预定数据类型的操作符、针对所述预定数据类型的操作数。
在一个更具体的例子中,在根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位之前,所述方法还包括:随机确定是否在所述第一子模板中添加所述可选部分;在确定出添加的情况下,确定添加的可选部分中所述组成单元的数量,以及,在所述第三子模板中增加与该拼接的可选部分对应的模板内容。
在还一个例子中,基于填充至所述第一子模板的数据和所述数据库系统,自动填充所述第二子模板和第三子模板,包括:基于填充至所述第一子模板的数据所指示的表名,从数据库系统中提取该表名所对应数据库表的元信息,以及该元信息的中文注解,填充至第二子模板;基于所述第一子模板和第三子模板之间的槽位映射关系,根据填充至所述第一子模板的各个槽位的数据确定填充到所述第三子模板中对应槽位的数据。
根据第二方面,提供一种生成SQL语句的方法。该方法包括:
接收用户输入的目标查询语句;基于所述目标查询语句,以及其所查询数据表的元信息和对元信息的中文注解,构建具有预定格式的目标提示文本。利用采用第一方面的方法微调后的大模型处理所述目标提示文本,生成与所述目标查询语句对应的目标SQL语句。
根据第三方面,提供一种对大模型进行微调的装置。该装置包括:
训练样本生成模块,配置为生成训练样本,其包括具有预定格式的提示文本以及与所述提示文本对应的回答文本,其中所述提示文本中包括中文查询语句,该中文查询语句所查询的数据库表的元信息以及对元信息的中文注解;所述回答文本包括所述中文查询语句对应的SQL语句。大模型微调模块,配置为利用多个所述训练样本对预训练的大模型进行微调,得到微调后的大模型,用于生成与用户输入的目标查询语句对应的目标SQL语句。
根据第四方面,提供一种生成SQL语句的装置。该装置包括:查询语句接收模块,配置为接收用户输入的目标查询语句;提示文本构建模块,配置为基于所述目标查询语句,以及其所查询数据表的元信息和对元信息的中文注解,构建具有预定格式的目标提示文本;SQL语句生成模块,配置为利用采用第一方面提供的方法或第三方面提供的装置微调后的大模型处理所述目标提示文本,生成与所述目标查询语句对应的目标SQL语句。
根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面提供的方法。
根据第六方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,该处理器执行所述可执行代码时,实现第一方面或第二方面提供的方法。
综上,采用本说明书实施例披露的上述方法或装置,大模型可以从生成的多个训练样本中学习到用户问题中潜藏的中文语义与数据库表的表名等元信息、元信息的中文注解之间的关系,从而支持用户以纯中文形式提出SQL生成问题,并且能够回答出准确的SQL语句。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出采用通用问答模型生成错误SQL语句的场景示例;
图2示出本说明书实施例披露的对大模型进行微调的方案实施架构图;
图3示出采用基于图2示出的架构微调后的大模型生成正确SQL语句的场景示例;
图4示出本说明书实施例披露的对大模型进行微调的方法流程示意图;
图5示出本说明书实施例披露的生成SQL语句的方法流程示意图;
图6示出本说明书实施例披露的对大模型进行微调的装置结构示意图;
图7示出本说明书实施例披露的生成SQL语句的装置结构示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
承前所述,目前基于大语言模型(文中或简称大模型)进行中文SQL问答的效果欠佳。比如说,目前基于大模型的通用问答模型通常无法直接响应用户的文本转SQL语句(Text-to-SQL)诉求,需要用户输入更多的提示信息才能完成此任务,且会自行猜测字段信息,如图1所示,矩形框选出的信息是错误的,与数据库表的信息不符。
基于以上观察,申请人分析得出:通用问答模型在采用开源数据集进行训练时并未建立中文语义与数据表字段的关系,因而只能机械地以学习经验去猜测用户问题的答案。
由此,申请人提出一种基于大模型的中文SQL问答方案,可以让模型学会中文语义与数据表字段的关联性,从而支持用户以纯中文形式提出SQL生成问题,并且能够回答出准确的SQL语句。
具体地,设计一种新的提示文本(Prompt)格式,包括从数据库的原始信息中提取用户问题所查询数据库表的元信息(如表名、列名等)和对元信息的中文注解,与该用户问题等一起拼接为一个附带中文注解的提示文本,并根据用户问题给出在上述元信息下的答案。对此可参见图2,其中示出新设计的提示文本格式(是一个可行示例但不唯一),由提示文本(prompt)和对应的回答(answer)所构成的训练样本可以用于大模型的微调。
在基于上述训练样本进行的微调过程中,大模型就会学习到用户问题中潜藏的中文语义与数据库表的元信息、元信息的中文注解之间的映射关系。经过此微调的大模型支持用户以纯中文形式提出SQL生成问题,并且能够回答出准确的SQL语句。参见图3,相较于图1中采用通用问答模型得到的错误SQL语句,图3中示出采用基于图的架构微调后的大模型生成的正确SQL语句。
下面结合图4等,对本说明书实施例披露的基于大模型的中文SQL问答方案的实施步骤进行更加详细的介绍。图4示出本说明书实施例披露的对大模型进行微调的方法流程示意图,所述方法的执行主体可以为任何具有计算、处理能力的装置、服务器、平台或设备集群等。如图4所示,所述方法包括以下步骤:
步骤S410,生成训练样本,所述训练样本中包括具有预定格式的提示文本以及与该提示文本对应的回答文本;其中提示文本中包括中文查询语句(或称用户问题),该中文查询语句所查询的数据库表的元信息以及对元信息的中文注解;其中回答文本包括所述中文查询语句对应的SQL语句。
为便于理解,下面先进一步介绍训练样本的组成内容,再介绍训练样本的生成方式。
具体地,训练样本包括的上述内容可以被组织示意在下表1中:
表1
对表1中各项内容的对照介绍如下:
1)中文查询语句
中文查询语句对应用户问题,是自然语言形式的旨在进行数据查询的文本语句,其涉及的自然语言类型至少包括中文,或者只包括中文。在一个实施例中,中文查询语句中只包括中文字符。例如,某个中文查询语句为:查询当前没有信用违约行为的用户名单。在另一个实施例中,中文查询语句中主要包括中文字符,还包括少量的英文字母和/或数字。例如,某个中文查询语句为:查询3年纪1班语文成绩为A的学生名单。
2)中文查询语句所查询的数据库表的元信息
元信息又称元数据(MetaData)。数据库表的元信息主要包括定义表结构的数据,在一个示例中,该元信息包括数据库表的表名和其中各列的列名,在另一个示例中,该元信息中还包括数据库表中的字段值、和/或,字段值的取值规则。需理解,对于数据库系统中针对数据表的全量元信息,训练样本中可以包括其中的一部分或全部,具体的信息项由工作人员预先配置。
3)元信息的中文注解
需理解,元信息一般由英文字母、数字特殊字符等组成,元信息的中文注解以中文的形式对元信息进行批注、解释。
4)具有预定格式的提示文本
需理解,预定格式指示提示文本中包括的各项内容,以及各项内容的排列方式,预定格式可以由工作人员预先设定。
提示文本中至少包括上述1)、2)和3)项内容。在一个实施例中,提示文本中还可以包括任务名称,例如,“生成SQL”,又例如,图2中示出的“文本生成SQL”等。在另一个实施例中,提示文本中还可以包括标签信息,例如,图2中示意的“问题”、“任务名称”和“模式”标签,用于标识其后续接的内容。
对于各项内容的排列方式,关键在于不同训练样本中各项内容的排列方式相同,而不在于排列方式本身。在一个实施例中,可以按照以下顺序对各项内容进行排列:
任务名称、中文查询语句、元信息、元信息的中文注解。
在另一个实施例中,元信息包括多个信息项,其中各个信息项与中文注解中对应该信息项的注解项构成信息项-注解项对,基于此,各项内容的排列方式可以为:
中文查询语句、多对信息项-注解项。
进一步,在一个示例中,元信息包括数据库表的表名和其中各列的列名,中文注解包括表名和列名的中文名称,此时,各项内容的排列方式可以为:
{中文查询文本},模式信息:[表名表中文名],(列名1列中文名1),(列名2列中文名2)......(列名N列中文名N)
5)中文查询语句对应的SQL语句
可以理解,与中文查询语句对应的正确SQL语句能够直接用于对数据库中的数据进行查询操作,从而得到正确的查询结果。
6)回答文本
回答文本至少包括中文查询语句对应的SQL语句。示例性的,回答文本还可以包括标签信息,指示其后续接的是答案,例如,图1中示意出“回答”标签,又或者,标签信息还可以是英文单词answer。
以上结合表1,介绍训练样本的组成内容。接下来介绍训练样本的生成方式。需理解,为清楚、简洁描述,下文主要从单个训练样本的角度介绍样本生成,而实际应用中会生成多个训练样本。
在一种可行的实施方式A中,可以通过以下步骤a1、a2和a3生成训练样本。
步骤a1,获取中文查询语句和对应的SQL语句。
在一个实施例中,考虑到业界已有对自然语言转SQL语句的研究,由此,可以直接购买相关语料。在另一个实施例中,还可以人工构造中文查询语句-SQL语句对,这也是业界的一大主流方式。
步骤a2,基于获取的SQL语句包含的表名,从数据库系统中提取该表名所对应数据库表的元信息,以及元信息的中文注解。
可以理解,可以从SQL语句的From子句中提取出表名,然后据此表名从数据库系统中提取对应的元信息和中文注解。另外,数据库系统通常包括数据库和数据库管理系统,一般可以从数据库管理系统中获取数据库表的元信息和对应的中文注解,以及通过数据库管理系统访问数据库中的数据。
步骤a3,利用上述获取的中文查询语句和对应的SQL语句,以及从数据库系统中提取的元信息和对应的中文注解,构建训练样本。
以上,介绍采用实施方式A生成训练样本。另外,考虑到直接购买语料或人工构造中文查询语句-SQL语句的成本都太大,提出采用实施方式B,自动化生产数据,实现低成本、高效率地构造出大量训练数据。
具体在实施方式B中,基于数据库系统对针对训练样本配置的模板进行自动填充,生成训练样本。可以理解,其中自动填充可以通过运行脚本实现。
为帮助直观理解,下面先展示一个模板示例和根据此模板示例生成的训练样本示例。
模板示例①:
//数值条件,枚举值:["大于","小于","低于","超过","大于等于","小于等于","不大于","不超过","不低于","不小于"]
{"提示文本":"%s%s%s%s(且%s%s%s)的%s,模式信息为%s",
"回答":"SELECT%s FROM%s WHERE%s%s%s(AND%s%s%s)"}
在上述模板示例中,每个%s符号代表一个槽位(slot),模板中的括号()表示其中的内容是可选的。
训练样本示例②:
{"提示文本":"意外险理赔金额大于10万且驾龄不超过2年的用户,模式信息为[
accident_insurance_claims_v5意外伤害险理赔表],(insurance_amount投保金额(记录单位为元)),(user_system_id用户标识(由系统分配)),(claim_amount理赔金额(记录单位为元)),(driving_experience驾龄(记录单位为年)),(user_occupation用户职业(画家,作家,音乐家,科学家))",
"回答":"SELECT user_system_id FROM accident_insurance_claims_v5 WHEREclaim_amount>100000AND driving_experience≤2)"}
以上先直观展示了模板示例①和对其进行自动填充后得到的训练样本示例②。下面详细介绍模板的组成和对应的填充方式。具体地,模板内容中至少包括3个子模板,记作第一子模板,第二子模板和第三子模板,分别用于生成训练样本中的[中文查询语句]、[元信息和中文注解]、[SQL语句],对此可参见表1中的第3列。需说明,在前述介绍中训练样本还可以包括其他内容,如标签信息等,这些内容相对固定,也可以直接被固定包含在模板中。另外,“第一子模板”中的“第一”、“第二子模板”中的“第二”,以及文中他处的类似用语均是为了区分同类事物,不具有排序等其他限定作用。
需说明,上述3个子模板中的各个子模板中包括若干槽位,各个槽位预置对应的填充规则,填充规则可以被编写在用于自动生成训练样本的脚本中。对上述3个子模板的自动填充包括:
b1)第一子模板
根据对第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位。示例性的,第一子模板为模板示例①中的:%s%s%s%s(且%s%s%s)的%s。
需理解,第一子模板用于中文查询语句的生成,而第二子模板用于元信息和其中文注解的生成,第三子模板用于SQL语句的生成。因元信息和中文注解取决于中文查询语句所要查询的数据表,而SQL语句用于实现中文查询语句指示的查询功能,由此,设计在第一子模板的槽位填充数据(或称槽值)确定后,第二子模板和第三子模板的槽值相应确定,这也使得对第一子模板的填充尤为重要。
第一子模板中槽位的数据源可以包括以下三种中的任一种:1)数据库系统,2)模板中的枚举值,3)随机生成。
在一个实施例中,第一子模板包含第一槽位,可以根据第一槽位的填充规则中包含的数据类别,从数据库系统确定该数据类别下的数据以填充第一槽位。在一个具体的实施例中,数据类别为表名类、列名类、或具有预定数据类型的字段值类。需理解,其中预定数据类型可以是字符串类型等,示例性的,字符串类型的字段值可以是城市名称或产品名称等。
另一方面,在一个具体的实施例中,可以先基于数据库系统确定该数据类别下的多个原始数据,再从多个原始数据中选取一个原始数据,或者,一个原始数据的中文名称或中文别名填充至第一槽位。
以第一子模板为“%s%s%s%s的%s”为例,假定其中第1个槽位的填充规则中包含的数据类别为表名,此时,可以从数据库系统中提取某个表名的中文名称或者某个别名填充到第1个槽位中,例如,某个表名为accident_insurance_claims_v5,其中文名称为意外伤害保险,别名包括意外伤害险和意外险,此时,可以选取别名中的意外险填充到第1个槽位中,得到:
意外险%s%s%s的%s。
进一步,假定其中第2个槽位的填充规则中包含的数据类别为列名,此时,可以从数据库系统中提取某个列名或某个列名的别名之一,填充到第2个槽位,例如,某个列名为claim_amount的中文名称为理赔金额,其中别名包括金额、赔付金额等,此时,可以选取中文名称理赔金额填充到第2个槽位中,得到:
意外险理赔金额%s%s的%s。
又例如,假定其中最后1个槽位的填充规则中包含的数据类别也为列名,此时示例性的,对最后1个槽位进行填充可以得到:
意外险理赔金额%s%s的用户。
上述实施例中介绍从数据库系统中提取数据填充第一子模板中的槽位。
在另一个实施例中,所述第一子模板包含第二槽位,模板的配置信息中包括针对该第二槽位配置的多个候选槽值,相应,可以根据第二槽位的填充规则,从多个候选槽值中择一填充至第二槽位。
在一个具体的实施例中,第二槽位的填充规则指示填充针对预定数据类型的操作符,相应,可以从模板中配置的多个候选操作符中随机选取一个填充至第二槽位。仍然以第一子模板为“%s%s%s%s的%s”为例,假定其中第3个槽位指示填充针对数值类型的操作符,此时,可以从模板示例①中“//数值条件”部分的多个枚举值中随机选取一个枚举值,如“大于”,填充到第3个槽位中,结合前述示例中已经填充到第1个和第2个槽位的数据,得到:
意外险理赔金额大于%s的用户。
上述实施例中介绍从模板配置信息中的选取候选枚举值填充第一子模板中的槽位。
在又一个实施例中,第一子模板包括第三槽位,其填充规则指示随机生成某个数据类型(如数值类型或日期类型)下在预定取值范围内的数据,相应,可以按照填充规则进行随机数据的生成,并填充至第三槽位。示例性的,假定其中数据类型为数值类型,预定取值范围为0-1000,单位为万,此时,可以随机生成一个数值,如10万,填充至第三槽位,例如:
意外险理赔金额大于10万的用户。
以上主要介绍根据第一子模板中槽位的填充规则,从对应数据源获取数据进行填充。
根据另一方面的实施例,还可以为第一子模板配置除必选部分以外的可选部分,第一子模板中是否包括可选部分是随机的,可选部分中的槽位也具有随机性,如此可以使得最终构造出的训练数据集更加丰富多样,有效避免数据场景单一的问题。
具体地,可选部分的组成单元可以包括预定多个槽位,组成单元的个数可以为一个或多个。需理解,在对第一子模板进行填充前,可以先确定是否在第一子模板中添加可选部分,以及添加时可选部分的组成单元个数,和各个组成单元中的槽位数量。
以下介绍从组成单元的角度,介绍可选部分的槽位和填充方式。
在一个具体的实施例中,对于组成单元为4个槽位的情况,为与前述提及的槽位进行区分,分别称为第四槽位、第五槽位、第六槽位和第七槽位。
上述第四槽位的填充规则指示填充逻辑运算符的中文描述。相应,可以从模板的配置信息包括的针对不同逻辑运算符的多个中文描述,如“和”、“且”、“或”、“非”等逻辑条件中,随机选择一个填充到第四槽位。示例性的,可以参见前述模板示例①中包含的可选部分:(且%s%s%s)。
上述第五槽位的填充规则指示填充列名、或列名的中文名称、别名。相应,可以从数据库系统中提取对应的数据进行填充。示例性的,可以参见前述训练样本示例②中的槽值“驾龄”。
上述第六槽位的填充规则指示填充操作符或操作符的中文描述,其中操作符针对在前的第五槽位所对应的数据类型。相应,可以从模板的配置信息中提取针对该数据类型的候选操作符的中文描述,填充至第六槽位。示例性的,第五槽位对应的数据类型为数值类型,填充至第六槽位的操作符为前述训练样本示例②中的“不超过”。
上述第七槽位的填充规则指示填充操作数,其中操作数具有第五槽位所对应的数据类型,具体可以从数据库系统中提取,也可以随机生成。例如,从数据库中提取字符串类型的字段值“珠海”填充至第七槽位,或者,随机生成数值类型的2填充至第七槽位。
示例性的,对于第一子模板中包括可选部分,且其中包括1个组成单元,组成单元包括4个槽位的情况,对其填充后可以得到:且驾龄不超过两年,或者可以得到:且注册地址不在首都。
在另一个具体的实施例中,对于组成单元为3个槽位的情况,该3个槽位各自的填充规则依次指示填充逻辑运算符的中文描述、针对预定数据类型的操作符、针对所述预定数据类型的操作数。需理解,其中预定数据类型可以是第一子模板的必选部分中某个槽位对应的数据类型。
示例性的,对于第一子模板中的可选部分包括1个组成单元,且组成单元包括3个槽位的情况,对其填充后可以得到:且小于3000,或者可以得到:且不属于华东。
以上介绍第一子模板中各个槽位的填充规则,以及还可以随机包括的可选部分。通过对第一子模板进行填充,可以得到用于构建训练样本的中文查询语句,例如训练样本示例②中的“意外险理赔金额大于10万且驾龄不超过2年的用户”。
b2)第二子模板
第二子模板用于生成中文查询信息所查询数据表的元信息和对元信息的中文注解。示例性的,第二子模板为模板示例①中的:模式信息为%s。
在训练样本的生成过程中,可以基于填充至第一子模板的数据所指示的表名,从数据库系统中自动提取该表名所对应数据库表的元信息,以及该元信息的中文注解,填充至第二子模板。
示例性的,第一子模板中的一个或多个槽位填充了表名的中文名称或别名,由此,可以定位到对应的一个或多个表名,并据此提取表的元信息和对应的中文注解,填充到第二子模板。
通过对第二子模板进行填充,可以得到用于构建训练样本的数据库表的元信息和对应的中文注解,例如训练样本示例②中的:模式信息为[accident_insurance_claims_v5意外伤害险理赔表],(insurance_amount投保金额(记录单位为元)),(user_system_id用户标识(由系统分配)),(claim_amount理赔金额(记录单位为元)),(driving_experience驾龄(记录单位为年)),(user_occupation用户职业(画家,作家,音乐家,科学家))。
b3)基于填充至第一子模板的数据,自动填充第三子模板。
第三子模板用于生成中文查询语句所对应的SQL语句。示例性的,第三子模板为模板示例①中的:"SELECT%s FROM%s WHERE%s%s%s(AND%s%s%s)"。
可以理解,SQL语句实际上是将中文查询语句翻译成另一种语言,相应设计第三子模板的槽位与第一子模板的槽位之间具有预先建立的映射关系,映射关系包括槽值之间的转换规则等,例如,在第三子模板的关键字FROM后的槽位中填充第一子模板中填充数据所指示的表名。
由上,可以根据第一子模板的槽值确定填充到所述第三子模板中对应槽位的数据。
以上介绍通过对模板进行自动填充,可以快速构造出大量丰富可用的、多样性好的训练样本。需理解,对于模板中各个子模板的填充,可以是顺序进行,也可以是并行或交替进行,只需数据的流动符合逻辑即可;另外,模板可以有一个或多个,一般为多个。
以上介绍采用实施方式B,通过自动填充模板在短时间内生成大量训练样本。
在上述步骤S410中,通过采用实施方式A或B,均可以获取到多个训练样本。
接着,在步骤S420,利用多个训练样本对预训练的大模型进行微调,得到微调后的大模型,用于生成与用户输入的目标查询语句对应的目标SQL语句。可以理解,本步骤的大模型是指大语言模型。
具体地,针对各个训练样本,利用大模型处理其中的提示文本,可以生成对应的预测SQL语句,然后,根据预测回答和该训练样本中的SQL语句(训练样本中的SQL语句是正确的,用作监督学习中的标签)计算训练损失,然后利用训练损失调整大模型中的模型参数。需理解,微调时调整的可以是大模型中局部组件、或者说部分网络层的模型参数,具体的实施细节可以参见相关的已有技术,不作赘述。
在以上微调过程中,大模型可以从上述生成的多个训练样本中学习到用户问题中潜藏的中文语义与数据库表的表名等元信息、元信息的中文注解之间的关系,从而支持用户以纯中文形式提出SQL生成问题,并且能够回答出准确的SQL语句。
微调后的大模型用于生成与用户输入的目标查询语句对应的目标SQL语句。图5示出本说明书实施例披露的生成SQL语句的方法流程示意图,所述方法的执行主体可以为任何具有计算、处理能力的装置、服务器、平台或设备集群等。如图5所示,所述方法包括以下步骤:
首先,步骤S510,接收用户输入的目标查询语句。
可以理解,目标查询语句属于中文查询语句。示例性的,目标查询语句可以是图3中示出的“查询1号信用产品授信总额度大于3000的支付账号”。
接着,步骤S520,基于所述目标查询语句,以及其所查询数据表的元信息和对元信息的中文注解,构建具有预定格式的目标提示文本。
具体地,可以先根据目标查询语句确定其所查询的数据表。在一个实施例中,可以利用匹配规则实现,例如,先对目标查询语句进行分词处理,然后利用得到的分词与预先配置的表信息集合进行匹配,根据成功匹配的表信息定位到需查询的目标数据表。在另一个实施例中,也可以预先训练用于分类查询语句的机器学习模型,其输出为数据表的类别标识(如表名等),由此在本步骤中实现对需查询数据表的确定。
进一步,在定位到目标数据表后,可以根据目标数据表的表名从数据库系统中提取该表的元信息,以及对该元信息的中文注解,进而构造出具有预定格式的目标提示文本。需理解,对预定格式的介绍可以参见前述实施例中的相关描述,不再赘述。
之后,在步骤S530,利用采用微调后的大模型处理目标提示文本,生成与目标查询语句对应的目标SQL语句。
需说明,本步骤中使用的大模型是采用图4示意的方法微调后的大模型。示例性的,目标SQL语句可以是图3中示出的“SELECT pay_user_id FROM numberone_credit_v2WHERE total_amt>3000”。
由上,可以针对用户提问的目标中文查询语句,准确回答出对应的SQL语句。
图6示出本说明书实施例披露的对大模型进行微调的装置结构示意图。如图6所示,该装置600包括:
训练样本生成模块610,配置为生成训练样本,其包括具有预定格式的提示文本以及与所述提示文本对应的回答文本,其中所述提示文本中包括中文查询语句,该中文查询语句所查询的数据库表的元信息以及对元信息的中文注解;所述回答文本包括所述中文查询语句对应的SQL语句。大模型微调模块620,利用多个所述训练样本对预训练的大模型进行微调,得到微调后的大模型,用于生成与用户输入的目标查询语句对应的目标SQL语句。
在一个实施例中,所述元信息包括多个信息项,所述中文注解包括对各个信息项的注解项;所述预定格式指示提示文本中的内容按以下顺序排列:所述中文查询语句、多对信息项-注解项。
在一个具体的实施例中,所述提示文本还包括生成SQL语句任务的任务名称,所述预定格式还指示将所述任务名称排列在所述中文查询语句之前。
在一个更具体的实施例中,训练样本生成模块610具体配置为:获取所述中文查询语句和对应的SQL语句;基于所述SQL语句包含的表名,从数据库系统中提取该表名所对应数据库表的元信息,以及所述元信息的中文注解;利用所述中文查询语句、SQL语句,以及提取的所述元信息和中文注解,构建所述训练样本。
在一个实施例中,训练样本生成模块610具体配置为:基于数据库系统,对针对训练样本配置的模板进行自动填充,生成所述训练样本。
在一个具体的实施例中,所述模板包括针对所述中文查询语句配置的第一子模板、针对所述元信息和中文注解配置的第二子模板,以及针对所述SQL语句配置的第三子模板;训练样本生成模块610具体包括:第一子模板填充模块611,配置为根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位。其他子模板填充模块612,配置为基于填充至所述第一子模板的数据和所述数据库系统,自动填充所述第二子模板和第三子模板。
在一个例子中,所述第一子模板包含第一槽位;第一子模板填充模块611具体配置为:根据所述第一槽位的填充规则中包含的数据类别,基于所述数据库系统确定该数据类别下的数据以填充所述第一槽位。
在一个具体的例子中,第一子模板填充模块611进一步配置为:基于所述数据库系统确定该数据类别下的多个原始数据;从所述多个原始数据中择一填充至所述第一槽位,或者,将其中一个原始数据的别名填充至所述第一槽位。
示例性的,所述数据类别为表名类、列名类、或具有预定数据类型的字段值类。
在另一个例子中,所述第一子模板包含第二槽位,所述模板的配置信息中包括针对所述第二槽位配置的多个候选槽值;第一子模板填充模块611具体配置为:根据所述第二槽位的填充规则,从所述多个候选槽值中择一填充至所述第二槽位。
在又一个例子中,所述第一子模板包含第三槽位;第一子模板填充模块611具体配置为:根据所述第三槽位的填充规则中包含的数据类型,随机生成该数据类型下的数据,填充至所述第三槽位。
在还一个例子中,所述数据类型为数值类型或日期类型。
在再一个例子中,所述第一子模板包括必选部分,并随机包括可选部分;所述可选部分的组成单元包括第四槽位、第五槽位和第六槽位,各自的填充规则依次指示填充逻辑运算符的中文描述、针对预定数据类型的操作符、针对所述预定数据类型的操作数。
进一步,所述装置600还包括可选部分随机模块630,配置为随机确定是否在所述第一子模板中添加所述可选部分;在确定出添加的情况下,确定添加的可选部分中所述组成单元的数量,以及,在所述第三子模板中增加与该拼接的可选部分对应的模板内容。
在又一个例子中,其他子模板填充模块612具体配置为:基于填充至所述第一子模板的数据所指示的表名,从数据库系统中提取该表名所对应数据库表的元信息,以及该元信息的中文注解,填充至第二子模板;基于所述第一子模板和第三子模板之间的槽位映射关系,根据填充至所述第一子模板的各个槽位的数据确定填充到所述第三子模板中对应槽位的数据。
图7示出本说明书实施例披露的生成SQL语句的装置结构示意图。如图7所示,该装置700包括:
查询语句接收模块710,配置为接收用户输入的目标查询语句。提示文本构建模块720,配置为基于所述目标查询语句,以及其所查询数据表的元信息和对元信息的中文注解,构建具有预定格式的目标提示文本。SQL语句生成模块730,配置为利用基于图6示出的装置微调后的大模型处理所述目标提示文本,生成与所述目标查询语句对应的目标SQL语句。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图4或图5所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图4或图5所描述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (20)
1.一种对大模型进行微调的方法,包括:
生成训练样本,其包括具有预定格式的提示文本以及与所述提示文本对应的回答文本,其中所述提示文本中包括中文查询语句,该中文查询语句所查询的数据库表的元信息以及对元信息的中文注解;所述回答文本包括所述中文查询语句对应的SQL语句;
利用多个所述训练样本对预训练的大模型进行微调,得到微调后的大模型,用于生成与用户输入的目标查询语句对应的目标SQL语句。
2.根据权利要求1所述的方法,其中,所述元信息包括多个信息项,所述中文注解包括对各个信息项的注解项;所述预定格式指示提示文本中的内容按以下顺序排列:
所述中文查询语句、多对信息项-注解项。
3.根据权利要求2所述的方法,其中,所述提示文本还包括生成SQL语句任务的任务名称,所述预定格式还指示将所述任务名称排列在所述中文查询语句之前。
4.根据权利要求1所述的方法,其中,生成训练样本,包括:
获取所述中文查询语句和对应的SQL语句;
基于所述SQL语句包含的表名,从数据库系统中提取该表名所对应数据库表的元信息,以及所述元信息的中文注解;
利用所述中文查询语句、SQL语句,以及提取的所述元信息和中文注解,构建所述训练样本。
5.根据权利要求1所述的方法,其中,生成训练样本,包括:
基于数据库系统,对针对训练样本配置的模板进行自动填充,生成所述训练样本。
6.根据权利要求5所述的方法,其中,所述模板包括针对所述中文查询语句配置的第一子模板、针对所述元信息和中文注解配置的第二子模板,以及针对所述SQL语句配置的第三子模板;其中,对针对训练样本配置的模板进行自动填充,包括:
根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位;
基于填充至所述第一子模板的数据和所述数据库系统,自动填充所述第二子模板和第三子模板。
7.根据权利要求6所述的方法,其中,所述第一子模板包含第一槽位;其中,根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位,包括:
根据所述第一槽位的填充规则中包含的数据类别,基于所述数据库系统确定该数据类别下的数据以填充所述第一槽位。
8.根据权利要求7所述的方法,其中,基于所述数据库系统确定该数据类别下的数据以填充所述第一槽位,包括:
基于所述数据库系统确定该数据类别下的多个原始数据;
从所述多个原始数据中择一填充至所述第一槽位,或者,将其中一个原始数据的别名填充至所述第一槽位。
9.根据权利要求7或8所述的方法,所述数据类别为表名类、列名类、或具有预定数据类型的字段值类。
10.根据权利要求6所述的方法,其中,所述第一子模板包含第二槽位,所述模板的配置信息中包括针对所述第二槽位配置的多个候选槽值;其中,根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位,包括:
根据所述第二槽位的填充规则,从所述多个候选槽值中择一填充至所述第二槽位。
11.根据权利要求6所述的方法,其中,所述第一子模板包含第三槽位;其中,根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位,包括:
根据所述第三槽位的填充规则中包含的数据类型,随机生成该数据类型下的数据,填充至所述第三槽位。
12.根据权利要求11所述的方法,其中,所述数据类型为数值类型或日期类型。
13.根据权利要求6所述的方法,其中,所述第一子模板包括必选部分,并随机包括可选部分;所述可选部分的组成单元包括第四槽位、第五槽位和第六槽位,各自的填充规则依次指示填充逻辑运算符的中文描述、针对预定数据类型的操作符、针对所述预定数据类型的操作数。
14.根据权利要求13所述的方法,其中,在根据对所述第一子模板的各个槽位配置的填充规则,自动确定数据填充至对应槽位之前,所述方法还包括:
随机确定是否在所述第一子模板中添加所述可选部分;
在确定出添加的情况下,确定添加的可选部分中所述组成单元的数量,以及,在所述第三子模板中增加与该拼接的可选部分对应的模板内容。
15.根据权利要求6所述的方法,其中,基于填充至所述第一子模板的数据和所述数据库系统,自动填充所述第二子模板和第三子模板,包括:
基于填充至所述第一子模板的数据所指示的表名,从数据库系统中提取该表名所对应数据库表的元信息,以及该元信息的中文注解,填充至第二子模板;
基于所述第一子模板和第三子模板之间的槽位映射关系,根据填充至所述第一子模板的各个槽位的数据确定填充到所述第三子模板中对应槽位的数据。
16.一种生成SQL语句的方法,包括:
接收用户输入的目标查询语句;
基于所述目标查询语句,以及其所查询数据表的元信息和对元信息的中文注解,构建具有预定格式的目标提示文本;
利用采用权利要求1所述的方法微调后的大模型处理所述目标提示文本,生成与所述目标查询语句对应的目标SQL语句。
17.一种对大模型进行微调的装置,包括:
训练样本生成模块,配置为生成训练样本,其包括具有预定格式的提示文本以及与所述提示文本对应的回答文本,其中所述提示文本中包括中文查询语句,该中文查询语句所查询的数据库表的元信息以及对元信息的中文注解;所述回答文本包括所述中文查询语句对应的SQL语句;
大模型微调模块,配置为利用多个所述训练样本对预训练的大模型进行微调,得到微调后的大模型,用于生成与用户输入的目标查询语句对应的目标SQL语句。
18.一种生成SQL语句的装置,包括:
查询语句接收模块,配置为接收用户输入的目标查询语句;
提示文本构建模块,配置为基于所述目标查询语句,以及其所查询数据表的元信息和对元信息的中文注解,构建具有预定格式的目标提示文本;
SQL语句生成模块,配置为利用采用权利要求1所述的方法微调后的大模型处理所述目标提示文本,生成与所述目标查询语句对应的目标SQL语句。
19.一种计算机可读存储介质,其上存储有计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-16中任一项所述的方法。
20.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-16中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311235230.1A CN117235105A (zh) | 2023-09-22 | 2023-09-22 | 对大模型进行微调、生成sql语句的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311235230.1A CN117235105A (zh) | 2023-09-22 | 2023-09-22 | 对大模型进行微调、生成sql语句的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117235105A true CN117235105A (zh) | 2023-12-15 |
Family
ID=89098059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311235230.1A Pending CN117235105A (zh) | 2023-09-22 | 2023-09-22 | 对大模型进行微调、生成sql语句的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117235105A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117992791A (zh) * | 2024-04-02 | 2024-05-07 | 浙江口碑网络技术有限公司 | 语句生成模型的训练方法、语句生成方法、系统以及设备 |
-
2023
- 2023-09-22 CN CN202311235230.1A patent/CN117235105A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117992791A (zh) * | 2024-04-02 | 2024-05-07 | 浙江口碑网络技术有限公司 | 语句生成模型的训练方法、语句生成方法、系统以及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022111244A1 (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US8667004B2 (en) | Providing suggestions during formation of a search query | |
CA2775879C (en) | Systems and methods for processing data | |
Van Atteveldt et al. | Computational analysis of communication | |
CN113495900A (zh) | 基于自然语言的结构化查询语言语句获取方法及装置 | |
JP2009545077A (ja) | 利用可能なソースデータ及びローカライゼーションの再利用 | |
CN113254619A (zh) | 针对用户询问的自动答复方法、装置和电子设备 | |
CN109522397B (zh) | 信息处理方法及装置 | |
CN117235105A (zh) | 对大模型进行微调、生成sql语句的方法及装置 | |
CN108776677B (zh) | 平行语句库的创建方法、设备及计算机可读存储介质 | |
CN111506595B (zh) | 一种数据查询方法、系统及相关设备 | |
US20210390251A1 (en) | Automatic generation of form application | |
US11392757B2 (en) | Management of annotation jobs | |
CN111753535A (zh) | 一种专利申请文本的生成方法和装置 | |
CN113157888A (zh) | 支持多知识来源的询问答复方法、装置和电子设备 | |
Shi et al. | A framework for automatically generating quiz-type serious games based on linked data | |
CN117251455A (zh) | 一种基于大模型的智能报表生成方法及其系统 | |
CN116737879A (zh) | 知识库查询方法、装置、电子设备及存储介质 | |
CN113435213B (zh) | 针对用户问题和知识库返回答案的方法和装置 | |
Li et al. | EduNER: a Chinese named entity recognition dataset for education research | |
CN114186532A (zh) | 一种审单处理方法及装置 | |
CN111931480A (zh) | 文本主要内容的确定方法、装置、存储介质及计算机设备 | |
CN101593233A (zh) | 一种Word操作题的考评系统 | |
US20100169768A1 (en) | Spell Checker That Teaches Rules of Spelling | |
CN112800778B (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 |