LLM如何理解图数据? Graph+LLM综述

news2025/1/12 23:16:29

对图推理(RoG):忠实可解释的大语言模型推理方法(ICLR2024)

https://github.com/RManLuo/reasoning-on-graphs
在这里插入图片描述

推理图(Reasoning on Graphs, RoG)提出了一个计划-检索-推理框架,该框架的核心流程包括以下几个步骤:

  • 规划生成(Planning Generation):给定一个问题,首先使用大型语言模型(LLM)生成若干个基于知识图谱(KG)的关系路径作为推理规划。这些关系路径捕捉了实体间的语义关系,并被用作推理答案的规划。
  • 路径检索(Path Retrieval):利用生成的推理规划,从知识图谱中检索有效的推理路径。这一步确保LLM能够获取最新的知识,并基于这些路径进行推理。
  • 推理(Reasoning):基于检索到的推理路径,LLM进行推理并生成答案,同时解释推理过程。

通过将关系路径视为计划,将我们的RoG描述为一个优化问题,其目的是通过生成关系路径z作为计划,最大化从知识图G中推理出问题q的答案的概率

两个组成部分

1)一个规划模块,该模块生成以KGs为基础的关系路径作为忠实计划;

2)检索推理模块,首先根据计划从KGs中检索有效的推理路径,然后根据检索到的推理路径进行忠实推理,生成具有可解释解释的答案

规划模块:在规划优化中,我们的目标是将知识从KGs中提取到llm中,以生成忠实关系路径作为规划。这可以通过最小化忠实关系路径Q(z)的后验分布的KL散度来实现,这可以通过KGs中的有效关系路径来近似。

推理模块·:推理模块以问题q和一组推理路径Wz生成答案a。同样,我们设计推理指令提示符,引导llm根据检索到的推理路径Wz进行推理。

附RoG解读
https://www.53ai.com/news/knowledgegraph/2024071214865.html
https://blog.csdn.net/weixin_44466434/article/details/137135162
https://www.53ai.com/news/knowledgegraph/2024071214865.html

GraphGPT:让大模型读懂图数据(SIGIR’2024)

https://github.com/HKUDS/GraphGPT

背景:

大语言模型与图学习结合面临的三大挑战:

一是如何有效地将图的结构信息与语言空间进行对齐,使得模型能够同时理解图的结构和语义信息;

二是如何设计适当的指令使得大模型理解图数据中的结构信息;

三是如何赋予大语言模型图学习下游任务的逐步推理能力,从而逐步推断出更复杂的关系和属性。

GraphGPT

1. 用“文本-图”对齐编码结构信息

在 GraphGPT 中,图结构编码器的选择是非常灵活的,可以利用各种基础 GNN 架构从多种图预训练范式中获得。
该研究探索了多种图结构编码方式,确定以对比的方式将文本信息融入图结构的编码过程中。GraphGPT模型框架直接将带有预训练参数的图编码器集成进来,无缝地整合图编码器的功能。
在这里插入图片描述
2. 两阶段图指令微调

首先采用自监督的指令微调策略,构建结构感知的图匹配任务,指导语言模型利用自然语言标签来识别图中的各个节点。图匹配任务的指令包括三个部分:i)图信息,ii)人类问题,和iii)GraphGPT 的回应。

在图匹配任务的上下文中,指令包括指示符token和一个被打乱的节点文本信息列表。在微调训练过程中,采用轻量级对齐投影策略,固定大语言模型和图编码器的参数,仅专注于优化投影器的参数。

在第二阶段,通过使用任务特定的图指令对大语言模型进行微调,引导模型生成更适合当前图学习任务的响应,进一步提高模型在处理各种图学习任务时的适应性和性能。

这个指令提示语言模型基于图结构数据和伴随的文本信息来预测中心节点的类别。这个阶段的微调使用第一阶段训练得到的结构感知投影器的参数作为初始状态,保持大语言模型和图编码器的参数不变,仅专注于优化前一阶段的投影器的参数,确保大语言模型进一步与下游任务对齐,增强其理解和解释图结构的能力。

