System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于多智能体交互的自然语言智能查询方法和装置制造方法及图纸_技高网
当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于多智能体交互的自然语言智能查询方法和装置制造方法及图纸

技术编号:41322589 阅读:4 留言:0更新日期:2024-05-13 15:01
一种基于多智能体交互的自然语言智能查询方法和装置,基于大语言模型(LLM)的智能体负责在收到数据库相关结构描述以及自然语言描述的查询问题后输出对应的结构化数据查询语句(SQL),其方法包括:1)智能体验证者接收用户数据查询描述和数据库结构信息,构建提示词;2)验证者将提示词发送至智能体执行者,执行者根据提示词生成SQL并执行;3)执行者将包含SQL执行结果的二元组和SQL发送至验证者,验证者根据执行结果对SQL进行修正。本发明专利技术相比于原始LLM在自然语言到结构化查询语言的转换(NL‑to‑SQL)任务上有更优异的表现。

【技术实现步骤摘要】

本专利技术属于数据分析领域,涉及一种基于多智能体交互的自然语言智能查询方法和装置


技术介绍

0、技术背景

1、要基于数据库等数据存储组件进行数据提取、分析等往往需要用户手动编写对应的结构化查询语言(sql),随着数据量的增加以及数据结构越来越复杂,其对应的sql的复杂度也随之增加,对于没有相关知识背景的普通用户而言,其独立进行数据查询和处理的学习门槛也随之增加;同时,随着sql复杂度的增加,用户手动编写出现错误的概率也随之提高。

2、nl-to-sql并不是一个新兴的问题,往常的解决方案通常基于一些传统的自然语言处理相关的机器学习模型,随着大语言模型的兴起,出现了很多基于llm进行nl-to-sql的相关工作,gpt4、llama2等新兴的llm相比于bert、t5等传统深度学习模型天然地在模型规模、训练语料等方面存在优势,在nl-to-sql这类代码生成问题上能获得更好的效果。然而,将单一的llm作为nl-to-sql框架的底层实现会面临很多限制,包括无法复用历史查询结果、难以对错误生成结果进行纠正等。


技术实现思路

1、本专利技术要克服现有技术的上述缺点,提供一种基于多智能体交互的自然语言智能查询方法。

2、本专利技术帮助用户通过自然语言描述实现结构化的数据查询和分析,基于多智能体的交互方法实现自然语言到结构化查询语言的转换(nl-to-sql)。本专利技术主要针对此类应用场景:用户基于自然语言对数据查询需求进行描述,通过和智能体之间对话式的交互,最终得到符合查询需求的查询结果。整个查询过程中用户不需要具备相关数据处理专业知识,只需要通过自然语言以对话的形式提出需求并进行反馈,就能实现在过去需要手动编写复杂sql才能实现的数据查询和分析。

3、本专利技术为实现目的,采用以下技术方案:

4、本专利技术的第一个方面涉及一种基于多智能体交互的自然语言智能查询方法,根据用户自然语言描述的数据查询需求将其转换为结构化查询语言并返回执行结果,包括以下步骤:

5、1)智能体验证者接收用户数据查询描述和数据库结构信息,构建提示词,包括以下步骤:

6、11)验证者将用户数据查询描述和数据库结构信息发送至知识库模块,知识库基于关键词掩蔽算法对数据查询描述中数据库相关关键词进行掩蔽操作;

7、12)知识库模块基于语义相似度从向量数据库中找出和掩蔽后的用户数据查询描述相似的数个历史查询记录以及对应的结构化查询语言sql;

8、13)知识库模块根据当前用户名,从键值存储中取回用户的sql生成偏好;

9、14)知识库模块将历史查询记录及用户生成偏好发送至验证者,验证者结合历史查询记录、用户生成偏好、用户数据查询描述和数据库结构信息生成提示词。

10、15)验证者将提示词发送至知识库模块,知识库模块记录该提示词作为llm对话上下文;

