System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及自然语言处理,具体指一种面向领域大语言模型的text2sql语义解析方法。
技术介绍
1、随着自然语言处理(natural language processing,nlp)和人工智能技术的快速发展,尤其是2023年开始大语言模型的广泛使用,如何运用自然语言访问对应数据库,生成对应的sql脚本并输出相应结果的需求日益迫切,该需求的目的是希望通过自然语言与数据库进行交互,以简化数据库操作的过程,使更多的人能够轻松地与数据库进行沟通和操作。在数据库领域中,text2sql语义解析是一项关键技术,其用于将自然语言查询转化为结构化查询语言(sql)查询,以便对数据库进行操作和检索。
2、目前,在生成sql语句的方法中,一部分是基于规则和模板,但是这些方法仅适用于特定数据库和查询类型,并且对于复杂查询缺乏支持,无法覆盖所有情况。这些方法还需要大量的人工工作来创建和维护规则。另一部分方法基于机器学习和深度学习技术,如seq2seq模型框架。然而,这些方法需要大量标注的训练数据,并且容易受到数据噪声和语义歧义的影响,例如用户在提问的过程中可能会出现拼写错误或意图模糊等问题,这些错误会导致模型生成错误的sql语句。
技术实现思路
1、本专利技术针对现有技术的不足,提出一种面向领域大语言模型的text2sql语义解析方法,基于prompt优化自然语言输入,面向领域大模型预训练微调并挂载领域知识库进行数据增强生成的方法,这样做可以实现复杂的查询需求,无需依赖繁琐的人工工作,同时
2、为了解决上述技术问题,本专利技术的技术方案为:
3、一种面向领域大语言模型的text2sql语义解析方法,包括如下步骤:
4、s1、连接领域数据库并存储数据库模式信息;
5、s2、基于领域数据库和领域背景知识构建知识库并挂载到大模型中;
6、s3、基于sql-to-text模型生成text-sql数据集;
7、s4、使用text-sql数据集对模型进行微调、评估和优化,构建高性能的text2sql模型;
8、s5、输入自然语言问题并基于prompt和领域知识库对其优化;
9、s6、通过text2sql模型解析语义并基于需求设计prompt推理结果;
10、作为优选,所述步骤s1中,数据库模式信息存储方法为:将数据按照列的方式进行组织和存储的列式存储方法,存储时,定义数据库模式s={t1,t2,...,ti,...,tn,e},其中ti为第i个表,e为各表之间的主外键关系。数据表ti中包含列ci={ci1,...,cij,...},其中ci1表示第i个数据表中的第1列。
11、作为优选,所述知识库构建方法为:
12、s2-1、确定应用领域,搜集该领域的通用背景知识形成文档(text);
13、s2-2、通过自然语言处理技术提取领域数据库中的表名(table)、列名(column)以及各表中的部分数据(data)并进行预处理和标注,再使用nlp模型基于s2-1中的背景知识对表名、列名以及各表中的部分数据进行语义解释和备注,并存入字典:
14、remarki={″表名″:tablei,″列名″:columnij,″数据″:dataij}
15、s2-3、将s2-1中的领域背景知识文档和s2-2中的备注字典通过预训练词嵌入模型(word2vec)转化为词向量。对于知识文档和数据库信息中的每个词,假设输入表示为词向量v,中心词wc的词向量为上下文词wo的词向量输出层使用softmax函数进行概率归一化。目标函数和softmax函数公式分别表示为:
16、l=-logp(wo|wc)
17、
18、其中vb表示词汇表中所有词,vw表示词w的词向量;
19、s2-4、将s2-3中的词向量存储在向量数据库中,建立领域知识库结构,包括定义词条的属性、关系和类别,将存储在向量数据库中的词向量关联到知识库中的相应词条,补充相关的语义信息;再对知识库进行扩展,添加实体关系和属性信息,使其能够更全面地反映领域知识,从而构建领域知识库。
20、作为优选,所述步骤s3中具体方法为:
21、s3-1、设计prompt指令为“给定一个sql语句生成多个相应的问题描述或解释”。prompt还要包含上下文信息,如sql语句涉及到的表、字段、数值等说明以及数据库模式信息,从而使用该prompt构建一个具有sql-to-text解释功能的模型,即sql-to-text模型;
22、s3-2、取领域数据库应用程序、数据库审计日志、测试用例中正确生成的sql语句,使用s3-1中的sql-to-text模型将每个sql语句转换生成多个相似的sql解释或问题。
23、s3-3、定义text-sql数据集d={d1,d2,...,di,...,dn},其中包括一个自然语言语句q和一个对应q的正确可执行的sql语句。计算s3-2中生成的多个sql解释与prompt中上下文信息的相似性得分,从中选择相似度最高的自然语言问题作为数据集中的q并将相似度最高的q和对应的sql语句组成text-sql数据对di={qi,sqli}存入数据集d中;
24、作为优选,所述步骤s3-3中,相似性得分的计算方法为:
25、余弦相似度测量两个向量之间的夹角,计算公式为:a,b都是多维向量。
26、作为优选,所述步骤s4中具体方法为:
27、s4-1、将text-sql数据集按照一定比例划分为训练集和测试集。常见的划分比例是ts=0.8*ts_train+0.2*ts_test,划分时保证训练集和测试集的数据分布和特征分布尽可能一致。
28、s4-2、使用划分好的训练集对模型进行微调,调整模型参数使其适应特定的text2sql任务。定义损失函数(均方误差)来表示模型的预测结果与真实值的差异程度,其中第i个样本的真实值为yi,预测值为样本数量为n,公式表示为:
29、
30、s4-3、使用划分好的测试集对微调后的模型进行指标计算和评估。定义真正例(tp)为text2sql模型生成的sql查询能够与真实sql查询匹配的数量;假负例(fn)为text2sql模型未能正确生成与真实sql查询匹配的查询数量;假正例(fp)为text2sql模型生成的sql查询与真实sql查询不匹配的数量。常见的评估指标包括召回率、准确率和f1分数,公式表示为:
31、
32、
33、
34、s4-4、根据评估结果,使用优化算法(梯度下降)来最小化损失函数,找到最佳的模型参数,以达到更好的性能和泛化能力。定义模型的参数为θ,学习率为α,损失函数为mse,公式表本文档来自技高网...
【技术保护点】
1.一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤S1中,数据库模式信息存储方法为:将数据按照列的方式进行组织和存储的列式存储方法,存储时,定义数据库模式S={T1,T2,...,Ti,...,Tn,E},其中Ti为第i个表,E为各表之间的主外键关系,数据表Ti中包含列Ci={Ci1,...,Cij,...},其中Ci1表示第i个数据表中的第1列。
3.根据权利要求1所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤2中,构建领域知识库的方法为:
4.根据权利要求3所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤2.3中,通过预训练词嵌入模型转化为词向量的方法为:
5.根据权利要求1所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤3的具体方法为:
6.根据权利要求5所述的一种面向领域大语言模型的T
7.根据权利要求1所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述Text-SQL数据集按TS=0.8*TS_train+0.2*TS_test进行划分。
8.根据权利要求1所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤4中,模型的微调方法为:定义均方误差损失函数来表示模型的预测结果与真实值的差异程度。
9.根据权利要求1所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤4中,微调后的模型的评估方法为:
10.根据权利要求9所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤4中,Text2Sql模型评估的评价指标包括召回率、准确率和F1分数。
11.根据权利要求9所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤4中,根据评估结果应用梯度下降来最小化损失函数。
12.根据权利要求9所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤S5的具体方法为:
13.根据权利要求12所述的一种面向领域大语言模型的Text2SQL语义解析方法,其特征在于,所述步骤6的具体方法为:
...【技术特征摘要】
1.一种面向领域大语言模型的text2sql语义解析方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种面向领域大语言模型的text2sql语义解析方法,其特征在于,所述步骤s1中,数据库模式信息存储方法为:将数据按照列的方式进行组织和存储的列式存储方法,存储时,定义数据库模式s={t1,t2,...,ti,...,tn,e},其中ti为第i个表,e为各表之间的主外键关系,数据表ti中包含列ci={ci1,...,cij,...},其中ci1表示第i个数据表中的第1列。
3.根据权利要求1所述的一种面向领域大语言模型的text2sql语义解析方法,其特征在于,所述步骤2中,构建领域知识库的方法为:
4.根据权利要求3所述的一种面向领域大语言模型的text2sql语义解析方法,其特征在于,所述步骤2.3中,通过预训练词嵌入模型转化为词向量的方法为:
5.根据权利要求1所述的一种面向领域大语言模型的text2sql语义解析方法,其特征在于,所述步骤3的具体方法为:
6.根据权利要求5所述的一种面向领域大语言模型的text2sql语义解析方法,其特征在于,所述步骤s3-3中,相似性得分的计算方法为:应用余弦相似度测量两个向量之间的夹角。
7...
【专利技术属性】
技术研发人员:俞东进,钟永军,王思轩,曲冠桦,徐放,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。