小白学大模型 RAG:GraphRAG 概念、组成和流程

最近这一两周看到不少互联网公司都已经开始秋招提前批了。

不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。

最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑,分享技术面试中的那些弯弯绕绕。

合集:

《大模型面试宝典》(2024版) 正式发布!

喜欢本文记得收藏、关注、点赞。更多实战和面试交流,文末加入我们


什么是GraphRAG?

GraphRAG是一种结合了检索(Retrieval)和生成(Generation)的技术,它通过利用外部知识库来增强大型语言模型(LLMs)的性能,有效解决了模型可能出现的“幻觉”问题、领域知识缺失以及信息过时等问题。GraphRAG通过图结构信息,能够更精确地检索和生成与上下文相关的响应。

图片

https://arxiv.org/pdf/2408.08921

技术概述

GraphRAG技术通过在生成过程中融入检索组件来提升生成内容的质量和相关性。与传统的RAG相比,GraphRAG能够从预先构建的图数据库中检索包含关系知识的图元素,如节点、三元组、路径或子图,从而更准确地捕捉关系信息,并生成更符合上下文的响应。

图片

工作流程

GraphRAG的工作流程主要包括三个阶段:基于图的索引(Graph-Based Indexing)、图引导检索(Graph-Guided Retrieval)和图增强生成(Graph-Enhanced Generation)。在索引阶段,构建图数据库并建立索引以支持快速检索;检索阶段根据用户查询提取最相关的图元素;生成阶段利用检索到的图数据生成有意义的输出或响应。

图片

GraphRAG 与 其他技术对比

RAG

RAG是一种结合了外部知识与大型语言模型的技术,它通过整合特定领域的信息来确保事实性和可信度。

从广义上讲,GraphRAG可以被视为RAG的一个分支,它从图数据库而不是文本语料库中检索相关的关系知识。然而,与传统的基于文本的RAG相比,GraphRAG考虑了文本之间的关系,并将结构信息作为超出文本的额外知识加以整合。

LLMs on Graphs

GraphRAG与LLMs on Graphs的主要区别在于它们的应用重点和方法。LLMs on Graphs的研究通常集中在如何改进模型以处理图结构数据,而GraphRAG则利用图数据库来增强LLMs在特定查询任务中的表现,特别是在需要结构化信息和关系知识的情况下。

  • LLMs on Graphs主要关注如何将LLMs与GNNs结合,以改善对图数据的建模和分析能力。

  • GraphRAG专注于从图数据库中检索与查询相关的图元素,以增强LLMs的生成能力和上下文理解。

GraphRAG与KBQA

GraphRAG与KBQA密切相关,尤其是基于IR的KBQA方法,可以视为GraphRAG方法的一个子集,专注于下游应用。

  • KBQA:专注于基于知识库的事实问答,通常分为基于IR和基于SP的方法。

  • GraphRAG:虽然与KBQA中的IR方法有交集,但GraphRAG更广泛地应用于包括KBQA在内的多种任务,通过检索图数据库中的结构化信息来增强语言模型的生成能力。

GraphRAG背景知识

文本属性图 (Text-Attributed Graphs, TAGs)

在GraphRAG中使用的图数据可以统一表示为文本属性图(TAGs),其中节点和边都具有文本属性。形式上,一个文本属性图可以表示为 $ G = (V, E, A, {x_v}{v \in V}, {e{i,j}}_{i,j \in E}) $,其中:

  • 是节点集合,

  • 是边集合,

  • 是邻接矩阵,

  • 是节点的文本属性集合,

  • 是边的文本属性集合。

知识图谱(Knowledge Graphs, KGs)是文本属性图的一种典型形式,其中:

  • 节点是实体,

  • 边是实体之间的关系,

  • 文本属性是实体和关系的名称。

关键概念解释

  • 节点(Nodes):图中的顶点,代表实体或概念。

  • 边(Edges):连接节点的线,表示实体间的关系。

  • 邻接矩阵(Adjacent Matrix, A):一个矩阵,其中的元素表示节点间是否存在直接的边。

  • 文本属性(Textual Attributes):与节点和边相关联的文本信息,如名称或描述。

文本属性图是GraphRAG中信息组织和处理的基础,它允许系统利用图结构来捕捉实体间的关系,并使用文本属性来丰富信息的语义内容。这种格式为GraphRAG提供了一种灵活和强大的方式来整合和检索知识库中的信息,进而支持复杂的查询和生成任务。

