自带图谱
许多用户询问是否可以使用自己现有的图谱,并通过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文件中配置以下内容:
这将仅运行GraphRAG全局搜索所需的最小工作流集合。
可选附加配置
如果您需要运行本地搜索、漂移搜索或基础搜索,则需要包含text_units和一些嵌入向量。
文本单元
完整text_units表结构请参阅文档。文本单元是文档分块,其大小经过调整以确保能适配模型的上下文窗口。某些搜索方法会使用这些单元,因此如果已有这些数据建议包含。
扩展配置
要执行上述其他搜索类型,您需要对部分内容进行嵌入处理。只需添加嵌入工作流:
FastGraphRAG
FastGraphRAG在社区报告中使用text_units而非实体和关系描述。如果您的图谱来源缺乏描述信息,这可能是个有用的替代方案。此时您需要更新工作流列表以包含文本变体:
该方法要求您的实体和关系表必须包含有效的text_unit_ids链接。请注意,generate_text_embeddings
仅在您需要执行全局搜索之外的其他搜索时才必须包含。
实施步骤
完整实施流程如下:
input
:GraphRAG确实需要输入文档集,即使您不需要我们处理它。您可以创建输入文件夹并放入dummy.txt文档来解决此要求。output
:创建输出文件夹并将您的entities和relationships(可选text_units)parquet文件放入其中。- 按上述说明更新配置,仅运行您需要的工作流子集。
- 运行命令
graphrag index --root <您的项目根目录>