ChatkBQA:一个基于大语言模型的知识库问题生成-检索框架11.13

ChatkBQA:一个基于大语言模型的知识库问题生成-检索框架

  • 摘要
  • 1 引言
  • 3 准备工作
  • 4 方法
    • 4.1 ChatKBQA概述
    • 4.2 在LLMS上进行高效微调
    • 4.3 用微调LLMS生成逻辑形式
    • 4.4 实体和关系的非监督检索
    • 4.5 可解释查询执行

在这里插入图片描述

摘要

基于知识的问答(KBQA)旨在从大规模知识库(KBs)中获得自然语言问题的答案,通常分为两个研究部分:知识检索和语义分析。然而,三个核心的挑战仍然存在,包括低效的知识检索,检索错误的语义分析产生不利影响,和以前的KBQA方法的复杂性。在大型语言模型(LLM)时代,我们引入了ChatKBQA,这是一种基于Llama-2,ChatGLM 2和Baichuan 2等开源LLM微调的新型生成然后检索KBQA框架。ChatKBQA建议首先使用微调的LLM生成逻辑形式,然后通过无监督检索方法检索和替换实体和关系,这更直接地改进了生成和检索。实验结果表明,ChatKBQA在标准KBQA数据集、WebQSP和ComplexWebQuestions(CWQ)上实现了最新的性能。这项工作还提供了一个新的范例,结合LLM与知识图谱(KG)的可解释性和知识要求的问题回答。

1 引言

基于知识的问答(KBQA)是一种经典的NLP任务,用于基于大规模知识库(KB)上的事实回答自然语言问题,例如Freebase,和DBpedia,其由结构化知识图(KG)组成,所述结构化知识图谱(KG)由包括(头实体、关系、尾实体)的三元组构建。以前的KBQA方法主要集中在解决两个核心问题:知识检索和语义解析。知识检索主要是从知识库中根据问题定位最相关的实体、关系或三元组,缩小了考虑的范围。然后,语义解析本质上将问题从非结构化的自然语言转换成结构化的逻辑形式(诸如S表达式),然后可以将其转换为可执行的图形数据库查询语言(例如SPARQL)以获得精确的答案和可解释的路径。

以前的KBQA工作提出了具有命名实体识别(NER)技术的不同知识检索方法,实体链接或子图检索。然后,他们利用检索到的事实三元组,使用seq2seq模型(如T5)直接得出问题的答案。其他在检索相关三元组之后执行语义解析以生成逻辑形式,然后在KB上执行相应的转换后的SPARQL查询以获取答案。此外,Yu等人将这两种方法结合起来,进一步提高了KBQA任务的准确性。
在这里插入图片描述
尽管如此,如图1左侧所示,仍然存在三个主要挑战。

  • (1)检索效率低。传统的方法首先确定候选实体的跨度,然后进行实体检索和关系检索。由于自然语言问题的结构与知识库事实不同,大多数方法需要训练专用模型来进行低效的提取和链接。
  • (2)不正确的检索结果会误导语义分析。先前的方法还利用检索到的三元组作为与原始问题一起沿着到seq2seq模型的引用的输入。然而,由于检索到的三元组并不总是准确的,它们会对语义解析结果产生不利影响。此外,如果有许多检索到的三元组,seq2seq模型需要更长的上下文长度。
  • (3)多个处理步骤使KBQA成为一项非常复杂的任务。先前的工作将KBQA任务分解为多个子任务,形成复杂的流水线处理,这使得复制和迁移具有挑战性。在大型语言模型(LLM)正在重构传统的NLP任务,一个更直接的解决方案,利用LLM重新制定传统的KBQA范式是有前途的。

为了克服这些挑战,我们引入了ChatKBQA,这是一种基于微调开源LLM的新型生成然后检索KBQA框架和百川2-7 B。如图1右侧所示,ChatKBQA为KBQA提出了一种直接的方法:
1.首先生成逻辑形式,
2.然后进行实体和关系的检索,旨在避免检索对逻辑形式生成的影响,提高检索效率。
在生成阶段,我们使用指令调优技术微调开源LLM,使他们具备以逻辑形式感知和生成的能力。由于LLM的特殊学习能力,波束搜索结果表明,大约74%的测试问题,一旦转换为逻辑形式,已经匹配基本事实。此外,在实体和关系被屏蔽(骨架)的情况下,超过91%的样本具有与地面事实一致的逻辑形式结构。在检索阶段,我们提出了一种无监督的实体和关系的检索方法,进行短语级语义检索的实体集和关系集的知识库中的实体和关系的逻辑形式,并取代它们在各自的位置。整个ChatKBQA框架简单易用,其中LLM部分可以替换为当前开源的LLM,检索部分可以灵活地与其他语义匹配模型交换,确保了即插即用的出色性能。

