跳到内容

自动提示调优 ⚙️

GraphRAG 提供了为知识图谱生成创建领域自适应提示的能力。 这一步是可选的,但强烈建议运行它,因为它在执行索引运行时会产生更好的结果。

这些提示是通过加载输入、将它们分成块(文本单元),然后运行一系列 LLM 调用和模板替换来生成最终提示。我们建议使用脚本提供的默认值,但在此页面中,您将找到每个提示的详细信息,以防您想进一步探索和调整提示调优算法。

Figure 1: Auto Tuning Conceptual Diagram.

图 1:自动调优概念图。

先决条件

在运行自动调优之前,请确保您已使用 graphrag init 命令初始化您的工作区。 这将创建必要的配置文件和默认提示。 有关初始化过程的更多信息,请参阅Init 文档

用法

您可以从命令行运行主脚本,并带有各种选项

graphrag prompt-tune [--root ROOT] [--config CONFIG] [--domain DOMAIN]  [--selection-method METHOD] [--limit LIMIT] [--language LANGUAGE] \
[--max-tokens MAX_TOKENS] [--chunk-size CHUNK_SIZE] [--n-subset-max N_SUBSET_MAX] [--k K] \
[--min-examples-required MIN_EXAMPLES_REQUIRED] [--discover-entity-types] [--output OUTPUT]

命令行选项

  • --config (必需):配置文件的路径。 这是加载数据和模型设置所必需的。

  • --root (可选):数据项目根目录,包括配置文件(YML、JSON 或 .env)。 默认为当前目录。

  • --domain (可选):与您的输入数据相关的领域,例如“空间科学”、“微生物学”或“环境新闻”。 如果留空,将从输入数据推断领域。

  • --selection-method (可选):选择文档的方法。 选项为 all、random、auto 或 top。 默认为 random。

  • --limit (可选):使用 random 或 top 选择时要加载的文本单元的限制。 默认为 15。

  • --language (可选):用于输入处理的语言。 如果它与输入的语言不同,LLM 将进行翻译。 默认为 "",表示它将从输入中自动检测。

  • --max-tokens (可选):提示生成的最大令牌计数。 默认为 2000。

  • --chunk-size (可选):用于从输入文档生成文本单元的令牌大小。 默认为 200。

  • --n-subset-max (可选):使用 auto 选择方法时要嵌入的文本块数。 默认为 300。

  • --k (可选):使用 auto 选择方法时要选择的文档数。 默认为 15。

  • --min-examples-required (可选):实体提取提示所需的最小示例数。 默认为 2。

  • --discover-entity-types (可选):允许 LLM 自动发现和提取实体。 当您的数据涵盖大量主题或高度随机化时,我们建议使用此方法。

  • --output (可选):用于保存生成的提示的文件夹。 默认为“prompts”。

使用示例

python -m graphrag prompt-tune --root /path/to/project --config /path/to/settings.yaml --domain "environmental news" \
--selection-method random --limit 10 --language English --max-tokens 2048 --chunk-size 256 --min-examples-required 3 \
--no-entity-types --output /path/to/output

或者,使用最少的配置(建议)

python -m graphrag prompt-tune --root /path/to/project --config /path/to/settings.yaml --no-entity-types

文档选择方法

自动调优功能会提取输入数据,然后将其划分为文本单元,其大小由 chunk size 参数决定。 之后,它使用以下选择方法之一来选择一个样本以用于提示生成

  • random:随机选择文本单元。 这是默认且推荐的选项。
  • top:选择前 n 个文本单元。
  • all:使用所有文本单元进行生成。 仅适用于小型数据集; 通常不建议使用此选项。
  • auto:将文本单元嵌入到较低维度的空间中,并选择到质心的 k 个最近邻。 当您有大型数据集并想要选择有代表性的样本时,这很有用。

修改环境变量

运行自动调优后,您应该修改以下环境变量(或配置变量),以便在索引运行时获取新的提示。 注意:请确保更新到生成的提示的正确路径,在本例中,我们使用的是默认的“prompts”路径。

  • GRAPHRAG_ENTITY_EXTRACTION_PROMPT_FILE = "prompts/entity_extraction.txt"

  • GRAPHRAG_COMMUNITY_REPORT_PROMPT_FILE = "prompts/community_report.txt"

  • GRAPHRAG_SUMMARIZE_DESCRIPTIONS_PROMPT_FILE = "prompts/summarize_descriptions.txt"

或者在您的 yaml 配置文件中

entity_extraction:
  prompt: "prompts/entity_extraction.txt"

summarize_descriptions:
  prompt: "prompts/summarize_descriptions.txt"

community_reports:
  prompt: "prompts/community_report.txt"