AI知识库

53AI知识库

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


微软graphRag调研
发布日期:2024-10-14 22:11:22 浏览次数: 1567 来源:极豆视界


GraphRAG 是一种结构化的、分层的检索增强生成 (RAG) 方法,与使用纯文本片段的朴素语义搜索方法相反。GraphRAG 过程涉及从原始文本中提取知识图谱、构建社区层次结构、为这些社区生成摘要,然后在执行基于 RAG 的任务时利用这些结构。

至于安装和快速入门,这里就不介绍了,详情可以查看下面链接。

GraphRag快速开始:https://microsoft.github.io/graphrag/posts/get_started/

现在直接进入原理。

主要分为两大块:

  1. Index 构建(图谱索引构建)

  2. Query查询 (查询引擎)


Index构建

阶段 1:组装 TextUnits

将输入文档转换为 TextUnits

大约1200 token一个分片。

第 2 阶段:图形提取

提取:EntitiesRelationshipsClaims

方法:

  1. entity_extract ->实体&关系

  2. claim_extract -> 声明

Entity & Relationship Extraction 实体和关系提取

使用LLM提取每一个TextUnit

产出:subgraph-per-TextUnit 包含了

  1. entitiesname, type, description)

  2. relationshipssource, target,  description)

Entity & Relationship Summarization 实体和关系摘要

使用LLM提取摘要

产出:把一个图中的实体和关系简述为一个简单的描述。

Entity Resolution (Not Enabled by Default) 实体解析

处理相似实体

产出:协变量

Claim Extraction & Emission 声明提取和产出

从源 TextUnits 中提取声明

第 3 阶段:图形增强

现在我们有了一个可用的实体和关系图,我们想了解他们的社区结构,并用其他信息来增强图。这分两步完成:社区检测图形嵌入。这些为我们提供了显式(社区)和隐式(嵌入)方法来理解我们图的拓扑结构。

Community Detection 社区检测

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

Graph Embedding 图形嵌入

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

Graph Tables Emission 图表产出

最终的 EntitiesRelationships

在这一点上,我们有一个实体和关系的功能图,一个实体的社区层次结构,以及node2vec嵌入。

第 4 阶段:社区总结

现在,我们希望以社区数据为基础,并为每个社区生成报告。这使我们在图形粒度的几个点上对图形有了高层次的理解。例如,如果社区 A 是顶级社区,我们将获得有关整个图表的报告。如果社区级别较低,我们将收到有关本地集群的报告。

Generate Community Reports 生成社区报告

LLM生成每个社区的摘要

Summarize Community Reports 汇总社区报告

用LLM摘要,供速记使用。

Community Embedding 社区嵌入

生成社区报告的文本嵌入、社区报告摘要和社区报告的标题来生成社区的矢量表示。

  1. 社区报告的embeding

  2. 社区报告摘要的embeding

  3. 社区报告标题的embeding


查询引擎


Local Search 本地搜索

Entity-based Reasoning 基于实体的推理

本地搜索方法将知识图谱中的结构化数据与输入文档中的非结构化数据相结合,以在查询时使用相关实体信息增强LLM上下文。它非常适合回答需要理解输入文档中提到的特定实体的问题

例如,“洋甘菊的治疗特性是什么?

示例代码:https://microsoft.github.io/graphrag/posts/query/notebooks/local_search_nb/

Global Search 全域搜索

Whole Dataset Reasoning 全数据集推理

基线 RAG 难以处理需要聚合数据集中信息以组成答案的查询。诸如“数据中排名前 5 位的主题是什么?”之类的查询执行得很糟糕,因为基线 RAG 依赖于对数据集中语义相似的文本内容的向量搜索。查询中没有任何内容可以将其定向到正确的信息。

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

示例代码:https://microsoft.github.io/graphrag/posts/query/notebooks/global_search_nb/

Question Generation 问题生成

Entity-based Question Generation基于实体的问题生成

将知识图谱中的结构化数据与输入文档中的非结构化数据相结合,生成与特定实体相关的候选问题。



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

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

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

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询