跳到内容

索引方法

GraphRAG 是我们研究 RAG 索引方法的平台,这些方法为语言模型生成最佳上下文窗口内容。我们有一个标准的索引管道,它使用语言模型来提取我们内存模型所基于的图。我们可能会不时引入额外的索引方法。本页面记录了这些选项。

标准 GraphRAG

这是原始博客文章中描述的方法。标准方法使用语言模型处理所有推理任务。

  • 实体提取:提示 LLM 从每个文本单元中提取命名实体并提供描述。
  • 关系提取:提示 LLM 描述每个文本单元中每对实体之间的关系。
  • 实体摘要:提示 LLM 将在所有文本单元中找到的每个实体实例的描述组合成一个单一的摘要。
  • 关系摘要:提示 LLM 将在所有文本单元中找到的每个关系实例的描述组合成一个单一的摘要。
  • 声明提取(可选):提示 LLM 从每个文本单元中提取并描述声明。
  • 社区报告生成:收集每个社区的实体和关系描述(以及可选的声明),并用它们来提示 LLM 生成摘要报告。

graphrag index --method standard。这是默认方法,因此可以省略 method 参数。

FastGraphRAG

FastGraphRAG 是一种方法,它用传统的自然语言处理 (NLP) 方法替代了部分语言模型推理。这是一种混合技术,我们将其开发为一种更快、更便宜的索引替代方案。

  • 实体提取:实体是使用 NLTK 和 spaCy 等 NLP 库提取的名词短语。没有描述;为此使用源文本单元。
  • 关系提取:关系定义为实体对之间的文本单元共现。没有描述。
  • 实体摘要:不需要。
  • 关系摘要:不需要。
  • 声明提取(可选):未使用。
  • 社区报告生成:收集包含每个实体名词短语的直接文本单元内容,并用它们来提示 LLM 生成摘要报告。

graphrag index --method fast

FastGraphRAG 内置了一些 NLP 选项。默认情况下,我们使用 NLTK + 正则表达式进行名词短语提取,这非常快,但主要适用于英语。我们还内置了两种使用 spaCy 的额外方法:语义解析和 CFG。默认情况下,我们对 spaCy 使用 en_core_web_md 模型,但请注意,您可以引用您已安装的任何受支持的模型

请注意,我们通常还将文本分块配置为生成更小的块(50-100 个 token)。这会产生更好的共现图。

⚠️ SpaCy 模型注意事项

此包需要 SpaCy 模型才能正常运行。如果未安装所需的模型,该包将在首次使用时自动下载并安装它。

您可以通过运行 python -m spacy download <model_name> 手动安装它,例如 python -m spacy download en_core_web_md

选择一种方法

标准 GraphRAG 提供了对真实世界实体和关系的丰富描述,但比 FastGraphRAG 更昂贵。我们估计图提取约占索引成本的 75%。因此,FastGraphRAG 要便宜得多,但代价是提取的图在 GraphRAG 之外使用时的直接相关性较低,而且图往往会嘈杂得多。如果高保真实体和图探索对您的用例很重要,我们建议继续使用传统 GraphRAG。如果您的用例主要旨在通过全局搜索回答摘要问题,FastGraphRAG 可以以更低的 LLM 成本提供高质量的摘要。