为了测试我们提出的框架的性能,我们在两个标准KBQA数据集WebQSP和复杂网络问题(CWQ),使用和不使用黄金实体的设置。实验结果表明,ChatKBQA在KBQA任务中实现了新的最先进的性能。我们还设置了额外的实验,以验证我们的生成,然后检索方法是否提高了生成结果和检索效率。最后,我们还讨论了如何从这个框架的见解使我们设想未来的LLM和KG的组合。

3 准备工作

在本节中,我们定义了我们工作的两个基本概念:知识库和逻辑形式,其次是知识库问答任务的问题陈述。

定义1:知识库(KB)

定义2:逻辑形式
逻辑形式是自然语言问题的结构化表示。以S-表达式为例,一个逻辑形式通常由投影和各种运算符组成。

投影操作表示三元组(s,r,o)在s或o上的单跳查询,其中,(?,r,o)记为(JOIN r o),而(s,r,?)表示为(JOIN(R r)s)。

各种运算符包括 “ A N D ”( A N D E 1 E 2 ) “AND”(AND E_1 E_2) ANDANDE1E2表示取 E 1 和 E 2 E_1和E_2 E1E2的交点,
“ C O U N T ”( C O U N T E 1 ) “COUNT”(COUNT E_1) COUNTCOUNTE1表示计数 E 1 E_1 E1
“ A R G M A X ”( A R G M A X E 1 r ) “ARGMAX”(ARGMAX E_1 r) ARGMAXARGMAXE1r表示取 E 1 在 r E_1在r E1r关系中投影后获得的最大文字,
“ A R G M I N ”( A R G M I N E 1 r )表示取 E 1 的 r “ARGMIN”(ARGMIN E_1 r)表示取E_1的r ARGMINARGMINE1r)表示取E1r关系的投影之后获得的最小文字,
“ G T ”( G T E 1 l ) “GT”(GT E_1 l) GTGTE1l表示取 E 1 的大于 l E_1的大于l E1的大于l的部分,
“ G E ”( G E E 1 l )表示取 E 1 “GE”(GE E_1 l)表示取E_1 GEGEE1l)表示取E1中大于或等于1的部分,
“ L T ”( L T E 1 l )表示取 E 1 “LT”(LT E_1 l)表示取E_1 LTLTE1l)表示取E1中小于1的部分,
“ L E ”( L E E 1 l )表示取 E 1 “LE”(LE E_1 l)表示取E_1 LELEE1l)表示取E1中小于或等于 l l l的部分,其中 E 1 或 E 2 E_1或E_2 E1E2表示子层逻辑形式。

问题陈述
对于KBQA任务,给定自然语言问题Q和知识库K,我们需要首先将Q转换为逻辑形式 F = S p ( Q ) ,其中 S p ( . ) F = Sp(Q),其中Sp(.) F=Sp(Q),其中Sp(.)是一个语义解析函数。然后将 F 转换为等价的 S P A R Q L 查询 q = C o n v e r t ( F ) F转换为等价的SPARQL查询q = Convert(F) F转换为等价的SPARQL查询q=ConvertF,其中 C o n v e r t ( . ) Convert(.) Convert(.)是固定的转换函数。最后,最后一组答案 A = E x e c u t e ( q ∣ K ) A = Execute(q | K) A=Execute(qK)是通过对K执行q而获得的,其中 E x e c u t e ( . ) Execute(.) Execute(.)是查询执行函数。

4 方法

在本节中,我们首先概述ChatKBQA框架,然后介绍对开源大型语言模型(LLM)的有效微调,通过微调LLM生成逻辑形式,实体和关系的无监督检索,以及可解释的查询执行。

4.1 ChatKBQA概述

ChatKBQA是一个生成然后检索的KBQA框架,用于使用微调的开源LLM进行知识库问答(KBQA)。

首先,ChatKBQA框架需要通过指令微调,基于KBQA数据集中的(自然语言问题,逻辑形式)对 有效地微调开源LLM。
然后使用微调的LLM通过语义解析将新的自然语言问题转换为相应的候选逻辑形式。
然后,ChatKBQA在短语级别检索这些逻辑形式中的实体和关系,并搜索转换为SPARQL后可以对KB执行的逻辑形式。
最后,利用转换后得到的SPARQL得到最终的答案集,并获得可解释的和知识所需的自然语言问题的答案。
在这里插入图片描述