11、2)验证者将提示词发送至智能体执行者,执行者根据提示词生成sql并执行:

12、21)执行者将sql发送至代码生成模块,代码生成模块调用llm相关接口,基于生成的提示词指导llm生成目标sql;

13、22)执行者将sql和数据库结构信息发送至执行器模块,执行器模块执行sql并获取执行结果,具体包括:

14、221)执行器模块根据数据库结构信息,选择对应的数据库,并与其建立连接;

15、222)执行器在数据上执行sql,将执行结果以二元组的形式进行保存,二元组中包含一个判断sql是否执行正确的布尔值,如果sql执行正确则二元组中另一个值为sql执行后返回的数据,否则为sql执行错误信息;执行器将该二元组返回至智能体执行者;

16、3)执行者将包含sql执行结果的二元组和sql发送至验证者,验证者根据执行结果对sql进行修正,包括:

17、31)执行者将二元组和sql发送至代码修正模块,代码修正模块生成sql修改建议,具体包括:

18、311)如果二元组中布尔值为假,则代码修正模块调用底层llm接口,指导llm针对二元组中sql执行错误信息生成对应的自然语言描述,并基于该描述生成sql修改建议;

19、312)如果二元组中布尔值为真,则代码修正模块调用底层llm相关接口,指导llm对sql的执行语义进行解释,并输出对应的自然语言描述,将该描述和用户数据查询描述作为llm的输入,指导llm判断两者语义是否一致,如果不一致则输出对应的sql修正建议,如果一致则输出对sql执行语义的自然语言描述;

20、32)代码修正模块将以上步骤中由llm生成的sql修正建议发送至验证者,验证者根据修正建议的具体内容决定将结果返回给用户或进行sql修正,具体包括:

21、321)如果修正建议为空,验证者将sql、sql执行结果及其sql的自然语言描述发送至用户,如果用户对生成结果满意,则智能查询流程终止。否则执行步骤322)

22、322)当修正建议不为空或者步骤321)中用户反馈不为空时,执行该步骤,验证者调用知识库模块接口获得llm历史对话上下文,将修正建议或用户反馈作为新的对话内容拼接在其后作为新一轮sql生成的提示词,然后跳转至步骤2),重复以上步骤直至达到最大迭代次数或查询流程在步骤321)终止。

23、在步骤(21)所述的代码生成模块中,llm的提示词由生成指示、生成示例、问题描述和数据库结构4部分组成,生成指示中除了固定格式的提示词,还包含和知识库交互获得的历史错误相关信息,用于帮助llm规避特定的错误生成;生成示例也由知识库负责提供,其作用在于利用llm的上下文学习能力,提升生成sql的质量;数据库结构以数据描述语言的形式进行记录,其目的在于完整包含主键、外键等结构信息,保证复杂sql的生成质量。

24、在步骤(1)所述的知识库模块中,设计了一种基于词元掩蔽的历史查询匹配算法;所述基于词元掩蔽的历史查询匹配算法首先以多个长度的词元序列为单位,根据字符串匹配算法获得问题描述中和数据库表、列名匹配的词元序列,对其作掩蔽操作后,通过语言模型对其进行向量嵌入操作,之后和向量数据库中的历史数据基于语义相似度和knn算法选出匹配度最高的数个历史描述作为生成样例。

25、在步骤(3)所述的代码修正模块中,通过设计特定的提示词,指导llm将代码生成模块中生成的sql转换为自然语言形式的描述;并基于llm的语义理解能力指导其通过对比原始问题描述,并结合执行器的sql执行结果得到修改意见,用于指导代码生成模块的下一轮sql生成。

26、4个模块组合实现智能体,验证者和执行者。智能体之间通过交互实现智能查询流程,用户通过指定接口传入自然语言描述的数据查询需求,并指定特定数据库,最终直接得到数据查询需求对应sql的执行结果。

