本技术涉及检索问答,尤其涉及代码检索问答方法、装置、设备及存储介质。
背景技术:
1、自从大语言模型问世以来,将大模型的总结归纳、语言生成能力与检索知识库的精确检索特性相结合的大模型检索问答系统在金融、医疗、能源等多个垂域有了越来越多的应用。在企业中,业务人员和系统开发人员会积累下海量的、不同种代码语言编写的业务代码,在对这些代码进行优化、版本迭代升级、bug修改等工作时,由于业务代码量通常较多,使得开发人员往往无法完整地整合系统中全部功能组件的代码,对一些时间久远的代码也没法做到准确理解,导致企业代码检索问答系统无法在海量的企业代码累计中精准匹配到用户想要查询的业务代码,代码检索准确度不高。
2、上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
技术实现思路
1、本技术的主要目的在于提供一种代码检索问答方法、装置、设备及存储介质,旨在解决现有技术中企业代码检索问答系统无法在海量的企业代码累计中精准匹配到用户查询的业务代码的技术问题。
2、为实现上述目的,本技术提出一种代码检索问答方法,所述的方法包括:
3、根据用户输入的代码检索问答请求确定用户请求意图和期望代码语言类别;
4、确定所述用户请求意图对应的代码检索路由,并通过所述代码检索路由获取代码召回结果,所述代码召回结果为代码库中与所述用户请求意图相关性超过预设相关性阈值的结果;
5、基于所述代码召回结果和所述期望代码语言类别确定目标代码信息,所述目标代码信息包括代码原文和代码中文解释中至少一项;
6、通过预设代码分析大模型基于所述代码原文和/或所述代码中文解释输出代码检索结果。
7、在一实施例中,所述用户请求意图包括:代码生成;所述通过所述代码检索路由获取代码召回结果的步骤,包括:
8、在所述用户请求意图为代码生成时,将所述代码检索路由确定为代码生成路由;
9、通过所述代码生成路由基于第一嵌入模型对用户问题进行向量化处理,获得第一问题向量化结果;
10、基于代码向量库对所述第一问题向量化结果获取第一代码召回结果,所述第一代码召回结果为所述代码向量库中与所述第一问题向量化结果的相关性超过预设相关性阈值的结果;
11、所述基于所述代码召回结果和所述期望代码语言类别确定目标代码信息的步骤,包括:
12、基于所述期望代码语言类别从所述第一代码召回结果中确定第一代码向量四元组,所述第一代码向量四元组为所述第一代码召回结果中代码语言类别与所述期望代码语言类别相同的代码向量四元组;
13、将所述第一代码向量四元组中的代码原文确定为目标代码信息。
14、在一实施例中,所述通过预设代码分析大模型基于所述代码原文和/或所述代码中文解释输出代码检索结果的步骤,包括:
15、若所述目标代码信息为代码原文,则从所述目标代码信息中获取目标代码片段;
16、基于所述目标代码片段生成第一文本提示信息;
17、根据所述第一文本提示信息确定所述预设代码分析大模型对应的第一任务流程,所述第一任务流程包括:代码总结生成、代码转写和代码直接生成;
18、通过所述预设代码分析大模型基于所述第一任务流程输出代码检索结果。
19、在一实施例中,所述用户请求意图包括:代码解释;所述通过所述代码检索路由获取代码召回结果的步骤,包括:
20、在所述用户请求意图为代码解释时,将所述代码检索路由确定为代码解释路由;
21、通过所述代码解释路由基于第二嵌入模型对用户问题进行向量化处理,获得二问题向量化结果;
22、基于文本向量库对所述第二问题向量化结果获取第二代码召回结果,所述第二代码召回结果为所述文本向量库中与所述第二问题向量化结果的相关性超过预设相关性阈值的结果;
23、所述基于所述代码召回结果和所述期望代码语言类别确定目标代码信息的步骤,包括:
24、基于所述期望代码语言类别从所述第二代码召回结果中确定第二代码向量四元组,所述第二代码向量四元组为所述第二代码召回结果中代码语言类别与所述期望代码语言类别相同的代码向量四元组;
25、将所述第二代码向量四元组中的代码中文解释确定为目标代码信息。
26、在一实施例中,所述通过预设代码分析大模型基于所述代码原文和/或所述代码中文解释输出代码检索结果的步骤,包括:
27、若所述目标代码信息为代码中文解释,则从所述目标代码信息中获取目标代码中文解释;
28、基于所述目标代码中文解释生成第二文本提示信息;
29、根据所述第二文本提示信息确定所述预设代码分析大模型对应的第二任务流程,所述第二任务流程包括:代码总结解释、代码参考解释和代码直接解释;
30、通过所述预设代码分析大模型基于所述第二任务流程输出代码检索结果。
31、在一实施例中,所述根据用户输入的代码检索问答请求确定用户请求意图和期望代码语言类别的步骤之前,还包括:
32、通过预设代码分析大模型对用户入库代码文件以函数为粒度进行分析,获得所述用户入库代码文件中每个代码片段对应的代码中文解释和代码语言类别;
33、对所述代码片段和所述代码中文解释进行编码,获得代码嵌入向量和文本嵌入向量;
34、按照第一存储形式将所述代码嵌入向量、所述代码片段、所述代码中文解释和所述代码语言类别存储至代码向量库;
35、按照第二存储形式将所述文本嵌入向量、所述代码中文解释、所述代码片段和所述代码语言类别存储至文本向量库。
36、在一实施例中,所述根据用户输入的代码检索问答请求确定用户请求意图和期望代码语言类别的步骤之前,还包括:
37、确定初始代码分析大模型对应的代码处理任务,所述代码处理任务包括:代码解释任务、代码片段生成任务和代码类型判别任务;
38、确定所述代码解释任务对应的第一微调数据样例、所述代码片段生成任务对应的第二微调数据样例,以及所述代码类型判别任务对应的第三微调数据样例;
39、基于所述第一微调数据样例、所述第二微调数据样例和所述第三微调数据样例对所述初始代码分析大模型进行微调,获得预设代码分析大模型。
40、此外,为实现上述目的,本技术还提出一种代码检索问答装置,所述装置包括:
41、问答请求分析模块,用于根据用户输入的代码检索问答请求确定用户请求意图和期望代码语言类别;
42、召回结果获取模块,用于确定所述用户请求意图对应的代码检索路由,并通过所述代码检索路由获取代码召回结果,所述代码召回结果为代码库中与所述用户请求意图相关性超过预设相关性阈值的结果;
43、代码信息确定模块,用于基于所述代码召回结果和所述期望代码语言类别确定目标代码信息,所述目标代码信息包括代码原文和代码中文解释中至少一项;
44、检索结果生成模块,用于通过预设代码分析大模型基于所述代码原文和/或所述代码中文解释输出代码检索结果。
45、此外,为实现上述目的,本技术还提出一种代码检索问答设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序配置为实现如上文所述的代码检索问答方法的步骤。
46、此外,为实现上述目的,本技术还提出一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文所述的代码检索问答方法的步骤。
47、本技术提供了一种代码检索问答方法,本技术公开了根据用户输入的代码检索问答请求确定用户请求意图和期望代码语言类别;确定用户请求意图对应的代码检索路由,并通过代码检索路由获取代码召回结果,代码召回结果为代码库中与用户请求意图相关性超过预设相关性阈值的结果;基于代码召回结果和期望代码语言类别确定目标代码信息,目标代码信息包括代码原文和代码中文解释中至少一项;通过预设代码分析大模型基于代码原文和/或代码中文解释输出代码检索结果;由于本发明可以根据代码检索问答请求精准识别用户请求意图,并将用户请求意图分到不同的代码检索路由获取代码召回结果,并基于代码召回结果和期望代码语言类别确定目标代码信息,使得预设代码分析大模型可以基于目标代码信息进行精准的代码检索,获得代码检索结果,从而解决了现有技术中企业代码检索问答系统无法在海量的企业代码累计中精准匹配到用户查询的业务代码的技术问题,进而提高了代码检索准确度。