专栏名称: 全栈修仙之路
专注分享 TS、Vue3、前端架构和源码解析等技术干货。
目录
相关文章推荐
51好读  ›  专栏  ›  全栈修仙之路

初识 GraphRAG

全栈修仙之路  · 公众号  ·  · 2025-02-12 08:46

正文

生成式AI技术发展曲线

随着大语言模型(LLM)飞速发展,LLMs正在以前所未有的速度改变着我们与信息互动的方式。然而,尽管 LLMs 具有强大的功能,但确存在一些明显缺点,比如幻觉问题、可解释性差、抓不住问题重点、隐私和安全问题等。

大模型问题

  • 信息准确性问题:生成式模型可能会“幻觉”(hallucinate),即生成与事实不符的内容。比如预训练的数据不完整、过期,模型采用的训练策略有特定偏好,推理解码策略的随机性等都会造成大模型"说胡话"。

  • 知识时效性问题:生成模型的知识范围仅限于训练数据和训练时间点,缺乏实时性。

  • 知识覆盖问题:大规模模型虽然包含广泛的知识,但面对某些领域的细节或长尾问题,可能回答不准确或无效。

RAG是什么?

RAG,正是为了尽可能地解决大模型在实际应用中面临的一些问题,特别是“幻觉”问题而诞生的,也是最重要的一种优化方案。

将传统的生成式大模型与实时信息检索技术相结合,为大模型补充来自外部的相关数据与上下文,以帮助大模型生成更丰富、更准确、更可靠的内容。这允许大模型在生成内容时可以依赖实时与个性化的数据和知识,而不只是依赖训练知识。简单的说:RAG给大模型增加了一个可以快速查找的知识外挂。

用一个例子帮助理解RAG:

如果把大模型比喻成一个经过大量知识与技能训练的优秀学生,把大模型响应的过程比喻成考试,那么这个优秀学生在考试时仍然可能会遇到没有掌握的知识,从而编造答案(幻觉)。

RAG就是在这个学生考试时临时给他的一本参考书。我们可以要求他在考试时尽量参考这本书作答,那么在遇到与这本书中的知识相关的问题时,他的得分是不是就高多了呢?

RAG架构

最基础的RAG架构流程

通常情况下,可以把一个简单的RAG应用从整体上分为数据索引(Indexing)与数据查询(Query)两个大的阶段,而在每个阶段都包含不同的处理环节。以上面的举例来解释:

  • 索引阶段就是编写考试时需要的参考书,这本书要容易快速查找特定知识。

  • 查询阶段就是考试时使用这本书的过程,先查找参考资料,然后解答问题。

传统RAG的问题

RAG虽然能够较好的回答一些事实性问题,但是在面对一些统计性、总结性、概要性的QFS问题(Query-Focused Summarization)时却表现非常差:当回答问题需要通过共享属性遍历不同的信息片段以提供新的综合见解时,就会发生这种情况,不能像人类思考问题时,将各个点连接起来进行总结概括主题。

GraphRAG基础

在开始之前,我们先快速了解图(Graph)、图数据库(GraphDB)、知识图谱(Knowledge Graph)以及GraphRAG的基础知识。

图(Graph)是一种用来表示对象以及它们之间关系的数学结构。任何两个对象之间都可以直接发生联系,所以适合表达更复杂的关系信息。一个图结构的主要的组成是节点和边。

  • 节点:用来表示一个对象。比如一部电影、电影中的一个演员......

  • 边:用来表示对象之间的关系。比如演员Tom参演了电影的一个角色

图数据库(GraphDB)

图数据库是一种专门用于存储和操作图结构数据的数据库管理系统。与关系型数据库不同,图数据库使用图数据库是一种专门用于存储和操作图结构数据的数据库管理系统。与关系型数据库不同,图数据库使用节点、边和属性来表示和存储数据。这使得它们非常适合处理高度连接的数据,提供高性能的复杂查询能力,用来遍历与发现有洞察力的数据关系。其最大特点是:

  • 灵活的模型:可以方便地表示复杂的关系。

  • 高效的查询:特别是多跳关系的查询,比关系数据库更高效。

  • 可扩展性:能够处理大量节点和边。