指令微调方法的两阶段策略中大语言模型和图编码器的参数都被冻结,只有“图-文”对齐投影器进行了微调。

3.融合思维链方法

为了进一步优化性能,生成的思维链指令数据与之前为任务特定指令微调阶段制定的指令结合起来,进行图指令的微调。

4. 效果:

恰当的数据混合策略能显著提升 GraphGPT 在多种场景下的表现。引入链路预测指令后,模型在节点分类上的表现得到了显著提升。

而在加入节点分类后,链路预测的效果也超越了其他模型。

融合了不同任务的指令后,模型展示了其在处理各种图学习任务并将知识迁移到其他未曾接触过的数据集的能力。

附GraphGPT解读:https://www.163.com/dy/article/IUCSNLGQ055673VY.html

微软 GraphRAG: Unlocking LLM discovery on narrative private data

https://github.com/microsoft/graphrag

局限性:传统的RAG系统擅长于检索和生成局部查询的答案,但在需要对整个数据集进行主题摘要的全局查询方面表现不佳。

Graph RAG:第一个提出知识图谱+检索增强生成的方法,目的是解决大模型在利用外部知识回答问题时,原生的RAG方法难以有效回答QFS(查询聚焦摘要)问题。

索引+查询:索引过程利用LLM提取出节点(如实体)、边(如关系)和协变量(如 claim),然后利用社区检测技术对整个知识图谱进行划分,再利用LLM进一步总结。最终针对特定的查询,可以汇总所有与之相关的社区摘要生成一个全局性的答案。

索引过程

步骤 1:处理文本块

将输入文档转换为 TextUnits。使用文本分段技术将文档进行分块,文本块还作为提取实体和关系的来源,后续便于追溯到原始文本。

文本块的粒度:较长的文本块需要更少的LLM调用来进行提取,有更高的效率和低成本,但在较长的LLM上下文窗口中会出现召回率下降的问题,即提取实例不充分,有遗漏情况。

在这里插入图片描述
步骤 2:图提取

从每个文本块中识别和提取图节点和边的实例。这个过程是为了从文本中提取结构化信息,特别是识别实体及其关系。通过优化提示和多轮收集,确保即使在处理大块文本时,也能保持高质量的提取结果
在这里插入图片描述

1. 实体识别:

使用一个多部分的LLM(大型语言模型)提示,首先识别文本中的所有实体。
实体包括名称、类型和描述。

2. 关系识别:

接下来,识别清晰相关的实体之间的关系。
包括关系的源实体和目标实体及其关系的描述。

3. 输出形式:

实体和关系都作为一个包含分隔元组的列表输出。

步骤 3:图增强

在这里插入图片描述
社区检测

在此步骤中,我们使用分层莱顿算法生成实体社区的层次结构。此方法将对我们的图应用递归社区聚类,直到达到社区规模阈值。这将使我们能够了解图的社区结构,并提供一种在不同粒度级别上导航和总结图的方法。

图嵌入

在此步骤中,我们使用 Node2Vec 算法生成图中节点的向量表示。这将使我们能够理解图的隐式结构,并提供额外的向量空间,以便在查询阶段搜索相关概念。

步骤 4:社区总结:Community Summarization

目前,我们有一个实体和关系的图、实体的社区层次结构以及 node2vec 嵌入。

现在,我们希望基于社区数据并为每个社区生成报告。这让我们可以从多个粒度点对图表有一个高层次的了解。例如,如果社区 A 是顶级社区,我们将获得有关整个图表的报告。如果社区是较低级别的,我们将获得有关本地集群的报告。

在这里插入图片描述

生成社区报告
 在此步骤中,我们使用 LLM 生成每个社区的摘要。这将使我们能够了解每个社区中包含的独特信息,并从高级或低级角度提供对图表的范围理解。这些报告包含执行概述,并引用社区子结构中的关键实体、关系和声明。

总结社区报告
 在此步骤中,每个社区报告都会通过 LLM 进行总结,以供摘要使用。

