KnowledGPT: Enhancing Large Language Models with Retrieval and Storage Access on Knowledge Bases
题目
KnowledGPT:通过对知识库的检索和存储访问来增强大型语言模型

摘要
大语言模型(LLM)在自然语言处理领域表现出了令人印象深刻的影响,但它们仍然面临着完整性、及时性、忠实性和适应性等问题。虽然最近的工作重点是将法学硕士与外部知识源联系起来,但知识库(KB)的整合仍然没有得到充分研究,并面临一些挑战。在本文中,我们介绍了 KnowledGPT,这是一个将法学硕士与各种知识库联系起来的综合框架,有助于知识的检索和存储。检索过程采用思维提示程序,生成代码格式的知识库搜索语言,并带有预定义的知识库操作函数。除了检索之外,KnowledGPT 还提供将知识存储在个性化知识库中的功能,以满足个人用户的需求。通过大量的实验,我们表明,通过将 LLM 与 KB 相结合,与普通的 LLM 相比,KnowledGPT 能够正确回答更广泛的需要世界知识的问题,利用广为人知的 KB 中存在的知识并提取到个性化的 KB 中。

图1:文档语料库和知识库的检索结果比较。在这种情况下,从语料库中检索到的文档无法为查询提供足够的知识,而从知识库中可以检索到足够的相关知识。
简介
大型语言模型 (LLM) (OpenAI, 2023) (Chiang et al, 2023) (Taori et al, 2023) 在翻译等各种自然语言处理 (NLP) 任务中取得了重大影响 (Wang et al, 2023) )、摘要(Zhang 等人,2023)和问答(van Sonsbeek 等人,2023),以及来自现实世界用户的各种请求。他们的卓越能力源于参数和训练数据数量的不断增加,这些参数和训练数据的数量与他们的海量知识和新兴能力相关,例如链式推理(Kojima 等人,2022)和上下文学习(Brown 等人) ,2020)。然而,考虑到完整性、及时性、忠实性和适应性等问题,LLM仍然难以掌握事实知识(OpenAI,2023)(Kandpal 等人,2023)。首先,法学硕士在特定领域的及时更新和专业知识方面表现出局限性。其次,这些模型可能会产生不忠实或“幻觉”的知识,带来可靠性和道德问题。第三,由于成本和可及性等限制,法学硕士很难通过持续培训吸收新知识,这阻碍了定制这些模型以适应特定知识需求的能力。因此,这些知识需求鼓励全面的研究工作,以将法学硕士与外部知识来源相结合。
针对这个问题,最近做出了一些努力,使法学硕士能够访问即插即用的知识源,例如知识库(KB)(Modarressi et al, 2023)、搜索引擎(Schick et al, 2023)、文档存储器(Liu, 2022) )和数据库(Hu et al, 2023),通常通过法学硕士生成的 API 调用为法学硕士提供世界知识。在本文中,我们重点关注知识库(KB),这是一种以实体为中心的知识的独特知识源形式像关系三元组和实体描述这样的边。
一方面,各种知识库的构建是为了它们对应用的实际有效性,以及它们表示的简洁性、表达性、可解释性和可见性。另一方面,以前的方法主要集中在文档语料库上,这在应用于知识图谱时暴露出一些缺陷,如图 1 所示。因此,将 LLM 与 KB 联系起来非常重要,但仍未得到充分探索。
最近,有几项工作尝试将 LLM 与 KB 连接起来。 Toolformer(Schick 等人,2023)查询维基百科以获取感兴趣实体的描述,以回答相关问题。 GraphToolformer (Zhang, 2023) 和 ToolkenGPT (Hao et al, 2023) 使法学硕士能够对 Freebase 等知识图谱进行推理。 RET-LLM(Modarressi 等人,2023)利用从过去的对话中提取的关系三元组来构建个性化 KG 记忆以供将来使用,与 LangChain(Chase,2022)和 Llama Index(Liu,2022)中 KG 索引的实际工作并行。
然而,如图2所示,在这个方向上仍然存在许多挑战。首先,LLM在知识库中导航复杂多样问题的过程仍然是一个问题,特别是对于需要跨多个和嵌套信息的多跳问题条目(以 KB 为单位)。其次,将知识库中的实体和关系与其文本提及对齐是一项具有挑战性的任务,因为它们需要映射到广泛的自然语言表达并解释知识库中的严重歧义。第三,虽然知识图谱中基于三元组的表示形式简洁且可解释,但与自然语言相比,它仅涵盖有限的信息,这表明法学硕士需要新的知识库表示形式。
在本文中,我们提出了一个综合框架KnowledGPT,以有效地将法学硕士与各种知识库连接起来,提高处理复杂问题、歧义和知识表示的能力。 KnowledGPT 实现了对不同 KB 的操作的统一访问器接口,包括广泛使用的公共 KB 和个性化 KB 内存。
KnowledGPT 访问面向实体的知识,包括实体描述和关系三元组。对于给定的查询,KnowledGPT 通过三个步骤搜索知识库:搜索代码生成、搜索执行和答案生成。受(Chen et al, 2022)的启发,KnowledGPT 采用思维程序(PoT)提示,通过生成委托搜索步骤并执行的 Python 代码与知识库交互。该代码封装了用于评估知识库的函数,例如entity_linking。然后,KnowledGPT 整合检索到的知识来生成响应。如果KnowledGPT判断该问题不需要知识库知识,或者检索到的知识不充分或不存在,则该问题将直接由LLM回答。此外,KnowledGPT还可以从各种形式表示的非结构化文本中提取知识,丰富个性化知识库。
总的来说,我们的贡献总结如下:
我们提出了 KnowledGPT,一个使LLM能够从知识库中检索知识的综合框架。它极大地促进了LLM和知识库之间的合作,以应对复杂的搜索和歧义等重要的实际挑战。
我们建议使用个性化知识库作为LLM的符号记忆,以三种表示形式封装面向实体的知识。与仅包含三元组的知识库相比,这扩展了符号记忆中的知识范围。
我们通过实验证明了我们提出的方法的有效性。结果强调了使用 KB 作为 LLM 符号内存的实用性和潜力。
相关作品
LLM 的外部知识和记忆 大型语言模型 (LLM),例如 GPT4 (OpenAI, 2023) 和 LLaMA (Touvron 等人,2023),已经在各种应用程序中展示了令人印象深刻的性能。然而,他们仍然在知识的完整性、及时性、忠实性和适应性方面遇到困难。因此,最近许多努力致力于为法学硕士提供外部知识。互联网增强语言模型(Komeili 等人,2022)(Lazaridou 等人,2022)以及 New Bing 和 ChatGPT“用 Bing 浏览”插件,允许法学硕士通过搜索引擎或网络浏览器访问最新信息。检索方法如 REALM(Guu 等人,2020)、RAG(Lewis et al, 2020),用文档语料库增强法学硕士,最近流行的法学硕士(如 ChatGPT)也越来越多地采用文档语料库作为存储单元(Liu,2022)(Chase,2022)。 ChatDB(Hu et al, 2023)通过数据库作为符号记忆来增强法学硕士。