图神经网络 (Graph Neural Networks, GNNs)

图神经网络是用于对图数据进行建模的深度学习框架。传统的GNN,例如图卷积网络(GCN)、图注意力网络(GAT)、图样本聚合(GraphSAGE),采用消息传递方式来获取节点表示。

消息传递机制

在第 层,每个节点表示 通过以下方式更新:

  • 表示节点 的邻居节点集合。

  • 表示消息函数,它基于节点、其邻居和它们之间的边来计算消息。

  • 表示聚合函数,它使用一种排列不变的方法(如均值、求和或最大值)来组合接收到的消息。

  • 表示更新函数,它使用聚合的消息来更新每个节点的属性。

在GraphRAG中的应用

在GraphRAG中,GNN可以用来获取检索阶段的图数据表示,以及对检索到的图结构进行建模。这意味着GNN有助于在GraphRAG的检索阶段通过学习节点和边的嵌入表示来捕捉图中的结构信息,这些信息可以用于后续的检索和生成任务。

关键概念解释
  • 节点表示 (Node Representation) :图中每个节点的数学表示,可以捕获节点的特征和上下文信息。

  • 消息函数 (Message Function, MSG) :定义了节点如何基于其邻居和边的信息生成消息。

  • 聚合函数 (Aggregation Function, AGG) :将来自邻居节点的消息进行整合的方法。

  • 更新函数 (Update Function, UPD) :根据聚合的消息更新节点表示的函数。

  • 读取函数 (Readout Function, READOUT) :将所有节点的表示合并为单一的全局图表示的方法。

GraphRAG概览

GraphRAG是一个框架,它利用外部结构化知识图谱来提高语言模型的上下文理解能力,并生成更明智的响应。GraphRAG的目标是从数据库中检索最相关的知识,从而增强下游任务的答案。这个过程可以定义为:

其中 是给定查询 和文本属性图 (TAG) 的最优答案, 是可能响应的集合。然后,我们使用图检索器 和答案生成器 联合建模分布 ,其中 是可学习参数,并使用总概率公式来分解。

图片

其中 是最优子图。由于候选子图的数量可能随着图的大小呈指数级增长,因此需要有效的近似方法。上述方程的第一行通过第二行来近似。具体来说,使用图检索器提取最优子图 ,然后生成器根据检索到的子图生成答案。

图片

GraphRAG三个主要阶段

  1. 基于图的索引 (Graph-Based Indexing, G-Indexing):
  • GraphRAG的初始阶段,目的是识别或构建与下游任务对齐的图数据库 ( G ) 并建立索引。

  • 图数据库可以来源于公共知识图谱、图数据或基于专有数据源构建,如文本或其他形式的数据。

  • 索引过程通常包括映射节点和边属性、建立连接节点之间的指针,以及组织数据以支持快速遍历和检索操作。

  1. 图引导检索 (Graph-Guided Retrieval, G-Retrieval):
  • 在基于图的索引之后,图引导检索阶段专注于根据用户查询或输入从图数据库中提取相关信息。

  • 给定用自然语言表达的用户查询 ( q ),检索阶段旨在从知识图中提取最相关的元素(例如实体、三元组、路径、子图)。

  1. 图增强生成 (Graph-Enhanced Generation, G-Generation):
  • 图增强生成阶段涉及基于检索到的图数据合成有意义的输出或响应。

  • 在这个阶段,生成器接收查询、检索到的图元素和可选的提示作为输入,以生成响应。

Graph-Based Indexing

图数据库的构建和索引是GraphRAG的基础,图数据库的质量直接影响GraphRAG的性能。

Graph Data

GraphRAG中使用的图数据按来源分为两类:开放知识图谱和自构建图数据。

  • Open Knowledge Graphs 开放知识图谱指来自公共可用存储库或数据库的图数据,使用这些知识图谱可以大幅减少开发和维护所需的时间和资源。

  • General Knowledge Graphs 通用知识图谱主要存储一般性、结构化的知识,通常依赖全球社区的集体输入和更新,确保信息库全面且持续更新。

索引方法

图数据的索引方法对于GraphRAG中的快速查询操作至关重要,通常包括图索引、文本索引和向量索引等方法。图索引保留整个图结构,方便访问边和邻近节点。文本索引将图数据转换为文本描述,允许基于文本的检索技术。向量索引将图数据转化为向量表示,促进快速检索和高效查询处理。

