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

我们继续来看大模型与知识图谱结合的话题,这两个 本身就是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引擎的知识增强生成框架,用于构建知识增强的严格决策制定和信息检索知识服务。地址:https://github.com/OpenSPG/KAG

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),https://www.yuque.com/eosphoros/dbgpt-docs/bex30nsv60ru0fmx

下面简单做个思想对比:

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总结。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值