图 2:KnowledGPT 与之前的方法在连接 LLM 和 KB 方面面临的几个挑战之间的比较。 KnowledGPT 通过基于代码的多跳搜索和处理来处理复杂问题,通过基于 LLM 的实体链接(中)解决实体歧义,并提供知识表示的扩展形式,以从所提供的文本中封装更广泛的知识。
LLM 的知识库 最近的一些工作研究了用外部 KB 的知识来增强 LLM 或使用 KB 作为符号存储器,通常是通过让 LLM 生成用于 KB 操作的 API 调用。 Toolformer (Schick et al, 2023) 训练法学硕士在维基百科中搜索实体文本。 Graph-Toolformer(Zhang,2023)使法学硕士能够对知识图进行推理。但是,它跳过了实体链接步骤,因此它需要像 /m/053yx 这样的实体 ID 作为输入,而不是它们的名称。 ToolkenGPT(Hao 等人,2023)保持法学硕士冻结并训练知识库中关系的工具嵌入以支持关系查询。 RETLLM (Modarressi et al, 2023) 类似于 LangChain (Chase, 2022) 和 LlamaIndex (Liu, 2022) 的 KG 内存,从用户输入中提取关系三元组并将其存储在符号 KG 内存中。与之前的工作相比,KnowledGPT 支持各种知识表示以及公共和私有知识库,如表 1 所示。
基于知识的问答(KBQA)是根据特定知识图谱的自然语言查询来搜索答案实体或关系。现有的 KBQA 系统主要基于语义解析(Berant 等,2013)或信息提取(Yao 和 Van Durme,2014),其中越来越多地涉及语言模型。语义解析方法(Yu et al, 2023;Cao et al, 2022;Zhang et al, 2022b;Abdelaziz et al, 2021;Lai et al, 2016)利用语义解析器将自然语言查询转换为中间逻辑形式,例如 SPARQL( Prud’hommeaux, 2011)和程序(Liang et al, 2016),在知识库上执行以获得答案。
然而,生成的逻辑形式通常是不可执行的,因此无法得出正确的答案(Sun et al, 2020)。 Pangu(Gu et al, 2022)训练语言模型判别器来评估候选计划的概率。信息抽取方法通常将检索和推理相结合(Zhang et al, 2022a; Shi et al, 2021; Sun et al, 2019; Jiang et al, 2023; Baek et al, 2023)。这些方法显示了处理单跳检索的有效性。然而,他们在存储和计算成本方面遇到了多跳检索的挑战,其中关系的数量随着每增加一跳呈指数级增长。
KnowledGPT 与 KBQA 方法有两个不同之处。首先,许多 KBQA 方法是针对知识图谱中关系三元组的特殊查询而设计的,而 KnowledGPT 则增强了 LLM,以利用来自知识库的各种形式的知识来响应各种用户查询。其次,KBQA 方法通常在特定数据集和 KG 上进行训练,而 KnowledGPT 不需要训练,并且可以轻松适应不同的 LLM 和 KB。