社区嵌入
 在此步骤中,我们通过生成社区报告、社区报告摘要和社区报告标题的文本嵌入来生成我们社区的向量表示。

步骤 5:文件处理

处理文档图谱核心步骤包括文本块图谱的创建文档的向量化表示

在这里插入图片描述
链接到 TextUnits
 在此步骤中,我们将每个文档链接到第一阶段创建的文本单元,创建文本块之间的上下文关系。这使我们能够了解哪些文档与哪些文本单元相关。

文档嵌入
 在此步骤中,我们使用文档切片的平均嵌入来生成文档的向量表示。我们对不重叠的块重新分块文档,然后为每个块生成嵌入。我们创建这些块的平均值,并按标记计数加权,并将其用作文档嵌入。这将使我们能够理解文档之间的隐式关系,并帮助我们生成文档的网络表示。

步骤 6:网络可视化

在这里插入图片描述

查询过程

查询引擎是 Graph RAG 库的检索模块。它是 Graph RAG 的核心组件之一。它负责以下任务:

  • 本地搜索
  • 问题生成
  • 全局搜素

本地搜索

基于实体的推理:本地搜索方法通过将 LLM 提取的知识图谱中的相关数据与原始文档的文本块相结合来生成答案。此方法适用于需要了解文档中提到的特定实体的问题(例如,洋甘菊的治疗功效是什么?)。

方法

在这里插入图片描述

给定用户查询和(可选)对话历史记录,本地搜索方法会从知识图谱中识别出一组与用户输入在语义上相关的实体。这些实体可作为知识图谱的访问点,从而提取更多相关详细信息,例如连接实体、关系、实体协变量和社区报告。此外,它还会从与已识别实体相关的原始输入文档中提取相关文本块。然后对这些候选数据源进行优先排序和筛选,以适应预定义大小的单个上下文窗口,该窗口用于生成对用户查询的响应。

问题生成

基于实体的问题生成:问题生成方法将知识图谱中的结构化数据与输入文档中的非结构化数据相结合,生成与特定实体相关的候选问题。此功能获取用户查询列表并生成下一个候选问题。这对于在对话中生成后续问题或为调查员生成问题列表以深入研究数据集非常有用。

方法:给定先前用户问题的列表,问题生成方法使用与本地搜索相同的上下文构建方法来提取和优先处理相关的结构化和非结构化数据,包括实体、关系、协变量、社区报告和原始文本块。然后,这些数据记录被放入单个 LLM 提示中,以生成代表数据中最重要或最紧急的信息内容或主题的候选后续问题

全局搜索

基于整个数据集推理:全局搜索方法通过以 map-reduce 方式搜索所有 AI 生成的社区报告来生成答案。这是一种资源密集型方法,但通常可以很好地回答需要了解整个数据集的问题(例如,本笔记本中提到的药材最重要的价值是什么?)。
在这里插入图片描述
上图是一个经典的 MapReduce 原理图结构,包含以下主要步骤(包含全局 GraphRAG 流程的简单注解)。

  1. 将 input 的文件拆分成 splits,由于测试用的文件较小,所以每个文件作为一个 split,并将文件按行分割。这一步由 mapreduce 框架自动完成。(通过向量检索语义相关的社区)
  2. 将分割好的文件交给用户定义的 map 方法进行处理,生成<key,value>对。(生成社区和用户问题相关程度的分值,和社区节点本身组成 MAP)
  3. 得到 map 方法输出的<key,value>对后,shuffle 过程,会把相同 key 值相同的放到一起。(社区结果基于与问题的相关度做 Shuffle,可以理解成分组)
  4. Reduce 过程,把 key 值相同 value 值累加,得到新的<key,value>对,并作为 word count 的输出结果。(组内综合打分后排序过滤 0 分的结果,然后由 LLM 生成回复)

Baseline RAG 很难处理需要汇总整个数据集的信息才能得出答案的查询。诸如“数据中的前 5 个主题是什么?”之类的查询表现不佳,因为 Baseline RAG 依赖于对数据集内语义相似的文本内容进行向量搜索。查询中没有任何内容可以将其引导至正确的信息。

