Skip to content

自带图谱

许多用户询问是否可以使用自己现有的图谱,并通过GraphRAG进行摘要查询。虽然存在多种实现方式,但这里我们将介绍一种与现有GraphRAG工作流高度兼容的简单方法。

为满足GraphRAG查询的基本需求,您需要从数据中导出两到三个表格:

  • entities.parquet - 数据集中发现的实体列表,即图谱的节点。
  • relationships.parquet - 数据集中发现的关系列表,即图谱的边。
  • text_units.parquet - 图谱提取来源的原始文本块。根据您计划使用的查询方法(后文详述),该文件为可选。

本文描述的方法将运行一个自定义GraphRAG工作流管道,该管道假设文本分块、实体提取和关系提取步骤已完成。

数据表

实体表

完整实体表结构请参阅文档。对于图谱摘要用途,您仅需要id、title、description和text_unit_ids列表。

其他属性用于可选的图谱可视化功能。

关系表

完整关系表结构请参阅文档。对于图谱摘要用途,您仅需要id、source、target、description、weight和text_unit_ids列表。

注意:weight字段非常重要,因为它用于正确计算Leiden社区!

工作流配置

GraphRAG支持仅指定您需要的特定工作流步骤。对于基础的图谱摘要和查询功能,您需要在settings.yaml文件中配置以下内容:

workflows: [create_communities, create_community_reports]

这将仅运行GraphRAG全局搜索所需的最小工作流集合。

可选附加配置

如果您需要运行本地搜索漂移搜索基础搜索,则需要包含text_units和一些嵌入向量。

文本单元

完整text_units表结构请参阅文档。文本单元是文档分块,其大小经过调整以确保能适配模型的上下文窗口。某些搜索方法会使用这些单元,因此如果已有这些数据建议包含。

扩展配置

要执行上述其他搜索类型,您需要对部分内容进行嵌入处理。只需添加嵌入工作流:

workflows: [create_communities, create_community_reports, generate_text_embeddings]

FastGraphRAG

FastGraphRAG在社区报告中使用text_units而非实体和关系描述。如果您的图谱来源缺乏描述信息,这可能是个有用的替代方案。此时您需要更新工作流列表以包含文本变体:

workflows: [create_communities, create_community_reports_text, generate_text_embeddings]

该方法要求您的实体和关系表必须包含有效的text_unit_ids链接。请注意,generate_text_embeddings仅在您需要执行全局搜索之外的其他搜索时才必须包含。

实施步骤

完整实施流程如下:

  • input:GraphRAG确实需要输入文档集,即使您不需要我们处理它。您可以创建输入文件夹并放入dummy.txt文档来解决此要求。
  • output:创建输出文件夹并将您的entities和relationships(可选text_units)parquet文件放入其中。
  • 按上述说明更新配置,仅运行您需要的工作流子集。
  • 运行命令 graphrag index --root <您的项目根目录>