表 1:KnowledGPT 与现有 KB 增强方法之间的比较。 Ent、Rel 和 DES 分别是实体、关系和描述的缩写。
方法
在本节中,我们介绍 KnowledGPT,一个将 LLM 与 KB 集成的综合框架。我们首先提供KnowledGPT的两个任务的定义,知识检索和知识存储(第3.1节)。然后,我们详细阐述KnowledGPT的检索(第3.2节)和存储(第3.3节)过程中的细节。
任务定义
KnowledGPT 通过来自各种知识库 (KB) 的外部知识来补充法学硕士,包括作为可写符号存储器的个性化知识库 (PKB)。给定用户以自然语言输入的信息,KnowledGPT 承担两个主要任务,即知识检索和知识存储。在知识检索任务中,模型搜索提供的知识库以检索相关知识来回答用户查询。在知识存储任务中,模型从用户输入中提取知识并将其插入到PKB中。
知识检索
KnowledGPT 按照三步流程利用知识库中的知识来回答用户查询,如图 3 所示。首先,它生成一段搜索代码作为特定于查询的知识库访问的逻辑形式。然后,执行搜索代码来检索相关知识。最后,KnowledGPT 读取检索到的知识并回答查询。
我们采用思维程序(PoT)提示方法(Chen et al, 2022),该方法采用Python代码作为法学硕士生成的搜索语言。在本文中,我们使用 GPT-4 (OpenAI, 2023) 作为法学硕士。代码封装在一个搜索函数中,如图3黄色部分所示,其中包括内置的Python函数和三个自定义的KB函数,旨在方便LLM与KB的交互:
get_entity_info,接受实体作为输入并返回其百科全书式描述。
find_entity_or_value,接受由实体和关系组成的查询作为输入,并输出相应实体或值的列表。
find_relationship,它接受两个实体作为输入,并返回它们的关系列表。
特别是,每个实体或关系都表示为候选别名列表,而不是单个名称,以有效处理同义词。除了上述输出之外,这些知识库函数还返回一条记录函数调用和结果的消息。然后,通过连接各个知识库函数调用的消息来获得搜索函数的整体输出。提示信息如图7所示。然后执行搜索功能以从知识库中检索预期的知识。代码在执行之前会被修饰,例如使用 try-except 语句和特定于 KB 的访问器对象,如第 3.2.1 节中所述。搜索函数分别针对每个KB并行执行,并将它们的结果连接起来。最后,将检索到的知识提供给法学硕士,法学硕士的任务是在检索到的知识的支持下响应用户的查询。提示如第 7 节所示。在 LLM 判断问题不需要外部知识或检索到的知识不足以满足查询的情况下,LLM 将忽略检索到的信息并独立处理用户查询。
代码实现
接下来,我们介绍执行生成代码的知识库函数的实现。我们在两个级别上实现这些功能:统一级别和特定于知识库的级别。统一级别的功能为不同KB的操作提供了统一的接口。其中包括生成的三个 KB 函数(get_entity_info、find_entity_or_value、find_relationship)直接由 LLM 生成,以及一个实体链接函数,用于将 LLM 生成的实体别名与 KB 中的实体对齐。