4.2 在LLMS上进行高效微调

为了构造指令微调训练数据,ChatKBQA首先将KBQA数据集中测试集的自然语言问题对应的SPARQL转换为等价的逻辑形式,然后将实体ID(例如,“m.06w2sn5”)与相应的实体标签(例如,“[ Justin比伯]”),让LLM比无意义的实体ID更好地理解实体标签。然后,我们联合自然语言问题(例如:“贾斯汀比伯兄弟的名字是什么?”)以及处理后的对应逻辑形式(例如“(AND(JOIN [ people,person,gender ] [ Male ])(JOIN(R [ people,sibling relationship,sibling ])(JOIN(R [ people,person,sibling s ])[ Justin比伯])”)分别作为“输入”和“输出”,并添加“指令”为“生成检索与给定问题对应的信息的逻辑形式查询”。构成了开源LLM的指令微调训练数据。

为了降低微调具有大量参数的LLM的成本,ChatKBQA利用参数高效微调(PEFT)的方法来微调仅少量的模型参数,并实现与完全微调相当的性能。其中,LoRA通过使用低秩近似来减少在微调期间具有变化权重的大型语言模型的内存占用。QLoRA通过将梯度反向传播到冻结的4位量化模型中来进一步减少存储器,同时保持完整的16位微调任务的性能。P调谐v2采用前缀调谐方法,该方法在输入之前的每一层处并入可微调参数。Freeze通过仅微调Transformer最后几层的全连接层参数,同时冻结所有其他参数,加快了模型的收敛速度。ChatKBQA可以在所有上述有效的微调方法以及LLM之间切换,例如Llama-2-7B和ChatGLM 2-6B。

4.3 用微调LLMS生成逻辑形式

通过微调,LLM在一定程度上掌握了从自然语言问题转换为逻辑形式的语义解析能力。因此,我们使用微调的LLM对测试集中的新问题进行语义解析,我们发现大约63%的样本已经与地面真值逻辑形式相同。当我们使用波束搜索时,LLM输出的候选逻辑形式C列表包含约74%的具有真实逻辑形式的样本,这表明微调的LLM具有良好的语义解析任务的学习和解析能力。此外,如果我们用“[ ]”替换所生成的候选逻辑形式中的实体和关系(例如,“(AND(JOIN [ ] [ ])(JOIN(R [ ])(JOIN(R [ ])[ ]))“)形成逻辑形式的骨架,则为地面真实逻辑形式的骨架,出现在候选骨架中的样本百分比大于91%。这表明我们只需要将这些逻辑形式中相应位置的实体和关系替换为知识库中已有的实体和关系,就可以进一步提高性能。

4.4 实体和关系的非监督检索

由于微调LLM的良好的生成能力的逻辑形式的骨架,在检索阶段,我们采用了无监督的检索方法,它采取的实体和关系的候选逻辑形式,并通过他们通过短语级语义检索和替换,得到最终的逻辑形式转换为SPARQL可执行的知识库。
在这里插入图片描述
具体地,如算法1所示,输入是所生成的候选逻辑形式列表C,并且我们按顺序遍历这些逻辑形式F中的每一个。首先,我们执行实体检索。对于F中的每个实体 e e e,我们计算与知识库K实体集合E中的每个实体 e ′ e' e的标签的相似度 s e ← S i m i E n t i t i e s ( e , e ′ ) s_e ← SimiEntities(e,e') seSimiEntities(e,e)。我们根据相似度对检索到的实体进行排序,取最高的 k e k_e ke和大于阈值 t e t_e te的,得到该实体的检索结果 e l i s t ← T o p K w i t h T h r e s h o l d ( e l i s t , k e , t e ) e_{list}← TopKwithThreshold(e_{list},k_e,t_e) elistTopKwithThresholdelistkete。PermuteByEntity函数对检索到的每个位置的实体进行排列,得到实体检索后的结果 F l i s t F_{list} Flist。根据 F l i s t F_{list} Flist中的概率,取top k1且大于阈值t1,得到一个新的候选逻辑形式列表 C ′ . a p p e n d ( T o p K w i t h T h r e s h o l d ( F l i s t , k 1 , t 1 ) ) C′.append(TopKwithThreshold(F_{list},k_1,t_1)) C′.append(TopKwithThreshold(Flist,k1,t1))

然后,我们执行关系检索。与实体检索相似,但不同的是,对于 F ∈ C ′ F ∈ C′ FC中的每个关系 r r r,我们根据逻辑形式EF的实体集的邻域计算与每个候选关系 r ′ r′ r的相似度 s r ← S i m i R e l a t i o n s ( r , r ′ ) s_r ←SimiRelations(r,r′) srSimiRelations(rr)。我们还根据相似度对检索到的关系进行排序,取最高的 k r k_r kr和大于阈值的 t r t_r tr,得到检索结果 r l i s t ← T o p K w i t h T h r e s h o l d ( r l i s t , r e , r e ) r_{list}←TopKwithThreshold(r_{list},r_e,r_e) rlistTopKwithThreshold(rlist,re,re)。通过对每个位置的关系检索结果进行排列,得到关系检索后的结果Flist,然后取top k2且大于阈值t2,得到新的候选逻辑形式列表 C ′ ′ . a p p e n d ( T o p K w i t h T h r e s h o l d ( F l i s t , k 2 , t 2 ) ) C''.append(TopKwithThreshold(F_{list},k_2,t_2)) C′′.appendTopKwithThresholdFlist,k2,t2))

