再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

552次阅读
没有评论

今天是2023年9月15日,星期五,北京,天气晴。

我们来讲讲知识图谱与大模型之间融合的一些工作。

大型语言模型(LLMs)在自然语言处理领域产生了令人印象深刻的影响,但它们在完整性、及时性、忠实性和适应能力等方面仍存在一些问题。

例如:

首先,LLM在及时更新和特定领域的专业性方面存在局限性。

其次,这些模型可能会产生不真实或”幻觉”的知识,从而带来可靠性和伦理方面的问题。

第三,由于成本和可及性等限制,大模型很难通过持续培训吸收新知识,这阻碍了这些模型适应特定知识需求的能力。

虽然最近的工作重点是将LLM与外部知识源连接起来,但对知识库(KB)的整合研究仍然不足,并面临着一些挑战。

例如,

Toolformer通过查询维基百科对相互关联实体的描述来回答相关问题。

Graph-Toolformer和ToolkenGPT使LLM能够对知识图谱(如Freebase)进行推理。

RET-LLM与LangChain和LlamaIndex中KG索引的实际工作并行,利用从过去对话中提取的相关三元组构建个性化KG记忆,以供未来使用。

互联网增强语言模型以及NewBing和ChatGPT 用BrowsewithBing插件,使语言学习者能够通过搜索引擎或网络浏览器获取最新信息。

REALM、RAG等检索增强方法利用文档语料库增强了LLM,最近的大模型也越来越多地采用这些语料库作为记忆单元。

最近的工作文章《KnowledGPT: Enhancing Large Language Models with Retrieval and Storage Access on Knowledge Bases》提出了一个将LLM与各种知识库连接起来的综合框架,可同时促进知识的检索和存储。其检索过程采用思维提示方法,以代码形式生成知识库搜索语言,并为知识库操作预设函数。与普通LLM相比,该方案既能利用知识库中已有的知识,也能利用提取到个性化知识库中的知识,从而正确回答更广泛问题。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

与之前的研究相比,KnowledGPT支持多种知识表示法,同时支持公共知识库和私有知识库,如表1所示。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

本文对该工作进行介绍,供大家一起参考。

一、实现方法

1、任务定义

KnowledGPT从各种知识库(KB)中获取外部知识,作为对LLM的补充。

在用户以自然语言输入的情况下,KnowledGPT承担两项主要任务,即知识检索和知识存储。在知识检索任务中,模型通过提供的知识库进行搜索,检索相关知识以回答用户的查询。在知识存储任务中,模型从用户输入中提取知识并将其插入PKB。

2、知识检索流程

如图3所示,KnowledGPT采用三步流程,利用知识库中的知识回答用户查询。首先,它生成一段搜索代码,作为特定知识库查询的逻辑形式。然后,执行搜索代码以检索相关知识。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

最后,KnowledGPT读取检索到的知识并回答查询。.

采用思维程序(PoT)提示方法,该方法采用Python代码作为LLM生成的搜索语言。使用GPT-4作为LLM。代码封装在一个搜索函数中,如图3黄色部分所示,其中包括内置Python函数和三个自定义KB函数,旨在方便LLM与KB的交互:

get_entity_info它接受一个实体作为输入,并返回其百科全书式的描述

find_entity_or_value:接受由实体和关系组成的查询作为输入,并输出相应实体或值的列表。

find_relationship:接受两个实体作为输入,并返回它们之间关系的列表。 特别说明的是,每个实体或关系都以候选别名列表的形式表示,而不是单个名称,以便有效处理同义词。

除了上述输出外,这些KB函数还会返回一条记录函数调用和结果的信息。然后,将各个KB函数调用的信息连接起来,就得到了搜索函数的整体输出结果。

整体流程如下:

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

搜索功能分别针对每个知识库并行执行,并将结果合并。 最后,将检索到的知识提供给LLM,LLM的任务是在检索到的知识支持下回复用户的查询。

而在LLM判断问题不需要外部知识或检索到的知识不足以满足查询要求时,LLM将忽略检索到的信息,独立处理用户的查询。

3、实体链接