图 3:KnowledGPT 针对给定示例的检索步骤的详细过程。它显示了生成的检索代码、检索结果和查询的知识增强响应,以及法学硕士的原始答案。以红色突出显示的文本表示不准确。
KB级别的函数通过调用相应的API来实现对每个特定KB的操作。基本上,我们只需要为每个KB实现三个函数:_get_entity_info、_entity_linking、_get_entity_triples。在本文中,我们在这些函数前面用下划线表示。在执行之前,我们修饰生成的代码。我们用 try-except 语句包装代码,这样,如果代码在后续步骤中发生故障,搜索函数仍然会从成功的步骤中返回有价值的结果。此外,我们将用户查询作为全局变量传递到搜索函数中。
实体链接
实体链接将自然语言中的实体提及与知识库中的实体对齐,是法学硕士与知识库集成不可或缺的一步。这是至关重要的,因为一个实体可以通过各种提及来指代(例如唐纳德·特朗普和总统特朗普),并且名词短语也可以指代不同的实体(例如水果苹果和苹果公司)。

图 4:给定示例的 KnowledGPT 实体链接步骤的详细过程。
我们的entity_linking函数包括三个步骤,如图4所示。首先,我们调用KB特定的_entity_linking函数来获取候选实体。它基本上将查询和实体别名作为输入,并利用相应知识库提供的实体链接 API(具有实体名称和上下文)和搜索 API(仅具有实体名称)。其次,我们调用 _get_entity_info 函数(在第 3.2.3 节中介绍)来收集有关候选者的信息。每条实体信息都会被截断到最大长度。最后,我们向LLM提供函数输入(包括查询、实体和关系的别名)和候选实体及其信息,并使LLM确定最合适的实体。
获取实体信息
get_entity_info 函数检索有关特定实体的信息。它首先使用entity_linking 函数将实体别名链接到知识库中的实体。随后,它调用KB特定的_get_entity_info函数,该函数返回KB中给定实体的信息,包括其实体描述和三元组信息。调用 _get_entity_triples 函数来收集其三元组。知识库特定的_get_entity_info函数嵌套在entity_linking函数中,这使得它成为统一级别的所有知识库函数的组成部分。
查找实体或值
给定一个由实体和关系组成的查询,find_entity_or_value 函数旨在检索相应的实体或属性值。该函数经历了几个步骤,如算法 1 中所示。不过,它首先调用entity_linking 函数将实体别名与知识库中的相应实体关联起来。然后,它调用内部 _find_entity_or_value 函数,其中包括 KB 特定的 _get_entity_triples检索与实体相关的所有三元组的函数。随后,根据这些三元组中的关系与输入关系别名的相似性对这些关系进行排序。在这里,我们使用句子嵌入的余弦相似度,而不是考虑关系同义词的符号度量。
然后,我们选择相似度得分最高的关系,并从所有相应的三元组中返回实体或属性值。为了提高我们方法的鲁棒性,如果没有找到三元组,我们将在实体描述中进一步搜索关系。如果描述中存在关系,我们返回相应的句子。否则,我们将返回完整的描述,该描述仍可能为法学硕士提供相关详细信息。

