AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大模型生成知识图谱——GhaphRAG原理
发布日期:2024-12-06 05:04:23 浏览次数: 1709 来源:实用主义的跨学科学习笔记



LLM的困境?

LLM 面临的最大挑战(也是机遇)或许是将其强大的能力扩展到解决训练数据之外的问题,并使用 LLM 从未见过的数据获得可比的结果。这为数据调查开辟了新的可能性,例如根据上下文和数据集识别主题和语义概念

什么是RAG?

检索增强生成 (RAG) 是一种使用外部知识源改进 LLM 输出的技术,其核心是使用外部的知识构建索引,使大模型能够回答私有的或者训练过的文档问题。

这种技术是大多数基于 LLM 的工具的重要组成部分,大多数 RAG 方法使用向量相似性作为搜索技术,我们称之为Baseline RAG。

RAG的优缺点?

RAG可以回答某些文档的详情,或是细节检索,如检索并回复某段话中的实体信息。

RAG无法完全解决跨段落/跨文章的总结性/摘要性问题:

基准的 RAG 对于需要对数据集中的信息进行聚合以组成答案的查询很难处理。像“数据中前 5 个主题是什么?”这样的查询表现非常糟糕,因为基准的 RAG 依赖于对数据集中语义相似文本内容的向量搜索。查询中没有任何指示它找到正确信息的内容。

然而,使用 GraphRAG,我们可以回答这样的问题,因为 LLM 生成的知识图的结构告诉我们整个数据集的结构(因此也是主题)。这使得私有数据集可以被组织成有意义的语义聚类,并进行预摘要。使用我们的 全局搜索(opens in a new tab) 方法,LLM 在响应用户查询时使用这些聚类来总结这些主题。


什么是GraphRAG?

通过使用 LLM 生成的知识图谱,GraphRAG 极大地改进了 RAG 的“检索”部分,用更高相关性的内容填充上下文窗口,从而得到更好的答案并捕获证据来源。 

GraphRAG的概念

  • Document - 进入系统的输入文档。这些可以代表 CSV 中的单个行或单个.txt 文件。

  • TextUnit - 要分析的文本块。这些块的大小,重叠和是否符合任何数据边界可以在下面进行配置。常见用例是将 CHUNK_BY_COLUMNS 设置为 id,以便文档和 TextUnit 之间存在一对多关系,而不是多对多关系。

  • Entity - 从 TextUnit 中提取的实体。这些代表你提供的人物,地点,事件或其他实体模型。

  • Relationship - 两个实体之间的关系。这些由协变量生成。

  • Covariate - 协变量,提取的声明信息,包含关于可能随时间变化的实体的陈述。

  • Community - 社区,是在整个图谱中,某一个类别的模块

  • Community Report - 生成实体后,我们对其进行层次化社区检测,并为层次结构中的每个社区生成报告,用于模块检索。

  • Node - 该表包含嵌入和聚类的实体和文档的渲染知识图谱视图的布局信息。


GraphRAG的运作逻辑

1.文本切分,组合TextUnits(chunks1200token

2.实体和关系抽取,如命名实体、概念间关系、细节描述,用于生成知识图谱。

3.生成实体和关系的摘要,增强知识图谱

社区检测:使用层次 Leiden 算法生成实体社区的层次结构。该方法将对我们的知识图谱应用递归的社区聚类,直到达到社区大小阈值。这将使我们能够了解我们的网络的社区结构,并提供在不同粒度级别上导航和总结知识图谱的方法。

知识图谱嵌入:使用 Node2Vec 算法生成知识图谱的向量表示。这将使我们能够理解我们的知识图谱的隐含结构,并提供一个额外的向量空间,用于在查询阶段搜索相关概念。


4.社区总结在社区数据的基础上生成报告。这将使我们能够更深入地了解知识图谱在各个粒度级别上的高层次情况。例如,如果社区 A 是最高层级的社区,我们将获得有关整个知识图谱的报告。如果社区是较低级别的,则我们将获得有关局部集群的报告。


大模型生成社区报告、大模型总结社区报告、生成向量、形成结果表格。

5.文档处理:为知识模型创建表格

链接文本单元:将每个文档链接到在第一阶段创建的文本单元。这样我们就能知道哪些文档与哪些文本单元相关。

Embedding:使用文档片段的平均嵌入生成文档的向量表示。我们重新分块文档,没有重叠的块,然后为每个块生成一个嵌入。我们通过标记计数加权这些块的平均值,并将其用作文档嵌入。这将使我们能够理解文档之间的隐含关系,并帮助我们生成文档的网络表示。

发布表格:我们可以将 文档 表发布到知识模型中

6.可视化


GraphRAG的查询方法论

全局搜索:数据中前 5 个主题是什么?


根据用户查询和可选的对话历史,全局搜索方法使用一系列来自图的社区层次结构中指定级别的社区报告作为上下文数据,以映射减少的方式生成响应。在 map 步骤中,将社区报告分割成预定义大小的文本块。然后,使用每个文本块生成一个包含一系列具有附带的数值评级的点的中级回应。在 reduce 步骤中,从中级回应中筛选出一组最重要的点,并将其聚合使用作为上下文来生成最终的响应。

全局搜索的响应质量很大程度上取决于所选的用于获取社区报告的社区层次结构级别。较低层次的层次结构带有其详细报告,往往会产生更详尽的响应,但可能也会增加生成最终响应所需的时间和 LLM 资源,因为需要处理更多的报告。


本地搜索:在查询时将知识图谱的结构化数据与输入文档的非结构化数据相结合, 以相关实体信息增强 LLM 上下文。这种方法非常适合回答需要理解输入文档中提到的特定实体的问题(例如, "洋甘菊的治疗特性是什么?")。

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


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询