27、本专利技术的第二个方面涉及一种基于多智能体交互的自然语言智能查询系统,包括以下模块:

<本文档来自技高网...

【技术保护点】

1.一种基于多智能体交互的自然语言智能查询方法,根据用户自然语言描述的数据查询需求将其转换为结构化查询语言并返回执行结果,包括以下步骤:

2.根据权利要求1所述的一种基于多智能体交互的自然语言智能查询方法,其特征在于:在步骤(21)所述的代码生成模块中,LLM的提示词由生成指示、生成示例、问题描述和数据库结构4部分组成,生成指示中除了固定格式的提示词,还包含和知识库交互获得的历史错误相关信息,用于帮助LLM规避特定的错误生成;生成示例也由知识库负责提供,其作用在于利用LLM的上下文学习能力,提升生成SQL的质量;数据库结构以数据描述语言的形式进行记录,其目的在于完整包含主键、外键等结构信息,保证复杂SQL的生成质量。

3.根据权利要求1所述的一种基于多智能体交互的自然语言智能查询方法,其特征在于:在步骤(1)所述的知识库模块中,设计了一种基于词元掩蔽的历史查询匹配算法;所述基于词元掩蔽的历史查询匹配算法首先以多个长度的词元序列为单位,根据字符串匹配算法获得问题描述中和数据库表、列名匹配的词元序列,对其作掩蔽操作后,通过语言模型对其进行向量嵌入操作,之后和向量数据库中的历史数据基于语义相似度和KNN算法选出匹配度最高的数个历史描述作为生成样例。

4.根据权利要求1所述的一种基于多智能体交互的自然语言智能查询方法,其特征在于:在步骤(3)所述的代码修正模块中,通过设计特定的提示词,指导LLM将代码生成模块中生成的SQL转换为自然语言形式的描述;并基于LLM的语义理解能力指导其通过对比原始问题描述,并结合执行器的SQL执行结果得到修改意见,用于指导代码生成模块的下一轮SQL生成。

5.根据权利要求1所述的一种基于多智能体交互的自然语言智能查询方法,其特征在于:4个模块组合实现智能体,验证者和执行者。智能体之间通过交互实现智能查询流程,用户通过指定接口传入自然语言描述的数据查询需求,并指定特定数据库,最终直接得到数据查询需求对应SQL的执行结果。

6.一种基于多智能体交互的自然语言智能查询装置,其特征在于:包括:

7.一种计算机可读介质,其上存储有计算机程序,其特征在于:该程序被处理器执行时实现如权利要求1-5中任一所述的方法。

...

【技术特征摘要】

1.一种基于多智能体交互的自然语言智能查询方法,根据用户自然语言描述的数据查询需求将其转换为结构化查询语言并返回执行结果,包括以下步骤:

2.根据权利要求1所述的一种基于多智能体交互的自然语言智能查询方法,其特征在于:在步骤(21)所述的代码生成模块中,llm的提示词由生成指示、生成示例、问题描述和数据库结构4部分组成,生成指示中除了固定格式的提示词,还包含和知识库交互获得的历史错误相关信息,用于帮助llm规避特定的错误生成;生成示例也由知识库负责提供,其作用在于利用llm的上下文学习能力,提升生成sql的质量;数据库结构以数据描述语言的形式进行记录,其目的在于完整包含主键、外键等结构信息,保证复杂sql的生成质量。

3.根据权利要求1所述的一种基于多智能体交互的自然语言智能查询方法,其特征在于:在步骤(1)所述的知识库模块中,设计了一种基于词元掩蔽的历史查询匹配算法;所述基于词元掩蔽的历史查询匹配算法首先以多个长度的词元序列为单位,根据字符串匹配算法获得问题描述中和数据库表、列名匹配的词元序列,对其作掩蔽操作后,通过语言模...

【专利技术属性】
技术研发人员:应晶徐伯墉金苍宏
申请(专利权)人:浙江大学
类型:发明
国别省市:

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

1