查找关系
给定一个由两个实体组成的查询,find_relationship 函数旨在检索它们的关系。该函数类似于find_entity_or_value。不同之处在于,在检索第一个实体的三元组或实体信息后,find_relationship 函数将继续搜索第二个实体,而不是关系。如果此初始搜索失败,该函数将交换第一个实体和第二个实体并再次搜索。与关系相似度不同,我们通过编辑距离 d 来衡量实体相似度。如果两个实体名称有单词重叠,则实体相似度计算为 100 − d,否则为 0。
知识存储
虽然公共知识库提供了丰富的世界知识,但仍然无法涵盖用户感兴趣的所有知识。为了满足用户的个人知识需求,KnowledGPT 引入了个性化知识库(PKB)作为 LLM 的符号存储器,赋予用户存储和访问专业知识的能力。 PKB 由从用户提供的文档中提取的知识填充。当用户打算将知识添加到 PKB 中时,我们会提示法学硕士从他们提供的文档中提取知识,提示如 A 节所示。
我们考虑以三种形式表示的知识,包括实体描述、关系三元组和实体方面信息,如图2所示,这与RETLLM(Modarressi等人,2023)或LangChain的KG-Index(Chase, 2022)和 Llama Index(Liu,2022)仅提取三元组,虽然实体描述和关系三元组已在维基百科和维基数据等知识库中广泛采用,但它们仅代表知识的有限部分,如第 4.4 节中的实验所示。例如,当我们想了解苏格拉底作为士兵的经历时,苏格拉底维基百科页面中的大部分内容几乎没有帮助,而且也很难用三元组表示。因此,我们提出了一种额外的知识表示,称为实体方面信息,用于法学硕士的符号记忆。它是三元组的一种变体,其中对象是一长段文本,它描述实体和方面并可以通过该文本来检索,例如,一条记录可能按(“苏格拉底”,“军事服务”)进行索引,并对应于描述“苏格拉底担任希腊重装步兵或重步兵……”。以这种形式表示的知识也将由 get_entity_or_value 函数检索。
鉴于 PKB 与公共 KB 相比规模很小,我们考虑在 PKB 上进行实体链接的不同策略。差异主要有三倍。首先,我们定义基于精确匹配和嵌入相似度的PKB实体搜索API。嵌入相似性有助于识别众所周知的实体别名,例如 Chanelle Scott Calica 和 Shystie。其次,在提取过程中,提取的实体提及与 PKB 中存在的实体不一致。因此,一个实体可以被提取为不同文档中的不同提及。因此,对于实体链接,KnowledGPT 返回多个匹配的实体。第三,将使用别名列表提取实体,并将其提供给法学硕士以进行实体链接。
对于 get_entity_or_value 函数,由于关系也可以提取为不同的表达式,因此我们选择检索相似度得分超过阈值的关系,而不是得分最高的关系。
实验
在本节中,我们在各种设置上对 KnowledGPT 进行实验,包括对流行知识库手动制作的各种查询(第 4.2 节)、基于知识的问答(第 4.3 节)以及将知识库个性化为法学硕士的内存(第 4.4 节)。
实验设置知识库
KnowledGPT可以通过统一的KB操作接口来访问各种KB。在本文中,我们主要考虑以下知识库:
维基百科 1 和维基数据 2 。维基百科提供了有关世界实体的丰富百科全书信息,由全球志愿者维护。维基数据是一个补充维基百科的知识图谱,它以关系三元组的形式构建和组织百科全书式的知识。
CN-DBPedia (Xu et al, 2017) 是一个大规模、不断更新的中文知识库,提取自各种来源,包括中文维基百科 3 和百度百科 4 。 CNDBPEdia 包含像维基百科这样的实体描述和像维基数据这样的关系三元组。
个性化知识库被设计为法学硕士可写的符号存储器。它存储从用户输入中提取的即将到来的知识。
NLPCC 2016 KBQA 知识库(Duan,2016),广泛用于评估基于知识的问答任务的模型。它包含 4300 万个三元组。该知识库仅在 Sec 中使用在实际场景中,我们通过确定用户查询的语言来启动该过程。对于英语查询,使用维基百科和维基数据以及个性化知识库。对于中文查询,我们将 CN-DBPedia 与个性化知识库结合使用。我们的方法还可以通过相应语言的知识库轻松扩展到更多语言。
语言模型。在本文中,我们默认使用功能强大的LLM GPT-4,由OpenAI API 5 访问。我们向 LLM 提示说明、要求和上下文示例,并要求 LLM 以 json 格式输出。详细提示如A节所示。对于句子嵌入,我们采用OpenAI的GPT text-embedding-ada-002模型。
热门知识库查询