在实践中,通常更倾向于结合这些方法的混合方法,以优化GraphRAG系统中的检索效率和有效性。 索引过程通常包括映射节点和边属性、建立连接节点之间的指针,以及组织数据以支持快速遍历和检索操作。索引的粒度决定了检索阶段的粒度,对提高查询效率起着关键作用。

图片

图索引 (Graph Indexing)

图索引是最常用的方法,它保留了图的整个结构。这种方法确保对于任何给定节点,它的所有边和邻近节点都容易访问。在后续的检索阶段,可以使用经典的图搜索算法,如广度优先搜索(BFS)和最短路径算法,来促进检索任务。

文本索引 (Text Indexing)

文本索引涉及将图数据转换为文本描述,以优化检索过程。这些描述存储在文本语料库中,可以应用各种基于文本的检索技术,如稀疏检索和密集检索。一些方法使用预定义的规则或模板将知识图谱转换为人类可读的文本。

向量索引 (Vector Indexing)

向量索引将图数据转换为向量表示,以提高检索效率,促进快速检索和有效的查询处理。例如,通过查询嵌入,可以无缝应用实体链接,并且可以使用有效的向量搜索算法,如局部敏感哈希(LSH)。

Graph-Guided Retrieval

在GraphRAG中,检索过程对于确保通过从外部图数据库中提取相关且高质量的图数据来生成输出的质量和相关性至关重要。然而,检索图数据面临两个主要挑战:

  1. 候选子图的爆炸性增长:随着图的大小增加,候选子图的数量呈指数级增长,需要启发式搜索算法来有效探索和检索相关子图。

  2. 相似度测量不足:准确测量文本查询和图数据之间的相似度需要开发能够理解文本和结构信息的算法。

检索范式

在GraphRAG中,不同的检索范式对于提高检索信息的相关性和深度起着至关重要的作用。

一次性检索 (Once Retrieval)

一次性检索的目标是在单个查询中检索所有相关信息。这种方法分为两类:

  • 利用嵌入相似度来检索最相关的信息。

  • 设计预定义规则或模式直接从图数据库中提取特定结构化信息,如三元组、路径或子图。

例如,G-Retriever使用扩展的PCST算法检索最相关的子图。此外,还包括一些涉及解耦和独立检索的多重检索方法,允许它们并行计算并仅执行一次。

迭代检索 (Iterative Retrieval)

迭代检索采用多个检索步骤,后续搜索基于先前检索的结果,逐步缩小到最相关结果。迭代检索分为两类:

  • 非自适应检索 (Non-Adaptive Retrieval) :通常遵循固定的检索序列,检索的终止由设置的最大时间或阈值决定。

  • 自适应检索 (Adaptive Retrieval) :模型自主决定完成检索活动的最佳时机。例如,使用LM进行跳数预测作为检索结束的指标,或使用模型生成的特殊标记或文本作为检索过程的终止信号。

多阶段检索 (Multi-Stage Retrieval)

多阶段检索将检索过程线性地分为多个阶段,在这些阶段之间可能发生检索增强甚至生成过程。在多阶段检索中,不同阶段可能采用不同类型的检索器,使系统能够结合针对查询不同方面的各种检索技术。

检索粒度

在GraphRAG中,根据不同的任务场景和索引类型,研究者设计了不同的检索粒度,这些检索粒度是从图数据中检索出的相关知识的形式,可以划分为节点、三元组、路径和子图。

Nodes (节点)

节点检索侧重于图中单个元素的精确检索,适用于针对性查询和特定信息提取。在知识图中,节点通常指代实体;在其他类型的文本属性图中,节点可能包括描述节点属性的文本信息。通过检索图中的节点,GraphRAG系统能够提供关于它们属性、关系和上下文信息的详细洞察。

Triplets (三元组)

三元组通常由实体及其关系组成,以主体-谓语-客体的形式提供,为图中的关系数据提供了结构化表示。三元组的结构化格式允许清晰有序的数据检索,适用于理解实体间关系和上下文相关性至关重要的场景。

Paths (路径)

路径检索可以看作是捕捉实体间关系序列的过程,增强了上下文理解和推理能力。在GraphRAG中,路径检索因其能够捕捉图中的复杂关系和上下文依赖性而具有独特优势。

Subgraphs (子图)

子图检索因其能够捕捉图中全面的关系上下文而具有显著优势。这种粒度使GraphRAG能够提取和分析嵌入在更大结构中的复杂模式、序列和依赖性,从而促进更深入的洞察和对语义联系更细微的理解。

查询扩展和查询分解