实体链接将自然语言中提到的实体与知识库中的实体联系起来,是将LLM与知识库整合的不可或缺的一步。这一点非常重要,因为一个实体可以被不同的词提及(如唐纳德-特朗普(DonaldTrump)和特朗普总统(PresidentTrump)),而一个名词短语也可以指代不同的实体(如水果苹果(apple)和苹果公司(Apple))。 

实体链接功能包括三个步骤:

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

如图4所示:

首先,调用KB特有的_entity_linking函数来获取相关实体。基本上,它将查询和实体别名作为输入,并利用相应知识库提供的实体链接API(包含实体名称和上下文)和搜索API(仅包含实体名称)。

其次,调用_get_entity_infofunction来收集候选实体的信息。每条实体信息都将被截断到最大长度。

最后,向LLM提供函数输入(包括查询、实体和关系的别名)和候选实体及其信息,并让LLM确定最合适的实体。 

4、获取实体信息

get_entity_info函数用于检索特定实体的信息,具体步骤如下:

首先使用实体链接函数将实体别名链接到KB中的实体。随后,调用KB特定的get_entity_info函数,返回KB中给定实体的信息,包括实体描述和三元组信息。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

5、查找实体或值

给定一个由实体和关系组成的查询,find_entity_or_value函数旨在重新查找相应的实体或属性值。该函数需要经过几个步骤:

首先,调用实体链接(函数,将实体别名与KB中的相应实体关联起来。

然后,调用内部的find_entity_or_value函数,其中包括一个特定于知识库的get_entity_triples函数,用于检索与实体相关的所有三元组。

随后,这些三元组中的关系会根据它们与输入关系别名的相似度进行排序,相似度采用句子嵌入余弦相似度,而不是考虑关系同义词的符号度量。然后,选择相似度得分最高的关系,并从所有相应的三元组中返回实体或属性值。

为了提高方法的可靠性,如果没有找到三元组,在实体描述中进一步搜索关系。如果关系存在于描述中,返回相应的句子。否则,返回整个描述

6、查找关系

给定一个由两个实体组成的查询,find_relationship函数用于检索它们之间的关系。

该函数类似于find_entity_or_value。不同之处在于,在检索到第一个实体的三元组或实体信息后,find_relationship函数会继续搜索第二个实体,而不是关系。

如果初始搜索失败,函数会交换第一个实体和第二个实体,然后再次搜索。

与关系相似度不同,使用Levenshitein距离d来衡量实体相似度。如果两个实体名称有单词重叠,实体相似度的计算公式为100-d,否则为0。

二、实验设置及效果分析

1、实验设置

知识库。KnowledGPT可以通过其统一的知识库操作界面访问各种知识库。本文主要考虑以下知识库:

1)维基百科和维基数据:维基百科提供关于世界实体的丰富百科信息,由全球志愿者维护。Wikidata是维基百科的知识图谱补充,它以再逻辑三元组的形式结构和组织这些百科知识。

2)CN-DBPedia:一个大规模的、不断更新的中文知识库,其来源包括中文维基百科和百度百科。CN-DBPedia既包含类似维基百科的实体描述,也包含类似维基数据的关系三元组。

3)个性化知识库:设计为LLM的可写符号存储器。它存储从用户输入中提取的最新知识。

4)NLPCC2016:KBQA知识库被广泛用于评估基于知识的问题解答任务模型。它包含4300万个三元组。

在实际场景中,对于英文查询,使用维基百科和维基数据以及个性化知识库。对于中文查询,使用CN-DBPedia和个性化知识库。

在语言模型选用上,默认使用GPT-4,输入为提示指令、要求和上下文示例,并要求LLM以json格式输出。对于句子嵌入,采用text-embedding-ada-002模型。

2、对热门知识库的查询

为了评估KnowledGPT在真实用户需要外部知识时的多样化查询,从CN-DBPedia中精心设计了11个有关知识的问题。

这些问题涉及多种类型,包括单跳和多跳关系查询、关系预测、多样化结构查询、混合查询和价值比较。这些问题既涉及流行实体,也涉及长尾实体。

以GPT-4和ChatGPT为基础LLM,在KnowledGPT上进行了实验,并从无知识库直接生成答案、代码生成、实体链接和KnowledGPT答案等方面测定了生成的成功率。结果如表2所示。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

