一种改进的基于生成式大语言模型的NL2SQL方法技术

技术编号:38992983 阅读:14 留言:0更新日期:2023-10-07 10:23
本发明专利技术适用于自然语言处理技术领域,提供一种改进的基于生成式大语言模型的NL2SQL方法,包括步骤S1、预处理数据库的表信息;步骤S2、自然语言问句预处理;步骤S3、目标表匹配;步骤S4、大语言模型结果输出;步骤S5、提取SQL语句并输出。本发明专利技术使用生成式大语言模型,利用思维链方式构建prompt语句去提升匹配精度,不需要端到端地重新训练,在数据库表结构频繁更新的实际生产环境中适用性更好。另外,本发明专利技术采取前置计算表、列加权得分的方式,解决实际生产环境中多表重复列干扰环境下的,数据库查询语义识别问题,该方法能够帮助大语言模型更好地理解和匹配自然语言问句中相关的表、列信息,提升最终结果的准确度。提升最终结果的准确度。提升最终结果的准确度。

【技术实现步骤摘要】
一种改进的基于生成式大语言模型的NL2SQL方法


[0001]本专利技术属于自然语言处理
,尤其涉及一种改进的基于生成式大语言模型的NL2SQL方法。

技术介绍

[0002]自然语言转SQL(Natural Language to SQL,NL2SQL)是一种将用户输入的自然语言描述转换为结构化SQL检索语句的技术。这种技术的产生旨在降低数据库检索使用门槛,使得不具备数据库专业知识储备的非技术人员能够通过输入自然语言文本,即可快捷地获得数据信息。例如用户输入“查询需要重点关注的流动人口数量”,比如通过NL2SQL技术可将其转换为可执行的SQL查询语句:“SELECT COUNT(*) FROM p_floating WHERE IS_FOCUS = 1;”,进而获得数据库中的数据。
[0003]随着人工智能技术发展深入,逐渐形成了基于深度学习的NL2SQL方法,解决了传统的基于规则匹配的方法的局限性与不灵活性。然而深度学习模型需要耗费大量人力投入以构建训练数据集,其实施成本较高,且面对表结构信息频繁更新的生产环境,往往需要重新训练才能保持较高的准确率,不便于应用推广。以此产生了一系列基于预训练语言模型的方法,而由于自然语言与SQL语句之间存在着语义代沟,典型的预训练语言模型(如BERT及衍生模型,只编码,不解码)无法充分捕捉自然语言和SQL语句之间的复杂语义和结构对应关系,尤其是在跨域或多轮交互的情况下,需要结合其他的模块或技术,如抽象语法树、关系注意力、文本

表格数据连接等来提高SQL生成的准确性和鲁棒性。目前SoTA的改进方法包括中间语法树的方法、联合语义解析和语义成分匹配的方法、引入SQL专业知识库作为外部词典的方法等。 而这些方法的SQL匹配步骤较为复杂,鲁棒性不高。
[0004]比如,专利CN115408506A公开了一种联合语义解析和语义成分匹配的NL2SQL的方法,此专利使用预训练的BERT模型编码用户输入的问句后,采取多轮自然语言转SQL方法,提升了准确率,但多轮转换导致时间复杂度高。且此方法仅对聚集函数类型、操作符类型及列字段做了匹配预测,未综合分析语义信息以识别目标表,因而难以处理实际生产中存在的易混淆的或重复的列。例如存在数据库模式一“{重点青少年信息表:{ID、姓名、监护人姓名
………
}}”、模式二“{留守人口信息:{ID、姓名、监护人姓名}}”,对于自然语言问句“查询的ID为1的留守人员的监护人姓名”,则无法区分目标表是模式一还是模式二。
[0005]又如,专利CN115658729A公开了一种基于预训练模型的自然语言转SQL语句的方法,此专利使用的预训练模型为oBERTa模型,具体而言编码层使用RoBERTa

large网络结构,解码层采用双向LSTM结构。这种方法对于语义不准确的自然语言问句匹配准确率较低。且与CN115408506A中的方法类似,仅对列采取了匹配处理,未综合分析语义信息以识别目标表,因而难以处理实际生产中存在的易混淆的或重复的列。
[0006]近年来,ChatGPT、ChatGLM等生成式大语言模型的兴起,为NL2SQL技术提供了新的解决思路:在不重新训练模型的前提下,通过Prompt engineering让大语言模型对特定的NL2SQL任务输出符合预期的结果。由于生成式大语言模型具有强大的语义理解能力和
prompt机制,使用生成式大语言模型处理NL2SQL任务时,仅需输入表、列信息、自然语言问句及简单的SQL示例,即可得到可执行的SQL语句,通过CoT(Chain of Thoughts,思维链),CoT