Query Enhancement (查询增强)

应用于查询的策略通常涉及预处理技术,通过丰富信息以实现更好的检索。

  • Query Expansion (查询扩展):由于查询通常较短且信息内容有限,查询扩展旨在通过补充或完善原始查询来改善搜索结果,添加额外的相关术语或概念。

  • Query Decomposition (查询分解):查询分解技术将原始用户查询分解为更小、更具体的子查询。每个子查询通常关注原始查询的特定方面或组成部分,成功减轻了语言查询的复杂性和歧义。

Knowledge Enhancement (知识增强)

检索到初步结果后,采用知识增强策略来细化和改进检索器的结果。这个阶段通常涉及知识合并和知识剪枝过程,以突出显示最相关的信息。

  • Knowledge Merging (知识合并):知识合并检索到的信息,通过压缩和聚合信息,帮助获得更全面的观点,通过整合多个来源的相关细节。

  • Knowledge Pruning (知识剪枝):知识剪枝涉及过滤掉不太相关或冗余的检索信息,以细化结果。先前剪枝方法主要包括基于(重新)排名的方法和基于LLM的方法。

GraphRAG下游应用

Question Answering (问答)

问答任务特别包括知识库问答(KBQA)和常识问答(CSQA)。

  • KBQA:KBQA是GraphRAG的关键下游任务。在KBQA中,问题通常与特定的知识图谱有关,答案涉及知识图中的实体、关系或实体集之间的操作。这项任务测试系统检索和推理结构化知识库的能力,这对于提供复杂的查询响应至关重要。

  • CSQA:与KBQA不同,CSQA主要以多项选择题的形式出现。常识推理通常提供一个常识问题和几个可能代表实体名称或陈述的选项。目标是利用外部常识知识图谱(如ConceptNet)找到与问题和选项相关的知识,并进行适当的推理以得出正确答案。

Information Retrieval (信息检索)

信息检索任务包括实体链接(Entity Linking)和关系提取(Relation Extraction)两个类别。

  • Entity Linking (EL):实体链接是NLP领域中的一项关键任务,涉及识别文本段落中提到的实体,并将它们链接到知识图中对应的实体。通过使用GraphRAG等系统,可以从知识图中检索相关信息,这有助于准确推断文本中提到的特定实体。

  • Relation Extraction (RE):关系提取旨在识别和分类文本中实体之间的语义关系。GraphRAG可以通过使用基于图的结构来编码和利用实体之间的相互依赖性,从而从不同的文本来源中更准确和细致地提取关系数据。

GraphRAG工业系统

工业界的GraphRAG系统主要依靠工业图数据库系统或专注于大规模图数据。

  • GraphRAG (by Microsoft): 该系统使用大型语言模型(LLMs)构建基于实体的知识图,并预先生成相关实体组的社区摘要,这有助于捕获文档集合中的局部和全局关系,从而增强查询聚焦摘要(QFS)任务。该项目还可以利用开源RAG工具包,如LlamaIndex、LangChain等,进行快速实施。

  • GraphRAG (by NebulaGraph): 作为首个工业GraphRAG系统,该项目由NebulaGraph公司开发,将LLMs集成到NebulaGraph数据库中,旨在提供更智能、更精确的搜索结果。

  • GraphRAG (by Antgroup): 该框架建立在DB-GPT、知识图引擎OpenSPG和图数据库TuGraph等多个AI工程框架的基础上。系统首先使用LLMs从文档中提取三元组,然后存储在图数据库中。在检索阶段,它从查询中识别关键词,定位图数据库中的相应节点,并使用BFS或DFS遍历子图。在生成阶段,检索到的子图数据被格式化为文本,并与上下文和查询一起提交给LLMs处理。

  • NallM (by Neo4j): NaLLM(Neo4j和大型语言模型)框架将Neo4j图数据库技术与LLMs集成。它旨在探索和展示Neo4j和LLMs之间的协同作用,重点关注三个主要用例:自然语言接口到知识图谱、从非结构化数据创建知识图谱,以及使用静态数据和LLM数据生成报告。

  • LLM Graph Builder (by Neo4j): 这是Neo4j为自动构建知识图谱而开发的项目,适用于GraphRAG的图数据库构建和索引阶段。该项目主要使用LLMs从非结构化数据中提取节点、关系及其属性,并利用LangChain框架创建结构化知识图谱。

技术交流&资料

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

成立了算法面试和技术交流群,相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2040,备注:来自CSDN + 技术交流

精选

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值