表 2:所选样本的成功回答数。结果由人类注释者评估。对于代码生成,如果代码应该能够检索所有必要的相关知识,则认为是成功的。
为了根据真实用户需要外部知识的多样化查询来评估 KnowledGPT,我们从 CN-DBPedia 6 中精心设计了 11 个有关知识的问题。这些问题涵盖多种类型,包括单跳和多跳关系查询、关系预测、多样化指令、混合查询和值比较。这些问题既涉及大众实体,也涉及长尾实体。详细示例如 B 节所示。我们以 GPT-4 和 ChatGPT 作为基础 LLM 在 KnowledGPT 上进行实验,并根据没有 KB 的直接答案、代码生成、实体链接和 KnowledGPT 答案来衡量成功生成率。
结果如表2所示。详细的生成过程请参见B节。我们观察到:
- GPT-4和ChatGPT本身擅长解决有关知名实体的查询,但它们也经常对不受欢迎的实体产生幻觉实体。
- KnowledGPT 与 GPT-4 出色地完成了代码生成和实体链接,并最终用正确的知识回答用户查询,这比 GPT-4 的普通响应有了显着的改进。
- 然而,对于ChatGPT来说,中间步骤的成功率仍有待提高,这限制了KnowledGPT的整体功效。在代码生成步骤中,ChatGPT 有时会生成不良关系别名,例如谁是父亲,尤其是对于多样化或复杂的查询。
这一比较表明,GPT-4 在复杂指令理解、任务分解和代码生成等方面明显优于 ChatGPT。虽然我们还尝试了 Llama-2-Chat-13B 等较小的开源 LLM,但它们很难直接提供准确的答案,也无法生成格式良好的代码并按照 KnowledGPT 框架的要求以 JSON 格式进行响应。实例探究。图3展示了使用KnowledGPT回答“写《静夜思》的诗人的标题是什么?”这个问题的完整过程,这需要多跳的知识检索和推理。
GPT-4 的原始答案包含不真实的信息,这表明需要用精确的外部知识来增强法学硕士。 KnowledGPT 生成了一段优秀的代码,它首先查找《静夜思》这首诗的作者,然后搜索作者的书名。这证明了用代码解决多跳知识检索的有效性。执行后,代码会有效地检索相关信息。最后,KnowledGPT 整合检索到的知识以正确回答查询。尽管中间步骤中存在潜在的噪音,KnowledGPT 可以很好地过滤噪音并正确回答。
图 5 说明了 KnowledGPT 中实体链接步骤的三个实例。这些示例清楚地表明,从外部知识库的实体链接和搜索 api 返回的原始候选实体的顺序不正确,甚至可能不包含正确的实体。因此,简单地选择顶级实体可能会引入严重的噪音。我们应用 GPT-4 从提供信息的候选实体中进行选择。结果表明,GPT-4 能够熟练地识别查询的正确实体,并且还能够在没有合适的选项时拒绝所有选项。
我们在零样本基于知识的问答 (KBQA) 上评估 KnowledGPT。KBQA 是一个经过广泛研究的领域,旨在回答特定于 KB 中某些关系三元组的自然语言问题。例如,要回答“谁是《理想国》的作者”这个问题,KBQA 模型需要检索三元组(《理想国》,柏拉图所写)并回答柏拉图。
考虑到调用 OpenAI API 的费用,我们编译了两个紧凑的数据集,即用于单跳查询的 NLPCC-100 和用于多跳查询的 NLPCCMH-59。 NLPCC-100 是NLPCCMH-59 由 NLPCC 2016 KBQA 数据集(Duan,2016)测试集的 100 个样本组成,而 NLPCCMH-59 由多跳 KBQA 数据集 NLPCC-MH(Wang 和 Zhang,2019)测试集的 59 个样本组成。 NLPCC-MH是通过扩展NLPCC 2016数据集自动构建的,这会导致一定的固有噪声。从 NLPCC-MH 数据集中,我们手动选择 59 个样本,确保它们的质量以及知识库中支持事实链的存在。此外,我们还纠正了这些样本中存在的任何噪音。对于 NLPCC-100 和 NLPCC-MH-59,我们在本实验中专门使用完整的 NLPCC 2016 KBQA 知识库。
我们针对此数据集和知识库对 KnowledGPT 进行了一些修改。首先,在提供的知识库中,三元组的尾部实体可能包含由特殊符号分隔的多个实体,因此我们调整搜索代码生成的提示,要求LLM在生成的代码中包含拆分机制。其次,为了更好的实体链接,由于提供的知识库不包含实体描述,我们修改 _get_entity_information 的实现以返回与实体相关的 10 个三元组,按查询关系与三元组中的关系之间的杰卡德相似度排序。第三,我们还修改了实体链接提示,要求法学硕士也调整查询关系别名,以更好地与知识库中的关系保持一致。