给定一个查询,无监督检索方法不需要额外的训练来选择语义上与候选集最相似的前k个作为检索到的答案集。BM 25使用词频和逆文档频率来根据文档与给定查询的相关性对文档进行排名。SimCSE是使用比较学习模型的无监督密集信息检索。ChatKBQA可以在上述所有实体检索和关系检索的无监督检索方法之间切换。

4.5 可解释查询执行

在检索之后,我们得到最终的候选逻辑形式列表 C ′ ′ C'' C′′,我们顺序地通过逻辑形式 F ∈ C ′ ′ F ∈ C'' FC′′进行查询,并将其转换为 S P A R Q L 查询 q = C o n v e r t ( F ) SPARQL查询q = Convert(F) SPARQL查询q=Convert(F)的等价形式。当找到第一个可以对KB K执行的q时,我们执行以获得最终答案集 A = E x e c u t e ( q ∣ K ) A = Execute(q | K) A=Execute(qK)。通过这种方法,我们也可以得到一个完整的推理路径的自然语言问题的基础上 S P A R Q L SPARQL SPARQL查询具有良好的可解释性。综上所述,ChatKBQA提出了一种思想,既利用LLM进行自然语言语义解析以生成图查询,又调用外部知识库对查询进行解释性推理,我们将其命名为思维图查询(GQoT),这是一种很有前途的LLM+KG组合范式,可以更好地利用外部知识,提高Q&A的可解释性,并避免LLM的幻觉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/138059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C 语言递归

C 语言递归 在本教程中,您将借助示例学习使用C语言编程编写递归函数。 调用自身的函数称为递归函数。并且,这种技术称为递归。 递归如何工作? void recurse() {... .. ...recurse();... .. ... }int main() {... .. ...recurse();... .. …

【C++初阶】类与对象(三)

目录 一、再谈构造函数1.1 初始化列表1.1.1 初始化列表写法1.1.2 哪些成员要使用初始化列表 1.2 初始化列表的特点1.2.1 队列类问题解决1.2.2 声明顺序是初始化列表的顺序 1.3 explicit关键字1.3.1 explicit关键字的作用 二、static成员2.1 类的静态成员概念2.2 类里创建了多少…

GPTS应用怎么创建?GPTS无法创建应用很卡怎么办

在首届开发者大会上,OpenAI宣布推出了GPTs功能,也就是GPT Store,类似App Store的应用商店,任何用户都可以去参与创建应用。那么GPTS应用该如何创建?碰到应用无法创建很卡怎么办呢?下面就为大家带来GPTS应用创建图文教程&#xf…

php在线审稿系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp

一、源码特点 php在线审稿系统是一套完善的web设计系统mysql数据库 ,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 php在线审稿系统 代码 https://download.csdn.net/download/qq_41221322/885…

11种方法判断​软件的安全可靠性​

软件的安全可靠性是衡量软件好坏的一个重要标准,安全性指与防止对程序及数据的非授权的故意或意外访问的能力有关的软件属性,可靠性指与在规定的一段时间和条件下,软件 软件的安全可靠性是衡量软件好坏的一个重要标准,安全性指与防…

开通和配置支付宝支付完整教程

开通和配置支付宝支付 登录支付宝 1.进入支付宝商家中心 支付宝商家中心-国内领先的第三方支付和金融服务平台 进入产品中心 2.点击产品中心 找到网站支付,进行申请接入支付,如果已经开通请跳过 进入开放中心 3.进入支付宝商家开发者中心登录 - 支付宝 创建应用 4.点击创…

跨机RPCLIB编译

Q1. 按照以下编码增加rpclib报错 find_package(rpclib REQUIRED)include_directories(${RPCLIB_INCLUDE_DIR})add_executable(calculator_server calculator_server.cc) target_link_libraries(calculator_server ${RPCLIB_LIBS} ${CMAKE_THREAD_LIBS_INIT}) Q2. 编译rpclib是…

SOME/IP学习笔记2

1. SOME/IP 协议 SOME/IP目前支持UDP(用户传输协议)和TCP(传输控制协议), PS:UDP和TCP区别如下 TCP面向连接的,可靠的数据传输服务;UDP面向无连接的,尽最大努力的数据传输服务&…

操作系统——内存管理(一文搞懂操作系统的内存管理)

VIRT(虚拟内存)、RES(常驻内存)和SHR(共享内存) VIRT(虚拟内存) 进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;假如进程新申请10MB的内存,但实…

时代变迁,你背的“八股文”可能已经过时了

随着技术的不断更新迭代,一些曾经被认为是 “标准答案” 的观点和方法,已经不再适应当前的需求,甚至被视为过时的做法。在新的 JDK 版本中,许多新的特性、工具和方法被引入,使得 Java 编程变得更加简洁、高效和强大。所…

金蝶云星空和管易云接口打通对接实战

金蝶云星空和管易云接口打通对接实战 对接系统:金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践,面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司,提供一个通用的ERP服务平台。K/3Cloud支持的协同…

一个进程最多可以创建多少个线程?

前言 话不多说,先来张脑图~ linux 虚拟内存知识回顾 虚拟内存空间长啥样 在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址空间的范围也不同。比如最常见的 32 位和 64 位系统&am…

MySQL查询原理与优化

文章目录 前言执行查询的过程逻辑连接器查询缓存解析器优化器执行器 衡量查询开销的三个指标响应时间扫描行数返回的行数 重构查询的几种选择一个复杂的查询还是多个简单的查询切分查询关联查询解决关联查询的原则 总结 前言 上一篇文章中(MySQL索引全解&#xff1…

TikTok数字艺术:短视频背后的视觉盛宴

在当今数字时代,社交媒体平台已经成为创意表达和文化传播的重要场所之一。其中,以短视频为代表的形式在TikTok这一平台上崭露头角,为创作者和观众提供了一个数字艺术的舞台。 本文将深入探讨TikTok数字艺术的独特之处,剖析短视频…

idea报错java: 程序包com.alibaba.fastjson不存在,明明存在!

经常从线上拉下来代码后编译运行时会报这个错误。刷新maven也没用,重新导入项目也没用 发现解决方法如下: 找到当前报错文件的路径。找到iml文件 删除它!然后刷新maven 就好了!!! 记录一下我的解决方法&…

酷柚易汛ERP- 备份与恢复操作指南

1、应用场景 该界面只有管理员才会显示,对已有数据的账套进行备份与恢复。 2、操作指南 2.1 开始备份 对当前系统内的所有数据进行备份,备份成功后当前数据则保存至当前服务器上,同时也会在列表内新增一条当前操作的备份文件记录 2.2 上传…

Linux 使用随记

Linux 使用随记 shell 命令行模式登录后所取得的程序被成为shell,这是因为这个程序负责最外层的跟用户(我们)通信工作,所以才被戏称为shell。 命令 1、命令格式 command [-options] parameter1 parameter2 … 1、一行命令中第…

c++分割路径的字符串,得到 目录 文件名 扩展名

简单的做一个c小代码片的记录 c分割了图片的 路径字符串&#xff0c;得到 目录 文件名 扩展名 #include <iostream> using namespace std;int main() {std::string path "E:\\set1_seg\\32.jpg";//index:"\\"在字符串中的位置int index path.find…

如何搭建高性能地图(访问速度快、层级高、免费)

1、下载地图数据源 可以从很多市面上的地图供应商下载地图&#xff0c;如水经注、bigemap等&#xff0c;大部分层级能够达到19级&#xff0c;也即地图的空间分辨率能够达到0.6米&#xff0c;比如下面广州市的数据。如果数据量少&#xff0c;只需要一个城市或者几个城市的数据&…