可以看到:

1)GPT-4和ChatGPT本身精通于处理有关知名实体的查询,但它们也经常对不知名的实体产生幻觉。

2)KnowledGPT与GPT-4能出色地完成代码生成和实体链接等任务,并最终以正确的知识回答用户的查询,与GPT-4的虚无响应相比有了显著的进步。

3)对于ChatGPT而言,中间步骤的成功率仍有待提高,这制约了KnowledGPT的整体效率。在代码生成步骤中,ChatGPT有时会生成较差的关系别名,如谁是父亲,尤其是对于多样化或复杂的查询。这一比较表明,GPT-4在复杂结构理解、任务分解和代码生成等方面明显优于ChatGPT。Llama-2-Chat-13B等较小的开源LLM,但很难直接提供准确的答案,也无法生成格式良好的代码,也无法按照KnowledGPT框架的要求以JSON格式做出响应。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

图5展示了KnowledGPT中实体链接步骤的三个实例。这些例子清楚地表明,从外部知识库的实体链接和搜索api中返回的原始候选实体并不是有序的,甚至可能不包括正确的实体。因此,简单地选择排名靠前的实体可能会带来严重的噪音。

3、基于知识的问题解答

在基于知识的zero-shot问题解答(KBQA)中对KnowledGPT进行了评估。知识库问(KBQA)旨在回答与知识库中某些关系三元组相关的自然语言问题。例如,要回答”谁是《共和国》的作者”这一问题,KBQA模型需要检索三元组(《共和国》,作者,柏拉图)并回答柏拉图。

考虑到调用OpenAIAPI的费用,编制了两个紧凑型数据集,即用于单跳查询的NLPCC-100和用于多跳查询的NLPCC-MH-59。

其中:

NLPCC-100由来自NLPCC2016KBQA数据集测试集的100个样本组成,NLPCC-MH-59由来自NLPCC-MH测试集的59个样本组成,NLPCC-MH是一个多跳KBQA数据集。

NLPCC-MH是通过扩展NLPCC2016数据集自动构建的,这导致了某些固有噪声,因此从NLPCC-MH数据集中手动选择了59个样本,以确保其质量和知识库中存在支持性事实链,并修正了这些样本中存在的噪音。

对于NLPCC-100和NLPCC-MH-59,在本实验中使用的都是完整的NLPCC2016KBQA知识库。

针对该数据集和知识库,对KnowledGPT做了几处修改。具体如下:

首先,在所提供的知识库中,三元组的尾部实体可能包含由特殊符号分隔的多个实体,因此调整了搜索代码生成的提示,要求LLM在生成的代码中加入拆分机制。

其次,为了更好地进行实体链接,由于所提供的知识库不包含实体描述,修改_get_entity_in-formation的实现,以返回与实体相关的10个三元组,按照查询关系和三元组中关系的jaccard相似度排序。

最后,修改实体链接提示,要求LLM也调整查询关系别名,以便更好地与知识库中的关系保持一致。

在基线对比上,将KnowledGPT与以下基线方法进行了比较:

1)通过嵌入相似性检索。每个三元组都被视为一个文档,并使用CoSENT模型进行嵌入表示。每次搜索都会根据嵌入相似性检索到一份文档。对于多跳问题,第一次检索的结果会添加到查询中,以方便第二次检索。

2)通过BM25检索。对于每个实体,将其所有三元组作为一个文档。对于每个搜索查询,使用BM25算法检索出最相关的文档,并去除停用词。如果检索到的文档包含相应的三元组,认为检索成功。对于多跳查询,根据关系间的jaccard相似性从初始检索的文档中挑选一个三元组,并将该三元组整合到后续检索的查询中。

3)SPE。利用嵌入相似性从简单问题中提取主谓对。

在指标上,采用平均F1值,在该数据集中,每个样本只有一个答案和一个预测,因此平均F1实际上等同于准确率。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

结果如表3所示,从中可以得出以下结论:

首先,对于单跳查询,KnowledGPT通过BM25和嵌入相似性显著优于其他三元方法,这表明对于与知识库中的知识相关的问题,与文档语料库相比,从符号知识库中进行检索更有效。