什么是知识图谱

知识图谱是一种基于图结构的语义网络,用于表示现实世界中的知识。这个知识和上学去学的那个知识不是完全一致的,这个知识更接近我们平时所说的信息,任何东西都可以成为知识图谱里的知识。知识图谱的优势

  1. 结构化信息:知识图谱将信息以节点(实体)和边(关系)的形式组织,使得复杂信息结构化,便于存储和查询。

  2. 语义理解:通过明确的关系定义,知识图谱可以帮助系统更好地理解信息之间的语义关系,提升信息检索和自然语言处理的效果。

  3. 知识关联性:知识图谱能够将不同的知识点联系起来,形成更丰富的知识网络,帮助用户发现隐藏的关联。

  4. 支持推理:基于知识图谱,系统可以进行逻辑推理,从已知的信息推导出新的信息,提高智能应用的能力。

  5. 可视化:知识图谱通常可以通过图形化的方式展示,使得复杂关系一目了然,便于用户理解和分析。

GraphRAG

graphRAG在整体架构与传统RAG并无更大区别,区别在于检索的知识采用图结构的方式进行构建、存储并检索

GraphRAG 的工作原理

GraphRAG的流程包括两个部分:索引阶段 和 查询阶段。

GraphRAG实现方式

索引阶段

索引阶段主要负责将非结构化文本数据转化为结构化的知识图谱,并将其存储到数据库中。其主要流程如下:

  1. 文本切分: 将输入的文本数据按照一定的规则切分成多个文本块 (Text Unit),每个文本块通常包含一个或多个完整的句子。文档和文本单元之间一般存在严格的一对多关系,在极少数情况下,这可以变成多对多关系(当文档很短并且我们需要其中几个来组成一个有意义的分析单元)。

画板

2.实体和关系抽取(图提取): 利用 LLM 从文本块(Text Unit)中抽取实体、关系和声明

画板

实体和关系提取:使用LLM从原始文本中提取实体和关系、包含具由名称、类型和描述的实体列表,以及具有源、目标和描述的关系列表

实体和关系摘要:通过LLM为每个实体和关系提供简短的摘要描述

例如,从句子 "OpenAI 开发了 ChatGPT" 中,可以抽取出实体 "OpenAI" 和 "ChatGPT",以及关系 "开发"。

3.知识图谱构建:将抽取出的实体和关系信息构建成图结构的知识图谱,其中节点代表实体,边代表关系。4.检测和识别社区: 利用图算法(例如,层次化 Leiden 技术)对知识图谱进行社区检测,将具有相似语义的实体聚集在一起,形成不同的社区。可以把社区理解成围绕某个主题的一组紧密相关的实体与关系信息。

  1. 生成社区摘要: 使用LLM基于社区数据为每个社区的摘要信息,用来了解数据集的全局主题结构和语义。比如:如果社区A是顶级社区,我们将获得关于整个图表的报告,如果社区是较低级别的,我们将获得有关本地集群的报告。这也是Microsoft GraphRAG的核心价值所在,也是回答QFS问题的关键。

在这个过程中,自然语言文本-->结构化的图谱--->自然语言摘要,由于转化的知识图谱组合了来自多个原始文本的实体和关系信息,因此基于社区的自然摘要就包含了跨多个数据源和文档的浓缩信息,因此可以很好的回答QFS问题

  1. 向量化: 利用 LLM 将实体、关系、社区概括等信息转化为向量表示,用于后续的语义搜索。

  1. 存储: 将构建好的知识图谱、社区信息和向量表示等数据存储到数据库中,供查询引擎使用。

查询阶段

GraphRAG定义了两种差异非常大的查询模式:local查询和global查询。

local查询:

  1. local查询会根据输入的查询问题与对话历史,从知识图谱中识别出最相关的实体。







请到「今天看啥」查看全文