自动提示词调优 ⚙️
GraphRAG 提供了创建领域自适应提示词的能力,用于生成知识图谱。这一步是可选的,但强烈建议运行它,因为它将在执行索引运行时产生更好的结果。
这些提示词是通过加载输入、将其分割成块(文本单元),然后运行一系列 LLM 调用和模板替换来生成最终提示词而产生的。我们建议使用脚本提供的默认值,但在此页面中,您将找到每个参数的详细信息,以防您想进一步探索和调整提示词调优算法。
图 1:自动调优概念图。
先决条件
在运行自动调优之前,请确保您已使用 graphrag 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(可选):提示词生成的最大 token 计数。默认为 2000。 -
--chunk-size(可选):用于从输入文档生成文本单元的 token 大小。默认为 200。 -
--n-subset-max(可选):使用自动选择方法时要嵌入的文本块数量。默认为 300。 -
--k(可选):使用自动选择方法时要选择的文档数量。默认为 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-discover-entity-types --output /path/to/output
或者,使用最少配置(建议)
python -m graphrag prompt-tune --root /path/to/project --config /path/to/settings.yaml --no-discover-entity-types
文档选择方法
自动调优功能摄取输入数据,然后将其分成块大小参数的文本单元。之后,它使用以下选择方法之一来选择一个样本进行提示词生成
random:随机选择文本单元。这是默认且推荐的选项。top:选择前 n 个文本单元。all:使用所有文本单元进行生成。仅用于小型数据集;通常不建议使用此选项。auto:将文本单元嵌入到低维空间中,并选择最接近质心的 k 个近邻。当您拥有大型数据集并希望选择一个代表性样本时,这很有用。
修改环境变量
运行自动调优后,您应该修改以下配置变量以在您的索引运行中选取新的提示词。注意:请确保更新到生成提示词的正确路径,在此示例中,我们使用默认的“prompts”路径。