Keqing:基于知识的问答是LLM的天然CoT导师

Keqing是一种新型框架,通过知识图谱辅助大型语言模型(LLMs)解决基于知识的问答(KBQA)任务,减少错误回答。它采用问题分解、知识检索、候选推理和回答生成四个阶段,提高LLMs的可靠性。Keqing利用预定义模板将复杂问题分解为子问题,然后在知识图谱上检索相关实体,形成可解释的推理路径,生成答案。实验表明,Keqing在KBQA性能和可解释性方面具有优势。
摘要由CSDN通过智能技术生成

在这里插入图片描述

摘要

大型语言模型(LLMs)在各种自然语言处理(NLP)任务中表现出了非凡的性能,特别是在问答方面。然而,面对超出知识范围的问题时,这些LLMs往往会一本正经地胡说八道。潜在的解决方案可能是融入一个信息检索(IR)模块,并基于检索到的知识生成回答。在本文中,我们提出了一种新颖的框架,以协助如ChatGPT这样的LLMs在知识图谱上检索与问题相关的结构化信息,并展示了基于知识的问答(Keqing)可以作为自然的“思维链”(Chain-of-Thought,CoT)导师,引导LLM通过可解释的逻辑链依次找到复杂问题的答案实体。具体来说,Keqing的工作流程将包括根据预定义模板分解复杂问题、在知识图谱上检索候选实体、推理子问题的答案,并最终生成带有推理路径的回答,这大大提高了LLM回答的可靠性。在KBQA数据集上的实验结果表明,Keqing能够取得具有竞争力的性能,并阐明回答每个问题的逻辑。

1 介绍

大语言模型(LLMs)最近因其在各种自然语言处理(NLP)任务中的卓越表现而成为学术界和工业界的宠儿。借助大规模预训练、指令调优和人类反馈强化学习(RLHF)等技术,现有的预训练LLMs在语言理解、生成、交互和推理方面展现出了独特的能力。LLMs的这些强大能力也推动了众多新兴研究主题(如指令学习、上下文学习、思维链提示等)的发展,以进一步挖掘其巨大潜力,并为人类构建先进的人工智能系统带来无限可能。然而,随着这些进步,LLMs面临的一个紧迫问题——“幻觉”现象——也受到了广泛批评。所谓“幻觉”现象,是指LLMs倾向于生成不正确、无意义或不真实的文本。

为了缓解LLMs生成过程中的“幻觉”现象,一个可行的方向是 检索与用户查询高度相关的事实性知识,然后引导LLMs根据检索到的上下文生成回答,从而产生了检索增强的语言模型(retrieval-augmented LMs)。这些模型最近在知识密集型任务中,特别是基于知识的问答(KBQA)任务中,表现出了强大的性能。现有的检索增强LMs的工作流程主要依赖于基于嵌入的检索方法,该方法首先将各种形式的知识库和用户查询编码到相同的潜在空间中,然后使用语义相似性度 检索出最相关的前K个文档作为提示,最后指导LLMs仅使用提供的上下文来回答用户查询。然而,由于基于嵌入的语料库检索往往会带来冗余的上下文输入,其中重复或无关的内容会占用提示中的大量标记,从而影响LLMs生成回答的质量。为了缓解这一问题,我们提出构建一个在知识图谱上运行的检索模块,以收集相关的三元组,从而可以精确地为辅助LLMs提供高质量的上下文,以完成KBQA任务。

不同于之前利用LLMs的推理能力直接生成SQL形式的符号逻辑链来解决用户问题的KBQA方法,这些方法在实践中通常不可执行。在本工作中,我们提出使用问题分解模块,首先根据预定义的问题模板将复杂的用户问题分解为几个子问题。每个问题模板都可以利用知识图谱上预先收集的逻辑链来解决,从而得到多个推理路径来找到答案候选者,以解决用户问题。 这种设计的思路是,LLMs更容易捕获文本形式的问题分解逻辑,而不是SQL形式。对于每个现实世界中的问题,可能存在多个解决方案(推理路径)来得到潜在的答案候选者,而足够的答案候选者可以为后续的答案推理过程提供容错性。在问题分解和知识检索之后,我们利用候选推理模块来选择正确的实体来回答当前问题,并根据分解的子问题之间的依赖关系迭代得出最终答案。

在KBQA的背景下,知识图谱上的逻辑链可以自然地形成思维链(CoT),指导现有的LLMs将复杂问题分解为多个子问题。这正是我们假设基于知识的问答可以成为LLMs的思维链导师的原因,并因此将我们的框架命名为“Keqing”,与游戏《原神》中的一位智慧角色同名。在此,我们总结本文的主要贡献如下:

  • 我们开发了一个名为Keqing的新框架,利用LLMs完成KBQA任务。该框架的工作流程主要包括四个阶段:问题分解、知识检索、候选推理和答案生成,这大大提高了现有LLMs回答的可靠性。
  • 超越了直接的文本到SQL生成方法,我们引入了问题模板作为中介,使LLMs更容易捕获问题分解的逻辑。每个问题模板都可以利用预先收集的逻辑链来解决。
  • 与使用启发式手工方法构建思维链不同,我们是第一个 利用KBQA的逻辑链作为思维链来指导现有LLMs将复杂问题分解为多个子问题的。这种方法是自动化的,并且容易扩展。
  • 实验结果表明,Keqing不仅能在最近的流行基准上取得具有竞争力的性能,而且能够成为一个值得信赖的系统,阐明回答每个问题的底层逻辑,从而提高了其回答的可解释性。

2 相关工作