SC(Self

consistency withChain of Thoughts,自洽思维链),ToT(Tree of Thoughts,思维树)等prompt技术,来提升模型输出的表现,所以prompt语句的质量至关重要。
[0007]通过生成式大语言模型实现NL2SQL,首先需要根据用户输入的自然语言,从待选的数据库中正确匹配目标表,作为prompt语句的一部分,发送给大语言模型,prompt内容的准确性决定了模型的表现。由于实际生产的数据库仓库中存在大量易混淆和重复的列,且各表的列数不等,其元信息长度不均衡,直接计算用户输入与表元信息间语义相似度的匹配方法,准确度难以满足生产级要求。

技术实现思路

[0008]鉴于上述问题,本专利技术的目的在于提供一种基于生成式大语言模型的NL2SQL方法,旨在解决现有方法匹配准确度不高的技术问题。
[0009]本专利技术采用如下技术方案:所述改进的基于生成式大语言模型的NL2SQL方法,其特征在于,所述方法包括下述步骤:步骤S1、预处理数据库的表信息得到注释的文本特征向量集合,并计算表的各列权重;步骤S2、对输入的自然语言问句进行分词,然后通过文本嵌入操作得到分词的文本特征向量集合;步骤S3、根据注释和分词的文本特征向量集合以及列权重,计算加权余弦相似度,最终得到自然语言问句的匹配目标表;步骤S4、将匹配目标表的表列信息拼接prompt指令,输入生成式大语言模型,得到大语言模型结果输出;步骤S5、从大语言模型结果输出提取SQL语句并输出。
[0010]进一步的,所述步骤S1具体过程如下:S11、获取数据库中所有的表注释和列注释,对列注释做去重处理,将表注释、列注释做文本嵌入操作并归一化处理,获得表注释、列注释的文本特征向量集合U;S12、计算数据库各列权重,其中列col
x
的权重记为score(col
x
),,num(table)为数据库中表总数,num(col
x
)为含有列col
x
的表的数目。
[0011]进一步的,所述步骤S2具体过程如下:S21、对输入的自然语言问句L去停用词后进行分词,得到分词集合C1;S22、获取扩展分词集合C2,其中扩展分词集合C2中的词语是由分词集合C1中各词语相邻的p个词语所组成的短语;S23、将分词集合C1和扩展分词集合C2进行合并,得到自然语言问句L的最终分词结果集合C;
S24、通过文本嵌入操作得到分词结果集合C的文本特征向量集合V。
[0012]进一步的,所述步骤S3具体过程如下:S31、遍历文本特征向量集合V中的每个向量,针对当前获取的向量V
i
,在文本特征向量集合U中查询与向量V
i
余弦相似度最大的k个向量,并由大到小排列组成的集合K,集合K中第j个向量记为K
j
;S32、对于向量V
i
,遍历集合K,针对当前遍历的向量K
j
,如果K
j
对应数据库中的某一表,则表权重为预设的表权重常数T,如果K
j
对应数据集库中的某一列col
x
,则列权重为score(col
x
),计算向量K
...

【技术保护点】

【技术特征摘要】
1.一种改进的基于生成式大语言模型的NL2SQL方法,其特征在于,所述方法包括下述步骤:步骤S1、预处理数据库的表信息得到注释的文本特征向量集合,并计算表的各列权重;步骤S2、对输入的自然语言问句进行分词,然后通过文本嵌入操作得到分词的文本特征向量集合;步骤S3、根据注释和分词的文本特征向量集合以及列权重,计算加权余弦相似度,最终得到自然语言问句的匹配目标表;步骤S4、将匹配目标表的表列信息拼接prompt指令,输入生成式大语言模型,得到大语言模型结果输出;步骤S5、从大语言模型结果输出提取SQL语句并输出。2.如权利要求1所述改进的基于生成式大语言模型的NL2SQL方法,其特征在于,所述步骤S1具体过程如下:S11、获取数据库中所有的表注释和列注释,对列注释做去重处理,将表注释、列注释做文本嵌入操作并归一化处理,获得表注释、列注释的文本特征向量集合U;S12、计算数据库各列权重,其中列col
x
的权重记为score(col
x
),,num(table)为数据库中表总数,num(col
x
)为含有列col
x
的表的数目。3.如权利要求2所述改进的基于生成式大语言模型的NL2SQL方法,其特征在于,所述步骤S2具体过程如下:S21、对输入的自然语言问句L去停用词后进行分词,得到分词集合C1;S22、获取扩展分词集合C2,其中扩展分词集合C2中的词语是由分词集合C1中各词语相邻的p个词语所组成的短语;S23、将分词集合C1和扩展分词集合C2进行合并,得到自然语言问句L的最终分词结果集合C;S24、通过文本嵌入操作得到分词结果集合C的文本特征向量集合V。4.如权利要求3所述改进的基于生成式大语言模型的NL2SQL方法,其特征在于,所述步骤S3具体过程如下:S31、遍历文本特征向量集合V中的每个向量,针对当前获取的向量V
i
,在文本特征向量集合U中查...

【专利技术属性】
技术研发人员:段春先刘梦军李颖陈胜鹏许继伟雷振刘高李小超王敬佩付卓韩小乐夏帷王锋
申请(专利权)人:吉奥时空信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1