一种自然语言转SQL语句的方法和系统与流程

专利2026-05-08  4

本申请涉及自然语言处理,特别是涉及一种自然语言转sql语句的方法和系统。
背景技术
::1、nl2sql(natural language to sql)技术是一种将自然语言转换为sql查询语句的技术。这种技术有很多应用场景,如数据库查询、数据分析和业务智能等场景,尤其是在金融领域也有大量的应用场景。nl2sql技术虽然在提高数据库查询的便捷性方面具有巨大潜力,但在实际开发和应用中仍面临一些挑战和难点,如对语言理解的准确性、对复杂sql逻辑关系理解错误、对多样性sql支撑力度不够。2、目前针对相关技术中如何进行nl2sql的高质量转换的问题,尚未提出有效的解决方案。技术实现思路1、本申请实施例提供了一种自然语言转sql语句的方法和系统,以至少解决相关技术中如何进行nl2sql的高质量转换的问题。2、第一方面,本申请实施例提供了一种自然语言转sql语句的方法,所述方法包括:3、获取用户问句并进行实体识别,得到所述用户问句的命名实体,其中,所述用户问句为涉及预设领域的自然语言问句;4、从所述预设领域的业务库表中确定出所述用户问句的查询库表;5、在sql中间语义表示的预设json结构的基础上,基于所述用户问句的命名实体和查询库表,通过生成式大语言模型将所述用户问句转换成sql中间语义表示;6、基于所述sql中间语义表示和所述用户问句,通过所述生成式大语言模型将所述sql中间语义表示转换成可执行sql语句。7、在其中一些实施例中,从所述预设领域的业务库表中确定出所述用户问句的查询库表包括:8、通过faiss向量化检索工具,从所述预设领域的业务库表中确定出所述用户问句的查询库表。9、在其中一些实施例中,通过faiss向量化检索工具,从所述预设领域的业务库表中确定出所述用户问句的查询库表包括:10、获取预设领域的业务库表,并基于json字符串对所述业务库表包含的信息进行转化,得到库表json描述文档;11、对所述库表json描述文档和所述用户问句进行向量化,得到faiss向量;12、通过faiss向量化检索工具计算对应的faiss向量之间的相似度,从所述预设领域的业务库表中确定出所述用户问句的查询库表。13、在其中一些实施例中,在通过所述生成式大语言模型将所述用户问句转换成sql中间语义表示之前,所述方法包括:14、定义sql中间语义表示的预设json结构,其中,所述sql中间语义表示包括基础sql中间语义表示和复杂sql中间语义表示。15、在其中一些实施例中,定义sql中间语义表示的预设json结构包括:16、定义基础sql中间语义表示的预设json结构,其中,所述预设json结构包含tables、fields、conditions和limits,所述tables表示用户问句涉及到的待查询库表名称,所述fields表示用户问句涉及到的待查询字段,所述conditions表示用户问句涉及到的筛选条件,所述limits表示用户问句的查询结果限定;17、定义复杂sql中间语义表示的预设json结构,其中,所述预设json结构包含sqls和rels,所述sqls表示用户问句涉及到的全部的基础sql中间语义表示,所述rels表示sqls中各sql中间语义表示之间的关系。18、在其中一些实施例中,在sql中间语义表示的预设json结构的基础上,基于所述用户问句的命名实体和查询库表,通过生成式大语言模型将所述用户问句转换成sql中间语义表示包括:19、基于sql中间语义表示的预设json结构、所述用户问句的命名实体和查询库表,构建第一提示词模板;20、将所述第一提示词模板输入训练好的生成式大语言模型,通过所述生成式大语言模型将所述用户问句转换成sql中间语义表示。21、在其中一些实施例中,基于所述sql中间语义表示和所述用户问句,通过所述生成式大语言模型将所述sql中间语义表示转换成可执行sql语句包括:22、基于所述sql中间语义表示和所述用户问句,构建第二提示词模板;23、将所述第二提示词模板输入训练好的生成式大语言模型,通过所述生成式大语言模型将所述sql中间语义表示转换成可执行sql语句。24、在其中一些实施例中,在基于所述sql中间语义表示和所述用户问句,通过所述生成式大语言模型将所述sql中间语义表示转换成可执行sql语句之后,所述方法包括:25、通过自动程序生成器autogen创建第一代理角色和第二代理角色,其中,所述第一代理角色用于对所述可执行sql语句进行错误检查及错误信息输出,所述第二代理角色用于对所述可执行sql语句进行错误改正。26、在其中一些实施例中,所述预设领域为金融期货领域。27、第二方面,本申请实施例提供了一种自然语言转sql语句的系统,所述系统用于执行上述第一方面任一项所述的方法,所述系统包括获取模块、检索模块和转换模块;28、所述获取模块,用于获取用户问句并进行实体识别,得到所述用户问句的命名实体,其中,所述用户问句为涉及预设领域的自然语言问句;29、所述检索模块,用于从所述预设领域的业务库表中确定出所述用户问句的查询库表;30、所述转换模块,用于在sql中间语义表示的预设json结构的基础上,基于所述用户问句的命名实体和查询库表,通过生成式大语言模型将所述用户问句转换成sql中间语义表示;31、所述转换模块,用于根据所述sql中间语义表示和所述用户问句,通过所述生成式大语言模型将所述sql中间语义表示转换成可执行sql语句。32、相比于相关技术,本申请实施例提供的一种自然语言转sql语句的方法和系统,其中,该方法通过获取用户问句并进行实体识别,得到用户问句的命名实体,其中,用户问句为涉及预设领域的自然语言问句;从预设领域的业务库表中确定出用户问句的查询库表;在sql中间语义表示的预设json结构的基础上,基于用户问句的命名实体和查询库表,通过生成式大语言模型将用户问句转换成sql中间语义表示;基于sql中间语义表示和用户问句,通过生成式大语言模型将sql中间语义表示转换成可执行sql语句,实现了两阶段的sql语句生成,先是在预设json结构的基础上将用户问句转为sql中间语义表示,再转换成可执行sql语句,能够对用户问句中的信息进行有效地结构化处理,从而最终提高nl2sql的准确性和业务适应性,解决了如何进行nl2sql的高质量转换的问题。技术特征:1.一种自然语言转sql语句的方法,其特征在于,所述方法包括:2.根据权利要求1所述的方法,其特征在于,从所述预设领域的业务库表中确定出所述用户问句的查询库表包括:3.根据权利要求2所述的方法,其特征在于,通过faiss向量化检索工具,从所述预设领域的业务库表中确定出所述用户问句的查询库表包括:4.根据权利要求1所述的方法,其特征在于,在通过所述生成式大语言模型将所述用户问句转换成sql中间语义表示之前,所述方法包括:5.根据权利要求4所述的方法,其特征在于,定义sql中间语义表示的预设json结构包括:6.根据权利要求1所述的方法,其特征在于,在sql中间语义表示的预设json结构的基础上,基于所述用户问句的命名实体和查询库表,通过生成式大语言模型将所述用户问句转换成sql中间语义表示包括:7.根据权利要求1所述的方法,其特征在于,基于所述sql中间语义表示和所述用户问句,通过所述生成式大语言模型将所述sql中间语义表示转换成可执行sql语句包括:8.根据权利要求1所述的方法,其特征在于,在基于所述sql中间语义表示和所述用户问句,通过所述生成式大语言模型将所述sql中间语义表示转换成可执行sql语句之后,所述方法包括:9.根据权利要求1-8任一项所述的方法,其特征在于,所述预设领域为金融期货领域。10.一种自然语言转sql语句的系统,其特征在于,所述系统用于执行上述权利要求1至9任一项所述的方法,所述系统包括获取模块、检索模块和转换模块;技术总结本申请涉及一种自然语言转SQL语句的方法和系统,其中,该方法包括:获取预设领域的用户问句并进行实体识别,得到命名实体,从预设领域的业务库表中确定出用户问句的查询库表;在SQL中间语义表示的预设JSON结构的基础上,基于命名实体和查询库表,通过生成式大语言模型将用户问句转换成SQL中间语义表示;再通过生成式大语言模型将SQL中间语义表示转换成可执行SQL语句。通过本申请,实现了两阶段的SQL语句生成,先是在预设JSON结构的基础上将用户问句转为SQL中间语义,再转换成SQL语句,能够对用户问句中的信息进行有效地结构化处理,提高NL2SQL的准确性,解决了如何进行NL2SQL的高质量转换的问题。技术研发人员:吴福文,康维鹏,唐逐时,杨胜利,陈豪,伍文豪,张强受保护的技术使用者:浙商期货有限公司技术研发日:技术公布日:2024/11/11
转载请注明原文地址: https://tieba.8miu.com/read-21056.html

最新回复(0)