其次,在NLPCC-2016 KBQA数据集的完整训练集上训练的zeroshot检索上,KnowledGPT优于SPE方法(0.92vs0.85),这显示了KnowledGPT具有较好的zero-shot检索性能。

最后,在多跳查询上,KnowledGPT也取得了优异的性能,基于BM25和嵌入相似性的检索方法性能则明显下降。

4、作为内存的KB

通过实验来研究KnowledGPT与可修改的个性化知识库搭配使用时的效果。KnowledGPT的任务是从所提供的文档中提取知识来构建PKB,并研究KnowledGPT是否能用PKB正确回答相应的问题。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

图6显示了一个例子,其中提供了有关苏格拉底的文本。KnowledGPT从文本中提取知识,并通过检索提取的知识回答相关问题。

该工作进一步将KnowledGPT应用于Hot-potQA,一个提供文档的多跳问题解答数据集,从HotpotQA dev set中选取了25个问题,其中包括5个比较问题,如”含羞草和隐花属植物哪个是灌木?”和20个Bridge问题,如”埃里克-沃茨的父亲是什么时候出生的?”。

每个问题都与10篇文档配对,KnowledGPT从这些文档中提取知识来构建PKB。

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

结果如表4所示。KnowledGPT成功回答了所有对比问题,以及20个桥接问题中的15个。在失败的案例中,有两个桥接问题未能提取出回答问题所需的知识,一个桥接问题在实体链接阶段失败。

进一步研究了KnowledGPT对来自HotpotQA的100篇文档的知识提取覆盖率,考虑了各种LLM和应用知识边缘表示的不同组合。为了量化覆盖率,采用了单词召回率,计算公式为

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

结果如表5所示,

再看大模型与知识图谱的融合策略:KnowledGPT–面向知识图谱检索进行大模型增强的框架工作

可以看出以下几点:

首先,当仅将知识表示重新严格限定为三元组时,提取覆盖率为0.53,这表明只有有限的一部分知识可以表示为三元组,仅使用三元组的PKB无法充分涵盖真实用户提供的知识。

其次,使用额外的知识表示法,即实体描述和实体方面信息时,知识提取覆盖率有了显著提高,这表明加入实体描述和实体方面信息后,KnowledGPT能够将更广泛的知识填充到PKB中。

最后,ChatGPT和GPT-4的知识提取能力相近。只有在包含实体方面信息时,GPT-4的表现才优于ChatGPT,这可能是由于GPT-4增强了遵循复杂指令的能力。

总结

本文主要介绍了KnowledGPT,该工作将LLM与外部知识库整合在一起的综合框架,可方便LLM在知识库中进行检索和存储。

在检索方面,KnowledGPT采用”思维程序”提示,通过代码生成和执行来检索知识。

在存储方面,KnowledGPT从用户提供的文本中提取各种形式的知识,并将提取的知识填充到个性化知识库中。

KnowledGPT解决了将LLM与知识库集成过程中固有的几个难题,包括复杂的问题解答、实体链接中的歧义以及有限的知识表示形式。

不过,尽管KnowledGPT使LLM能够有效地对外部知识库执行知识库操作,但其目前的形式仍存在一些局限性。

首先,出于效率考虑,检索过程需要单轮代码生成和执行。然而,多轮机制可以更好地让LLM自主探索知识库。由于LLM不了解知识库中的内容,它们可能会生成看似合乎逻辑却没有结果的搜索。例如,像”谁是……中女主角的配音演员”这样的查询,在某些知识库中可能需要对女主角和配音演员这两个关系进行两跳搜索,而在其他知识库中则只需要对主要配音演员这一个关系进行搜索。在这些情况下,多轮机制赋予了LLM自主探查和重新访问知识库的能力,这可能会产生更好的结果,但也会增加成本。

其次,受限于通过API访问GPT-4的费用,在具有代表性但规模较小的数据集上进行了KnowledGPT实验。虽然实验结果验证了KnowledGPT的有效性,但我们希望在完整基准上进行更全面的评估,以便更好地将KnowledGPT与相关方法进行比较。

参考文献

1、https://arxiv.org/abs/2308.11761.pdf

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

​​​       

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy