知识图谱与大模型结合思路再总结:时间线看三大方向的探索

摘要:我将这种结合分为三个方向,一个是大模型与知识图谱在训练路线及结合的路线探索,一个是知识图谱用于大模型幻觉方向总结,一个是大模型与RAG结合的GraphRAG总结。

文章转自公众号老刘说NLP

我们继续来看大模型与知识图谱结合的话题,这两个 本身就是LLMs(参数知识)和KGs(显式知识)的一个争论,关于这个结合,我们已经讲了很多。

一年多过去,已经涌现出了许多关于大模型与知识图谱结合的工作,我利用周末时间做了个综述的综述总结,归置了一下。

我将这种结合分为三个方向,一个是大模型与知识图谱在训练路线及结合的路线探索,一个是知识图谱用于大模型幻觉方向总结,一个是大模型与RAG结合的GraphRAG总结。

按照时间线和方向线进行论述,会很有趣,两种技术的结合,在技术上逐渐明朗。

多总结,多回顾,多思考,会有更多收获,供大家一起参考。

一、大模型与知识图谱在训练路线及结合的路线探索

首先,关于知识图谱自身的进展,我们先不多说,可以看《On the Evolution of Knowledge Graphs: A Survey and Perspective》(https://arxiv.org/pdf/2306.11489),可看看知识图谱从静态知识图谱到动态、到时序再到事件图谱的演变。

我们切入正题,先看结合的综述,从最早的《A survey of knowledge enhanced pre-trained language models》(https://arxiv.org/pdf/2211.05994)说起,这个是较早的综述了,当时chatgpt还未冒出来,所以大家的关注单,都还是如何解决预训练语言模型(PLMs)在自然语言处理(NLP)任务中的知识表示和推理能力不足的问题。尽管PLMs在下游任务中表现出色,但由于缺乏外部知识的显式表示,它们在推理能力方面存在局限,所以做了知识增强预训练语言模型(KE-PLMs)的研究,从知识源类型、知识粒度和应用三个方面进行分类和总结。

首先,论文将KE-PLMs分为四类知识:语言学知识、文本知识、知识图谱和规则知识。对于语言学知识,包括词汇知识和句法树知识,包有LIBERT、SenseBERT、SKEP等方法。对于文本知识,有KNN-LM、REALM等方法。对于知识图谱,有ERNIE、KEPLER等方法。对于规则知识,有RuleBERT、PTR等方法。

而在NLG中的知识融合方面,可以分为基于检索的方法和基于知识图谱的方法。对于基于检索的方法,有MemNet、RAG等方法。对于基于知识图谱的方法,有CE-PR、MRG等方法。

自从大模型出来后,大模型对知识图谱产生了一定的冲击,所以,大家开始在想,知识图谱应该和大模型如何进行结合,所以,在去年6月,《Unifying Large Language Models and Knowledge Graphs: A Roadmap》(https://arxiv.org/pdf/2306.08302)中做了个很好的总结,从中可以看到一些指引。

这个工作是比较早期的一个展望,然后后期开始从不同的角度来开始衍化的。

也是同6月,《Give Us the Facts: Enhancing Large Language Models with Knowledge Graphs for Fact-aware Language Modeling》(https://arxiv.org/pdf/2306.11489),则很顺应当时大模型的训练过程,总结了出知识图谱参与大模型训练各个阶段的一些方案。

之后,在去年8月份,《Large language models and knowledge graphs: Opportunities and challenges》(https://arxiv.org/pdf/2308.06374),则讨论了LLMs(参数知识)和KGs(显式知识)的常见争论点,并探讨了结合这两者的机会和愿景,其中提到几个思路,这个当时是比较早的。

例如,实体解析和匹配(使用LLMs帮助标注训练数据,减少手动标注的工作量。LLMs可以生成高质量的规则库,用于实体匹配);表格数据处理(利用Transformers模型处理表格数据,将其转换为序列形式输入LLMs,方法包括TURL、RPT和Starmie等);文本知识提取(使用LLMs进行命名实体识别(NER)、关系提取、事件提取和语义角色标注(SRL),利用LLMs的上下文理解能力,无需大量领域特定的训练数据);KG构建(使用LLMs进行链接预测和三元组提取,包括Pretrain-KGE、MADLINK、KEPLER等);本体模式构建(利用LLMs从KG中挖掘约束和规则,进行本体细化和对齐,包括DeepOnto和BERTSubs等);KGs用于LLMs训练(将KGs作为预训练语料库,注入结构化知识,包括Knowledge-Enhanced Language Models和Neuro-Symbolic KBs);检索增强(使用KGs作为外部知识源,增强LLMs的推理能力,包括RAG和FiD等);

而在应用侧,也可以从可视化的角度进行切入,例如,今年4月份,《A Preliminary Roadmap for LLMs as Assistants in Exploring, Analyzing, and Visualizing Knowledge Graphs》(https://arxiv.org/pdf/2404.01425)这个工作,介绍了如何利用大模型(LLMs)来辅助用户在知识图谱(KGs)中的数据探索、分析和可视化的问题。

然后,在今年6月份,也就是2024年6月,出现了 《Research Trends for the Interplay between Large Language Models and Knowledge Graphs》(https://arxiv.org/pdf/2406.08223) ,这个在内容编排上跟roadmap那篇很类似,例如,抛出来一些问题,从发文统计的角度做了一些分析,例如,如何利用LLMs为KG实体生成描述性文本信息;如何在本体生成中使用LLMs;LLMs如何帮助检测KG内的不一致性;LLMs如何通过事实检查提高KG的准确性、一致性和完整性;LLMs如何为KG问答提供准确答案;LLMs如何有效地从自然语言文本生成查询(Text to SPARQL或Cypher)。

当然,知识图谱除了意,还有形,所以可以再扩展到Graph上,按照这条线,就可以引申出幻觉以及知识增强方向。

二、知识图谱用于大模型幻觉方向总结

然后,还有个方向,那就是大模型的幻觉问题受到广泛关注,这里几个方向,代表的,《Can Knowledge Graphs Reduce Hallucinations in LLMs? : A Survey》(https://arxiv.org/pdf/2311.07914)这篇论文提出了三种主要的知识图谱增强方法来减少LLM中的幻觉,并对其有效性进行了系统评估。

一个是知识感知推理(Knowledge-Aware Inference),包括KG增强的检索(KG-Augmented Retrieval),使用检索增强生成模型(如RAG和RALM)在生成过程中提供相关文档,减少幻觉。如KAPING方法通过匹配问题中的实体从知识图中检索相关三元组,增强零样本问答性能;KG增强的推理(KG-Augmented Reasoning), 将复杂的多步任务分解为可管理的子查询,使用一系列中间推理步骤提高LLM的复杂推理能力。Chain of Thought(CoT)和Tree of Thoughts(ToT)等方法模仿人类的逐步推理过程,帮助理解和调试模型的推理过程;KG控制生成(KG-Controlled Generation),使用语言模型生成知识,然后通过探测或API调用完成任务,如使用Codex解析上下文并生成任务API调用,KB-Binder则利用知识图谱生成逻辑草稿以完成答案;

一个是知识感知训练(Knowledge-Aware Training),包括两个,一个是知识感知预训练(Knowledge-Aware Pre-Training),在模型预训练阶段,通过将知识图谱集成到训练数据中,提高LLM的理解能力和文本生成质量。ERNIE和Rosset等的方法通过掩码语言建模和知识引导输入增强语义理解;一个是知识感知微调(Knowledge-Aware Fine-Tuning),在特定任务或领域上微调预训练模型,使用相关数据集和架构优化模型权重。SKILL和KGLM等方法通过合成句子和实体关系嵌入层提高任务性能;

一个是知识感知验证(Knowledge-Aware Validation),使用结构化数据作为事实检查机制,提供模型验证信息的参考。KGLM和SURGE等方法通过知识图谱生成相关实体和事实,增强模型的解释性和可靠性。

进一步的,也就是这个月,《Knowledge Graphs, Large Language Models, and Hallucinations: An NLP Perspective》(https://arxiv.org/abs/2411.14258),这工作介绍了知识图谱在缓解大模型生成虚假信息(即幻觉)方面的潜力。

关于知识图谱缓解这种幻觉的路径说过很多,这是从幻觉这个角度切入的。并从不同的角度来做了分析,根据其底层架构,将不同的知识整合模型进行分类。这些模型可以在LLMs的不同阶段(如预训练、推理、生成后)整合外部知识。

其中:

在预训练阶段,将KG triples作为训练数据的一部分,通过掩码实体预测任务将KG triples与原始文本输入融合,如Ernie 3.0模型,当然也可以直接转为plain text丢入大模型中进行训练,前面说的《Give Us the Facts: Enhancing Large Language Models with Knowledge Graphs for Fact-aware Language Modeling》中有相应论述。

在推理阶段,通过提示将知识注入LLMs。常见的方法是将知识K和查询Q成对地提供给LLMs,形成P={K,Q},用于RAG应用,我们说到的GraphRAG系列就是这类,一般来说,常见的方案,包括三种,一种是Vanilla,直接提示模型生成答案;一种是Chain of Thought(CoT),通过生成更全面和详细的解释来提高答案的可靠性;也或者是基于外部文本知识进行修正,如Self-Correcting with Tool-Interactive Critiquing(CRITIC)基于网络文本的修正答案;也可以是Question-relevant Knowledge Retrieval(QKR),利用知识图谱中的事实作为提示来增强答案的正确性,这个就是同一个道理。

在后生成阶段,在生成答案后,通过外部KG验证答案的事实性,并根据验证结果对原始答案进行修正。

不过修正这块,有个思路需要注意,就是如何基于知识图谱来进行大模型幻觉检测,比较直接的检测方法就是通过LLM提示提取LLM输出中的原子声明作为子图,并比较每个三元组的蕴含关系与给定文本上下文。

例如,基于命名实体(组织、地点、人物等)提取源文本和生成文本之间的KG子图,然后比较两个图之间的对齐情况,通过阈值对齐来分类幻觉。

但如果围绕命名实体构建KG,这可能会导致更抽象概念上的信息丢失,所以可以对更全面的关系提取进行改进。

关于评估这块,可以看看 《GraphEval: A Knowledge-Graph Based LLM Hallucination Evaluation Framework》(https://arxiv.org/pdf/2407.10793) ,这个基于知识图谱的幻觉检测框架,用于评估大模型的回复,并检测与提供的知识不一致的地方,其实现思路也很有趣:

首先从LLM输出中构建知识图谱,然后迭代检查每个三元组是否在给定上下文中事实一致。如果任何三元组被识别为不一致,输出将被视为事实不一致,并可能返回不一致的三元组以提供可解释性。关于这块的更多细节,我在 《利用知识图谱检测并修正大模型幻觉:GraphEval策略的简单粗暴实现思路》(https://mp.weixin.qq.com/s/XUxUxL68FEEPC1vISX82rg) 中做了介绍,其也提到了一个后期矫正的思路,先使用GraphEval检测方法识别出知识图谱中可能包含幻觉的三元组,然后将这些三元组和上下文一起输入到LLM中,生成更正后的三元组。最后,将原始LLM输出中的信息替换为更正后的三元组中的信息,

而进一步的,可以看另有个更pipeline式的方法,《Mitigating large language model hallucinations via autonomous knowledge graph-based retrofitting》(https://arxiv.org/pdf/2311.13314),提出一种五阶段流水线方法,通过在生成答案后查询外部KG来校验并修正LLM输出的事实性,如下图:

包括5个步骤,首先,声明提取阶段,从生成的草稿响应中提取所有需要验证的事实声明。

其次,实体检测和知识图谱检索,识别提取声明中的关键实体,并从知识图谱中检索这些实体的本地子图;

接着,事实选择,从检索到的三元组中选择相关的事实声明,并将这些三元组分成若干块,利用LLMs分别提取每个块中的关键三元组。

然后,声明验证,利用LLMs将模型生成的声明与知识图谱中的事实信息进行比较,提出详细的修订建议。

最后,响应回滚,根据验证结果回滚生成的草稿响应,将整个KGR过程合并为一个单一的提示,使LLMs能够理解KGR过程并基于验证建议增强对事实回滚的理解。

看一个完整的例子:

三、大模型与RAG结合的GraphRAG总结

到了后面,就流行RAG了,传统RAG方法未能有效捕捉文本间的引用关系等结构化信息。RAG在拼接文本片段时可能导致上下文过长,产生“中间迷失”现象。RAG只能检索部分文档,难以全面把握全局信息,影响查询重点摘要(QFS)等任务的表现。

所以,当前Graph增强RAG受到广泛关注,例如《Graph Retrieval-Augmented Generation: A Survey》(https://arxiv.org/pdf/2408.08921),回顾了GraphRAG技术,提出了一个统一的工作流程,包括图索引、图引导检索和图增强生成。

首先,构建和索引图数据库,使其与下游任务对齐。图数据库可以来自公共知识图谱或自构建的数据源。索引过程包括映射节点和边的属性、建立节点间的指针以及组织数据以支持快速遍历和检索操作。

其次,根据用户查询从图数据库中提取相关信息。将用户查询表示为自然语言,计算查询与图数据之间的语义相似度,最终选择与查询最相关的子图元素。 给定用户查询,检索阶段旨在从知识图中提取最相关的元素(如实体、三元组、路径、子图)。为了提高检索效率,通常会采用多种检索粒度(如节点、三元组、路径、子图)和增强技术(如查询扩展和知识合并)。

最后,基于检索到的图数据生成响应。将查询和检索到的图元素输入生成器,生成器结合查询和图数据生成最终响应。

其实,目前,这块在工业领域有很多案例了,我们之前说过lightrag,nanoRag这些,也说过一些代表的框架,在 《现有RAG框架非完全总结:7个GraphRAG+17个传统RAG框架归纳》(https://mp.weixin.qq.com/s/4AEC-JWccUgNLP1xp9RgVw) 中有过讲述,

1、LightRAG,简单快速的Graphrag检索增强生成。地址:https://github.com/HKUDS/LightRAG

2、GraphRAG-Ollama-UI,使用Ollama的GraphRAG,带有Gradio UI和额外功能。地址:https://github.com/severian42/GraphRAG-Ollama-UI

3、microsoft-GraphRAG,一个模块化的基于图的检索增强生成(RAG)系统。地址:https://github.com/microsoft/graphrag

4、nano-GraphRAG,一个简单、易于修改的GraphRAG实现。地址:https://github.com/gusye1234/nano-graphrag

5、KAG,基于OpenSPG引擎的知识增强生成框架,用于构建知识增强的严格决策制定和信息检索知识服务。地址:

6、Fast-GraphRAG,GraphRAG的轻量化版本。地址:https://github.com/circlemind-ai/fast-graphrag

7、DBGPT,在原社区摘要增强的GraphRAG基础上,引入了文档结构(Document Structure)索引,拓展了 GraphRAG 中对于 Graph 的定义范畴:知识图谱(Knowledge Graph)= 三元组有向图 (Triplets Graph)+ 文档结构图(Document Structure Graph),

下面简单做个思想对比:

GraphRAG(by Microsoft,https://github.com/microsoft/graphrag) 利用LLMs构建基于实体的知识图谱,增强查询重点摘要(QFS)任务。该系统通过预生成相关实体群体的社区摘要,捕获文档集合内的局部和全局关系;

GraphRAG(by NebulaGraph,https://www.nebula-graph.io/posts/graph-RAG) 将LLMs集成到NebulaGraph数据库中,提供更智能和精确的搜索结果。该系统通过将查询嵌入到图结构中,利用LLMs进行更复杂的推理和信息检索;

GraphRAG(by Antgroup,https://github.com/eosphoros-ai/DB-GPT) 在文档检索阶段,使用LLMs提取三元组并存储在图数据库中。在检索阶段,识别查询中的关键词,定位图数据库中的对应节点,并使用广度优先搜索(BFS)或深度优先搜索(DFS)遍历子图。生成阶段将检索到的子图数据格式化为文本,并提交给LLMs进行处理;

NallM(by Neo4j,https://github.com/neo4j/NaLLM) 将Neo4j图数据库技术与LLMs结合,探索Neo4j与LLMs的协同作用,主要应用于自然语言接口到知识图谱、从非结构化数据创建知识图谱以及使用静态数据和LLM数据生成报告;

LLM Graph Builder(by Neo4j,https://github.com/neo4j-labs/llm-graph-builder) 自动构建知识图谱,适用于GraphRAG的图数据库构建和索引阶段。该系统主要利用LLMs从非结构化数据中提取节点、关系和它们的属性,并使用LangChain框架创建结构化知识图谱。

当然除了这个还有KAG,KAG: Boosting LLMs in Professional Domains via Knowledge Augmented Generation》(https://arxiv.org/pdf/2409.13731,https://github.com/OpenSPG/KAG/blob/master/README_cn.md),走垂域知识图谱多跳推理,也是一个思路。

总结

本文将大模型与知识图谱结合分为了三个方向,一个是大模型与知识图谱在训练路线及结合的路线探索,一个是知识图谱用于大模型幻觉方向总结,一个是大模型与RAG结合的GraphRAG总结。

按照时间线和方向线进行论述,会很有趣,两种技术的结合,在技术上逐渐明朗,大家多总结,多回顾,多思考,会有更多收获。


来源:360亿方云

相关推荐