2.1 检索-增强语言生成

为了避免生成非事实性和过时的回应,开发了检索增强的语言模型(Retrieval-Augmented LMs),以结合基于检索和基于生成模型的元素,提高文本生成的质量和相关性。现有的检索增强语言模型主要依赖于两种检索器来评估文档与信息搜索查询的相关性,一种是基于词袋(bag-of-words)表示的稀疏检索器,另一种是使用神经网络嵌入的密集文档向量的密集神经检索器。除了对文本语料库进行检索外,最近的工作倾向于探索在知识图谱上进行检索的方法,提出利用LLMs的推理能力直接生成可执行的逻辑链。与上述方法不同,Keqing的检索过程采用了先将问题分解为子问题,然后将每个子问题映射到逻辑链的形式,这缓解了LLMs难以理解SQL形式逻辑链含义的问题。

2.2 基于知识问答中的LLM

大型语言模型(LLMs),如ChatGPT,在经过指令调优和从人类反馈中强化学习(RLHF)的过程后,已经展现出在精确理解用户意图方面的潜力。然而,当面对复杂指令或问题时,例如多跳KBQA,大多数LLMs常常缺乏将多步问题分解为中间步骤以得出答案的能力。这促使了近期关于思维链(CoT)提示的研究,这些研究高度依赖于启发式手工算法。

不过,这些方法在设计和实现上通常较为复杂,且可能难以适用于所有类型的问题。因此,探索更有效的策略来增强LLMs在KBQA任务中的能力成为了一个重要的研究方向。Keqing框架的提出正是为了解决这个问题,它 利用知识图谱上的逻辑链作为自然的思维链,指导LLMs分解复杂问题。这种方法不仅自动化程度高,而且易于扩展,为提升LLMs在KBQA任务中的性能提供了一种新的思路。

在KBQA任务中,与以往使用LLMs进行文本到SQL生成的工作不同,这些工作生成的SQL草稿通常无法保证可执行性。Keqing则将知识图谱上的逻辑链视为思维链生成的指导者,引导LLMs将复杂问题分解为多个子问题,然后依次解决这些子问题。这种方法是自动化的,并且可以轻松地扩展到大规模数据集。通过这种方式,Keqing不仅提高了LLMs在KBQA任务中的准确性和效率,同时也增强了其可解释性和可靠性。

3 方法

如图1所示,Keqing的工作流程主要由四个模块组成,分别是问题分解、知识检索、候选推理和回答生成。以下各小节将详细介绍每个模块的技术细节。

在这里插入图片描述

3.1 通过 槽位填充 来分解复杂问题

在基于知识的问答(KBQA)场景下,给定一个自然语言查询q,KBQA的目标是从一个符号化的知识图谱(KG)K中检索出一个答案列表A,以回应查询q。假设存在一个训练集 D = D = D={ ( q i , A i ) (q_i, A_i) (qi,Ai)} i = 1 N ^N_{i=1} i=1N,它包含N个问答对。一个理想的KBQA模型应该从给定的问答对中学习到推理模式(即逻辑链),每个逻辑链都是KG边的一个子集。然后,模型会选择合理的逻辑链来推导出查询q的答案。

在我们的考虑中,特定领域知识图谱中的逻辑链可以自然地用作思维链(CoTs),以指导大型语言模型(LLMs)解决一系列复杂的多跳问题。这激励我们首先根据预定义的问题模板将每个复杂问题分解为更简单的子问题,然后使用预先收集的潜在逻辑链逐一解决这些子问题。引入问题分解模块的优势有两方面:

  • 1)与SQL指令的代码形式相比,分解后子问题的文本形式更容易被LLMs学习,例如LLaMA和Vicuna,它们的预训练语料库大多数仍然是文本形式;
  • 2)在我们日常生活中的每个实际问题中,特别是在数学或科学领域,可能有几种不同的解决方案来解决同一个问题。预先收集的、针对每个问题模板的逻辑链可以贡献于生成多个潜在的答案候选,并为后续的推理过程提供容错性。

基于知识图谱问答的思维链进行问题分解

为了将复杂的KBQA问题分解为一系列子问题,一种直接的方法是通过示例演示来引导LLMs,并迫使LLMs模仿地分解当前输入的用户问题,遵循HuggingGPT的流程。然而,由于输入令牌资源的限制,演示中使用的示例需要仔细选择才能实现令人满意的性能,这会造成额外的资源成本,甚至可能因示例选择不当而导致失败。因此,对于Keqing的问题分解模块,我们决定 使用LORA对LLMs(特别是我们实验中的LLaMA)进行微调,以捕获分解复杂KBQA问题的潜在机制

在形式上,给定用户提出的复杂问题(查询) q i q_i qi和一组预定义的子问题模板 Q = Q= Q= { q ( k ) q^{(k)} q(k)} k = 1 K ^K_{k=1} k=1K,Keqing中的问题分解模块的目标是通过大型语言模型(LLMs)的生成,将给定的查询 q i q_i qi分解为T个子问题。这可以表述为:
{ q i , t q_{i,t} qi,t} t = 1 T ^T_{t=1} t=1T=LLM ( q i ) , q i , t ∈ (q_i),q_{i,t}∈ (qi),qi,t { q ( k ) q^{(k)} q(k)} k = 1 K ^K_{k=1} k=1K

其中,每个子问题 q i , t q_{i,t} qi,t的训练目标是与K个预定义问题模板中的某一个完全匹配。如表1所示,以原始问题 q i q_i qi作为输入查询,通过微调LLMs来填充子问题 q i ,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值