但是,使用 GraphRAG,我们可以回答这些问题,因为 LLM 生成的知识图谱的结构告诉我们整个数据集的结构(以及主题)。这允许将私有数据集组织成预先汇总的有意义的语义集群。使用我们的全局搜索方法,LLM 在响应用户查询时使用这些集群来总结这些主题。

方法:
在这里插入图片描述
给定用户查询和(可选)对话历史记录,全局搜索方法使用来自图的社区层次结构指定级别的 LLM 生成的社区报告集合作为上下文数据,以 map-reduce 方式生成响应。在此 map 步骤中,社区报告被分割成预定义大小的文本块。然后使用每个文本块生成一个中间响应,其中包含一个要点列表,每个要点都附有数字评级,表明该要点的重要性。在此步骤中,reduce 从中间响应中筛选出的一组最重要的要点被汇总并用作上下文来生成最终响应。

全局搜索响应的质量可能在很大程度上受到选择用于获取社区报告的社区层级的影响。较低层级的报告较为详细,因此往往会产生更全面的响应,但由于报告数量较多,生成最终响应所需的时间和 LLM 资源也可能会增多。

附GraphRAG解读:
https://zhuanlan.zhihu.com/p/707759736(源码解读)
https://microsoft.github.io/graphrag/posts/index/overview/(官方)
https://blog.csdn.net/m0_46686599/article/details/140608213
https://blog.csdn.net/superman_xxx/article/details/140699573
https://gitcode.com/gh_mirrors/gr/graphrag/tree/main/graphrag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『基础』OS-1计算机系统概述_操作系统发展历程及它的运行环境

操作系统发展历程 常考的三种操作系统对比 批操作系统脱机使用计算机&#xff1b;作业是分批处理的&#xff1b;系统内多道程序并发执行&#xff1b;交互能力差分时操作系统多个用户同时使用计算机&#xff1b;人机交互强&#xff1b;具有每个用户独立使用计算机的独占性&…

学习大数据DAY42 hive 分桶表

目录 分桶表 分桶表注意事项 hive 分桶表-创建分桶表 hive 排序关键字 hive 排序语句 上机练习 分桶表 分区提供一个隔离数据和优化查询的便利方式。不过&#xff0c;并非所有的数据集都可形 成合理的分区。对于一张表或者分区&#xff0c;Hive 可以进一步组织成桶&…

8.21T1 草莓蛋糕(拆max + 权值线段树)

http://cplusoj.com/d/senior/p/NODSX2302A 看到式子&#xff1a; 我们就应该想到拆max 若 我们可以整理推出&#xff1a; 记&#xff1a; 由 L L L 算 C C C&#xff0c;我们满足 h a ≤ h b h_a\le h_b ha​≤hb​&#xff0c;找 c c c 的最小值 C C C 算 L L L 同…

05、Redis实战:优惠券秒杀、全局唯一ID、超买乐观悲观锁、一人一单逻辑、分布式锁、分布式锁的原子性

3、优惠卷秒杀 3.1 -全局唯一ID 每个店铺都可以发布优惠券&#xff1a; 当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这张表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显受单表数据量的限制 场景分析&#x…

第2章-02-网页中的Document元素

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

2024思维导图工具评测:性能、易用性全面对比

现在工作日常要处理的数据纷繁复杂&#xff0c;如何高效地组织、理解和记忆这些信息&#xff0c;成为了每个人都需要面对的挑战。不知道你有没有尝试过使用思维导图软件呢&#xff1f;这次我们看看它们是如何帮助我们优化思维、提升效率的。 1.福晰思维导图 链接一下&#xf…

数据结构day04(队列 Queue 循环队列、链式队列)

目录 【1】队列 Queue 1》 队列的定义 2》循环队列 3》链式队列 【1】队列 Queue 1》 队列的定义 队列&#xff08;queue&#xff09;是只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表。 队列是一种先进先出&#xff08;First In First Out&#xf…

