跳到内容

索引方法

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

标准 GraphRAG

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

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

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

FastGraphRAG

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

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

graphrag index --method fast

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

请注意,我们通常还配置文本分块以生成更小的块(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 是一种合理且更便宜的替代方案。