我们将 KnowledGPT 与以下基线方法进行比较:
通过嵌入相似性进行检索。每个三元组都被视为一个文档并使用 CoSENT 模型嵌入(Ming,2022)。根据每次搜索的嵌入相似性来检索单个文档。对于多跳问题,第一次检索的结果将添加到查询中,以便于第二次检索。
通过 BM25 检索(Robertson 等,1995)。对于每个实体,我们将其所有三元组分组为一个文档。对于每个搜索查询,使用 BM25 算法检索最相关的文档,并删除停用词。如果检索到的文档包含相应的三元组,我们就认为它是成功的。对于多跳查询,我们根据关系之间的杰卡德相似度从初始检索的文档中选择一个三元组,并将该三元组集成到后续检索的查询中。
SPE(Lai 等,2016)。 SPE 使用嵌入相似性从简单问题中提取主谓对。在NLPCC 2016 KBQA任务竞赛中获得第一名。
我们报告 NLPCC-100 和 NLPCC-MH-59 上的平均 F1。平均 F1 是 KBQA 广泛采用的指标,专为具有多个黄金答案和预测的任务而设计。然而,由于在我们的数据集中,每个样本只有一个答案和一个预测,因此平均 F1 实际上相当于准确率。
结果如表3所示,从中我们得到以下观察结果:
- 对于单跳查询,KnowledGPT显着优于通过BM25和嵌入相似性的检索方法,这表明与文档语料库相比,从符号知识库检索的有效性,与知识库知识相关的问题。
- Zeroshot KnowledGPT 优于在 NLPCC-2016 KBQA 数据集的完整训练集上训练的 SPE 方法(0.92 vs 0.85),这显示了 KnowledGPT 强大的零样本性能。
- 对于多跳查询,KnowledGPT也取得了优异的性能,而基于BM25和嵌入相似度的检索方法的性能明显下降。

KB 作为内存
我们进行实验来研究 KnowledGPT 与可修改的个性化 KB 配对时的有效性。 KnowledGPT 的任务是通过从提供的文档中提取知识来构建 PKB,并研究 KnowledGPT 是否用 PKB 正确回答相应的问题。图 6 显示了一个示例,其中提供了有关苏格拉底的文本。 KnowledGPT从文本中提取知识,并通过检索提取的知识来回答相关问题。
我们进一步将 KnowledGPT 应用于 HotpotQA(Yang 等人,2018),这是一个包含所提供文档的多跳问答数据集。我们从 HotpotQA 开发集(干扰器)中选择了 25 个问题,其中包括 5 个比较问题,例如“灌木、含羞草和隐花草哪个是?”以及 20 个桥接问题,例如“Erik Watts 的父亲是什么时候出生了?”。每个问题都与 10 个文档配对。

