跳到内容

引入您自己的图谱

一些用户询问他们是否可以引入自己现有的图谱,并将其总结以便使用 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 全局搜索所需的最小工作流。

可选的额外配置

如果您想运行本地DRIFT基本搜索,您需要包含 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`。

设置

整合所有内容

  • output:创建一个输出文件夹,并将您的实体和关系(以及可选的 text_units)parquet 文件放入其中。
  • 如上所述更新您的配置,仅运行您需要的工作流子集。
  • 运行 graphrag index --root <您的项目根目录>