Day23 第十站 文件IO的多路复用

#include <myhead.h>void insert_client(int *client_arr,int *len,int client) {//client_arr[n]{3,4} len&client_count,client_count2;//添加 5 client_arr[2(*len)]5(client)client_arr[*len]client;(*len); } int find_client(int *client_arr,int len,int clie…

Spring DI 数据类型—— set 方法注入

首先新建项目&#xff0c;可参考 初识IDEA、模拟三层--控制层、业务层和数据访问层 一、spring 环境搭建 &#xff08;一&#xff09;pom.xml 导相关坐标 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.or…

代码随想录算法训练营第二十二天| 77. 组合 216.组合总和III 17.电话号码的字母组合

77. 组合 题目&#xff1a; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2&#xff1a…

VAuditDemo安装漏洞

目录 VAuditDemo安装漏洞 index.php header.php config.php lib.php install.php 分析结果 漏洞利用 第一步&#xff1a;删除install.lock文件&#xff0c;访问 install.php 抓包 第二步&#xff1a;通过审计构造payload 第三步&#xff1a;修改抓包请求内容&#x…

客户分级管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示为什么选择我官方认证闲鱼玩家&#xff0c;服务很多代码文档&#xff0c;百分百好评&#xff0c;战绩可查&#xff01;&#xff01;入职于互联网大厂&#xff0c;可以交流&#xff0c;共同进步。有保障的售后 代码参考数据库参考源码获取…

《python语言程序设计》2018版第7章第10题设计一个名为time的类,包括hour minute second

#main代码段 def main():a int(time.time())total_second int(a)current_second total_second % 60total_minutes total_second // 60current_minute total_minutes % 60total_hours total_minutes // 60current_hour total_hours % 24b exCode07.Time(current_hour,cu…

SpringBoot中生成二维码的案例实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

基于数据复杂度的数据库选型

数据模型的选择对于 IT 系统的开发至关重要&#xff0c;它不仅决定了数据存储和处理的方式&#xff0c;影响系统的性能、扩展性以及维护性等。本质上来说&#xff0c;不同的数据模型反映了我们对业务问题的不同思考和抽象程度。 今天我们从不同数据模型对于复杂数据和关系的支…

定制化三防平板:为专业领域打造的坚固解决方案

在科技时代&#xff0c;移动设备已经成为各行各业不可或缺的工具。然而&#xff0c;对于一些特殊行业&#xff0c;如军事、野外勘探、物流、医疗和制造业等&#xff0c;普通商用平板往往无法满足其严苛的工作环境需求。三防平板&#xff0c;以其卓越的防护性能和高度的定制化能…

有了这4款工具,你就知道电脑怎么录屏了!

电脑屏幕录屏这个问题很多人都会碰到&#xff0c;比如教学视频录制&#xff0c;游戏技巧分享&#xff0c;软件操作演示等等。因为场景众多&#xff0c;电脑自带的录屏功能不一定能满足&#xff0c;所以借助第三方工具是一个很有效的办法。如果大家不知道如何录屏&#xff0c;可…

网络安全-安全策略初认识

文章目录 前言理论介绍1. 安全策略1.1 定义&#xff1a;1.2 关键术语&#xff1a; 2. 防火墙状态监测 实战步骤1&#xff1a;实验环境搭建步骤2&#xff1a;配置实现 总结1. 默认安全策略2. 自定义安全策略3. 防火墙状态会话表 前言 who&#xff1a;本文主要写给入门防火墙的技…

【Vue3】集成 Ant Design Vue

【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗…

SX_gitlab可视化操作c语言知识_17

gitlab可视化操作技巧: Merge into current branch直接将远程wjc_GNSS分支的数据拉下来同步到本机当前的分支代码&#xff0c;执行的是合并操作&#xff0c;即多的模块会添加到本地分支&#xff0c;有冲突的地方不行得rebase覆盖才行 修改完代码先暂存更改再在暂存区写入备注&a…