GraphRAG 官方文档¶
GraphRAG 架构分为两个核心部分:
> Indexing
> Query
Indexing¶
> Indexing Architecture¶
>> 知识模型 (Knowledge Model):
---- GraphRAG 使用一个抽象的知识模型来表示索引引擎的输出
---- 这个模型独立于底层数据存储技术,为 GraphRAG 系统提供统一的接口
>> DataShaper 工作流:
---- 索引管道基于开源库 DataShaper 构建
(https://github.com/microsoft/datashaper)
---- DataShaper 允许用户声明式地定义数据管道、模式和相关资产
---- 工作流由一系列步骤 (称为 verbs) 组成,每个步骤转换输入数据表
>> 基于 LLM 的工作流步骤:
---- 实现了自定义 verbs,利用 GPT-4 等 LLM 增强文本文档
---- 用于提取实体、关系、声明、社区结构等信息
>> 工作流图:
---- 索引任务表示为多个相互依赖的工作流
---- 工作流之间形成有向无环图 (DAG),用于调度处理
>> 数据帧消息格式:
---- 工作流之间主要使用 Pandas.DataFrame 进行通信
---- 采用以数据和表为中心的处理方法
>> LLM 缓存:
---- 为 LLM 交互添加缓存层,提高系统弹性
---- 相同输入集的请求会返回缓存结果,提升效率
这些技术特性使 GraphRAG Indexing 系统具有灵活性、可扩展性和效率,能够处理复杂的数据索引任务。
> Indexing Dataflow¶
>> GraphRAG 知识模型:
---- 定义了几种主要的数据实体类型
Document、 TextUnit、Entity、Relationship、Covariate、Community Report、Node
---- 这些实体类型构成了GraphRAG 的基本数据结构
>>默认配置工作流 (6 个阶段):
---- 组成 TextUnits:将输入文档转换为 TextUnit,可配置 chunk 大小和分组方式
---- 图提取:实体和关系提取、实体和关系汇总、实体解析、声明提取、图增强、图嵌入
---- 社区总结:为每个社区生成报告、总结社区报告、生成社区嵌入
---- 文档处理:增加列 (仅 CSV)、链接到 TextUnits、文档嵌入
---- 网络可视化:对实体-关系图和文档图进行 UMAP 降维,生成 2D 表示
>> 数据流程:
---- 每个阶段都会处理前一阶段的输出,逐步构建和丰富知识图谱
---- 在适当的阶段会生成相应的数据表 (如 Entities, Relationships, Communities 等)
>> LLM 应用:
---- 在多个阶段使用 LLM 进行信息提取、总结和增强
---- 包括实体和关系提取、声明提取、社区报告生成等
>> 嵌入和降维:
---- 在多个阶段使用文本嵌入和图嵌入技术
---- 使用 UMAP 进行降维,支持网络可视化
工作流程讲述了 GraphRAG 如何从原始文本数据构建一个丰富的、多层次的知识图谱,并为后续的查询和分析提供基础。
> Prompt Tuning¶
>> 默认提示词:
---- 最简单的 GraphRAG 系统入门方式
---- 设计为开箱即用,需要最少的配置
---- 包括几个主要方面的默认提示词:实体/关系提取、实体/关系描述总结、声明提取、社区报告
>> 自动模板化 (Auto Templating):
---- 利用输入数据和 LLM 交互来创建适应特定领域的知识图谱生成模板
---- 强烈建议使用,可以在执行索引运行时产生更好的结果
>> 手动配置 (Manual Prompt Tuning):
---- 属于高级用例
---- 大多数用户建议使用自动模板化功能
这种分层的提示词调优方法使 GraphRAG 能够适应不同用户的需求和技能水平,从简单的默认设置到复杂的手动配置,同时通过自动模板化提供了一个智能的中间选项。
Query¶
> Query Engine 概述:
>> GraphRAG 库的检索模块,与索引管道一起构成了 GraphRAG 的两大主要组件
>> 负责三个主要任务:本地搜索、全局搜索和问题生成
>> 本地搜索 (Local Search):
---- 通过结合 AI 提取的知识图谱数据和原始文档的文本块来生成答案
---- 适用于需要理解文档中提到的特定实体的问题
---- 例如:"洋甘菊的治疗属性是什么?"
>> 全局搜索 (Global Search):
---- 以 map-reduce 的方式搜索所有 AI 生成的社区报告
---- 资源密集型方法,但对于需要理解整个数据集的问题效果较好
---- 例如:"这个笔记本中提到的草药最重要的价值是什么?"
>> 问题生成 (Question Generation):
---- 基于用户查询列表生成下一个候选问题
---- 用于生成对话中的后续问题或为研究者深入数据集生成问题列表
Query Engine 设计显示了 GraphRAG 在处理不同类型查询和支持交互式数据探索方面的灵活性。通过结合本地和全局搜索,以及问题生成功能,GraphRAG 能够提供全面而深入的信息检索和分析能力。