结果如表 4 所示。KnowledGPT 成功回答了所有比较题,以及 20 个桥接题中的 15 个。在失败的案例中,有两个桥梁问题未能提取回答问题所需的知识,而一个桥梁问题在实体链接阶段失败。总体而言,该实验表明利用 PKB 作为 LLM 的符号存储器具有广阔的前景。

图 6:显示个性化知识库上 KnowledGPT 知识提取和检索的示例。
我们进一步研究了 KnowledGPT 在 HotpotQA 的 100 个文档上的知识提取覆盖率,考虑了各种法学硕士和应用知识表示的不同组合。为了量化覆盖率,我们采用单词召回率,计算公式为
其中 | · |表示集合的基数。Wextracted 和 Wdoc 分别表示使用 NLTK 工具包进行预处理(包括删除停用词和词形还原)后提取的知识和文档中的单词集。

结果如表5所示,从中我们得到以下观察结果:
- 当仅将知识表示限制为三元组时,提取覆盖率为0.53,这表明只有有限部分的知识可以表示为三元组。因此,仅支持三元组的 PKB 不足以充分包含真实用户提供的知识。
- 通过额外的知识表示,即实体描述和实体方面信息,我们观察到知识提取覆盖率显着提高,这表明合并实体描述和实体方面信息使 KnowledGPT 能够用更广泛的知识填充 PKB 。
- ChatGPT 和 GPT-4 在知识提取方面达到了相似的熟练程度。仅当包含实体方面信息时,GPT-4 才优于 ChatGPT,这可能归因于 GPT-4 遵循复杂指令的能力增强。
限制
尽管KnowledGPT使LLM能够有效地在外部知识库上执行KB操作,但其当前形式仍存在一些局限性。首先,检索过程涉及为了效率考虑的一次代码生成和执行。然而,多轮机制可能更好地允许大语言模型(LLMs)自主探索知识库(KBs)。由于大语言模型并不了解知识库中的内容,它们可能会生成看似合理但实际上没有结果的搜索。例如,像“谁是某部作品女主角的配音演员?”这样的查询,在某些知识库中可能需要通过两步搜索来找到“女主角”和“配音演员”的关系,而在其他知识库中则只需要查找“主要配音演员”这一关系。在这种情况下,多轮机制使大语言模型能够自主探查和重新访问知识库,这可能会产生更好的结果,但也会增加成本。其次,我们在具有代表性的但规模较小的数据集上对KnowledGPT进行了实验,受限于通过API访问GPT-4的成本。虽然结果验证了KnowledGPT的有效性,但我们期望在完整的基准测试上进行更全面的评估,以便更好地将KnowledGPT与相关方法进行比较。我们计划在未来的工作中研究如何为KnowledGPT微调大语言模型如Llama,以提高效率并进行更彻底的实验。最后,当大语言模型需要访问外部知识图谱时,而不是独立解决问题,仍然存在实际问题。在这项工作中,我们简单地让大语言模型做出这个决定,而更好的方法仍有待探索。
结论
在本文中,我们介绍了KnowledGPT,这是一个综合框架,用于将大语言模型与外部知识库集成,促进大语言模型在知识库中的检索和存储。在检索方面,KnowledGPT采用“思维程序”提示,通过代码生成和执行来检索知识。在存储方面,KnowledGPT从用户提供的文本中提取各种形式的知识,并用提取的知识填充个性化的知识库。KnowledGPT解决了将大语言模型与知识库集成所固有的几个挑战,包括复杂的问答、实体链接中的歧义以及有限的知识表示形式。通过广泛的实验,我们展示了KnowledGPT有效地赋予大语言模型操作外部知识库的能力。
