跳到内容

默认配置模式(使用 YAML/JSON)

默认配置模式可以通过在数据项目根目录中使用 settings.ymlsettings.json 文件进行配置。如果存在 .env 文件和此配置文件,则会加载该文件,并且其中定义的环境变量将可通过 ${ENV_VAR} 语法用于配置文档中的令牌替换。我们默认在 graphrag init 中使用 YML 进行初始化,但如果偏好,您可以使用等效的 JSON 格式。

许多这些配置值都有默认值。为避免在此处重复,请直接参考代码中的常量

例如

# .env
GRAPHRAG_API_KEY=some_api_key

# settings.yml
llm: 
  api_key: ${GRAPHRAG_API_KEY}

配置部分

语言模型设置

models

这是一个模型配置字典。当需要模型实例时,字典键用于在其他地方引用此配置。通过这种方式,您可以指定任意数量的不同模型,并在工作流步骤中差异化地引用它们。

例如

models:
  default_chat_model:
    api_key: ${GRAPHRAG_API_KEY}
    type: openai_chat
    model: gpt-4o
    model_supports_json: true
  default_embedding_model:
    api_key: ${GRAPHRAG_API_KEY}
    type: openai_embedding
    model: text-embedding-ada-002

字段

  • api_key str - 要使用的 OpenAI API 密钥。
  • auth_type api_key|azure_managed_identity - 指示您希望如何验证请求。
  • type chat|embedding|openai_chat|azure_openai_chat|openai_embedding|azure_openai_embedding|mock_chat|mock_embeddings - 要使用的 LLM 类型。
  • model_provider str|None - 要使用的模型提供商,例如 openai、azure、anthropic 等。当 type == chat|embedding 时必需。当 type == chat|embedding 时,底层使用 LiteLLM,它支持调用 100 多个模型。查看 LiteLLm 基本用法了解模型调用详情(model_provider/ 之前的部分,而 model/ 之后的部分)。查看语言模型选择了解使用 LiteLLM 的更多详细信息和示例。
  • model str - 模型名称。
  • encoding_model str - 要使用的文本编码模型。默认是使用与语言模型对齐的编码模型(即,如果未设置,则从 tiktoken 中检索)。
  • api_base str - 要使用的 API 基本 URL。
  • api_version str - API 版本。
  • deployment_name str - 要使用的部署名称(Azure)。
  • organization str - 客户端组织。
  • proxy str - 要使用的代理 URL。
  • audience str - (仅限 Azure OpenAI) 请求托管身份令牌的目标 Azure 资源/服务的 URI。如果未定义 api_key 则使用。默认值=https://cognitiveservices.azure.com/.default
  • model_supports_json bool - 模型是否支持 JSON 模式输出。
  • request_timeout float - 每个请求的超时时间。
  • tokens_per_minute int - 设置每分钟令牌数的漏桶节流。
  • requests_per_minute int - 设置每分钟请求数的漏桶节流。
  • retry_strategy str - 要使用的重试策略,"native" 是默认值,使用 OpenAI SDK 内置的策略。其他允许的值包括 "exponential_backoff"、"random_wait" 和 "incremental_wait"。
  • max_retries int - 要使用的最大重试次数。
  • max_retry_wait float - 最大回退时间。
  • concurrent_requests int 允许同时进行的开放请求数。
  • async_mode asyncio|threaded 要使用的异步模式。可以是 asynciothreaded
  • responses list[str] - 如果此模型类型是模拟,则这是要返回的响应字符串列表。
  • n int - 要生成的补全数。
  • max_tokens int - 最大输出令牌数。对 o 系列模型无效。
  • temperature float - 要使用的温度。对 o 系列模型无效。
  • top_p float - 要使用的 top-p 值。对 o 系列模型无效。
  • frequency_penalty float - 令牌生成的频率惩罚。对 o 系列模型无效。
  • presence_penalty float - 令牌生成的频率惩罚。对 o 系列模型无效。
  • max_completion_tokens int - 聊天补全消耗的最大令牌数。必须足够大以包含模型“推理”的未知数量。仅适用于 o 系列模型。
  • reasoning_effort low|medium|high - 模型推理响应所需的“思考”量。仅适用于 o 系列模型。

输入文件和分块

input

我们的管道可以从输入位置摄取 .csv、.txt 或 .json 数据。有关更多详细信息和示例,请参阅输入页面

字段

  • storage StorageConfig
  • type file|blob|cosmosdb - 要使用的存储类型。默认值=file
  • base_dir str - 相对于根目录的输出工件写入的基本目录。
  • connection_string str - (仅限 blob/cosmosdb) Azure 存储连接字符串。
  • container_name str - (仅限 blob/cosmosdb) Azure 存储容器名称。
  • storage_account_blob_url str - (仅限 blob) 要使用的存储账户 blob URL。
  • cosmosdb_account_blob_url str - (仅限 cosmosdb) 要使用的 CosmosDB 账户 blob URL。
  • file_type text|csv|json - 要加载的输入数据类型。默认值是 text
  • encoding str - 输入文件的编码。默认值是 utf-8
  • file_pattern str - 匹配输入文件的正则表达式。默认值是 .*\.csv$.*\.txt$.*\.json$,具体取决于指定的 file_type,但您可以根据需要进行自定义。
  • file_filter dict - 用于过滤的键/值对。默认值为 None。
  • text_column str - (仅限 CSV/JSON) 文本列名称。如果未设置,我们期望一个名为 text 的列。
  • title_column str - (仅限 CSV/JSON) 标题列名称,如果未设置,则使用文件名。
  • metadata list[str] - (仅限 CSV/JSON) 要保留的附加文档属性字段。

chunks

这些设置配置我们将文档解析成文本块的方式。这是必要的,因为非常大的文档可能无法适应单个上下文窗口,并且图谱提取的准确性可能会受到影响。另请注意输入文档配置中的 metadata 设置,它将文档元数据复制到每个块中。

字段

  • size int - 令牌中的最大块大小。
  • overlap int - 令牌中的块重叠。
  • group_by_columns list[str] - 在分块之前按这些字段对文档进行分组。
  • strategy str[tokens|sentences] - 如何分块文本。
  • encoding_model str - 用于按令牌边界分割的文本编码模型。
  • prepend_metadata bool - 确定是否应在每个块的开头添加元数据值。默认值=False
  • chunk_size_includes_metadata bool - 指定块大小计算是否应包含元数据令牌。默认值=False

输出和存储

output

此部分控制管道用于导出输出表的存储机制。

字段

  • type file|memory|blob|cosmosdb - 要使用的存储类型。默认值=file
  • base_dir str - 相对于根目录的输出工件写入的基本目录。
  • connection_string str - (仅限 blob/cosmosdb) Azure 存储连接字符串。
  • container_name str - (仅限 blob/cosmosdb) Azure 存储容器名称。
  • storage_account_blob_url str - (仅限 blob) 要使用的存储账户 blob URL。
  • cosmosdb_account_blob_url str - (仅限 cosmosdb) 要使用的 CosmosDB 账户 blob URL。

update_index_output

此部分定义了用于运行增量索引的辅助存储位置,以保留您的原始输出。

字段

  • type file|memory|blob|cosmosdb - 要使用的存储类型。默认值=file
  • base_dir str - 相对于根目录的输出工件写入的基本目录。
  • connection_string str - (仅限 blob/cosmosdb) Azure 存储连接字符串。
  • container_name str - (仅限 blob/cosmosdb) Azure 存储容器名称。
  • storage_account_blob_url str - (仅限 blob) 要使用的存储账户 blob URL。
  • cosmosdb_account_blob_url str - (仅限 cosmosdb) 要使用的 CosmosDB 账户 blob URL。

cache

此部分控制管道使用的缓存机制。这用于缓存 LLM 调用结果,以便在重新运行索引过程时获得更快的性能。

字段

  • type file|memory|blob|cosmosdb - 要使用的存储类型。默认值=file
  • base_dir str - 相对于根目录的输出工件写入的基本目录。
  • connection_string str - (仅限 blob/cosmosdb) Azure 存储连接字符串。
  • container_name str - (仅限 blob/cosmosdb) Azure 存储容器名称。
  • storage_account_blob_url str - (仅限 blob) 要使用的存储账户 blob URL。
  • cosmosdb_account_blob_url str - (仅限 cosmosdb) 要使用的 CosmosDB 账户 blob URL。

reporting

此部分控制管道用于常见事件和错误消息的报告机制。默认是将报告写入输出目录中的文件。但是,您也可以选择将报告写入 Azure Blob 存储容器。

字段

  • type file|blob - 要使用的报告类型。默认值=file
  • base_dir str - 相对于根目录的报告写入的基本目录。
  • connection_string str - (仅限 blob) Azure 存储连接字符串。
  • container_name str - (仅限 blob) Azure 存储容器名称。
  • storage_account_blob_url str - 要使用的存储账户 blob URL。

vector_store

存储系统所有向量的位置。默认配置为 lancedb。这是一个字典,键用于标识单个存储参数(例如,用于文本嵌入)。

字段

  • type lancedb|azure_ai_search|cosmosdb - 向量存储类型。默认值=lancedb
  • db_uri str (仅用于 lancedb) - 数据库 uri。默认值=storage.base_dir/lancedb
  • url str (仅用于 AI 搜索) - AI 搜索端点
  • api_key str (可选 - 仅用于 AI 搜索) - 要使用的 AI 搜索 api 密钥。
  • audience str (仅用于 AI 搜索) - 如果使用托管身份验证,则为托管身份令牌的受众。
  • container_name str - 向量容器的名称。这存储给定数据集摄取的所有索引(表)。默认值=default
  • database_name str - (仅限 cosmosdb) 数据库名称。
  • overwrite bool (仅在索引创建时使用) - 如果集合存在则覆盖。默认值=True

工作流配置

这些设置控制每个单独工作流的执行。

workflows

list[str] - 这是要按顺序运行的工作流名称列表。GraphRAG 具有内置管道来配置此功能,但您可以通过在此处指定列表来精确运行您想要的内容。如果您已经自己完成了部分处理,这将很有用。

embed_text

默认情况下,GraphRAG 索引器只会导出我们查询方法所需的嵌入。但是,模型为所有纯文本字段定义了嵌入,这些可以通过设置 targetnames 字段进行自定义。

支持的嵌入名称有

  • text_unit.text
  • document.text
  • entity.title
  • entity.description
  • relationship.description
  • community.title
  • community.summary
  • community.full_content

字段

  • model_id str - 用于文本嵌入的模型定义名称。
  • vector_store_id str - 要写入的向量存储定义名称。
  • batch_size int - 要使用的最大批处理大小。
  • batch_max_tokens int - 最大批处理令牌数。
  • names list[str] - 要运行的嵌入名称列表(必须在支持列表中)。

extract_graph

调整基于语言模型的图谱提取过程。

字段

  • model_id str - 用于 API 调用的模型定义名称。
  • prompt str - 要使用的提示文件。
  • entity_types list[str] - 要识别的实体类型。
  • max_gleanings int - 要使用的最大收集周期数。

summarize_descriptions

字段

  • model_id str - 用于 API 调用的模型定义名称。
  • prompt str - 要使用的提示文件。
  • max_length int - 每次摘要的最大输出令牌数。
  • max_input_length int - 用于摘要的最大令牌数(这将限制您为给定实体或关系发送多少描述进行摘要)。

extract_graph_nlp

定义基于 NLP 的图谱提取方法的设置。

字段

  • normalize_edge_weights bool - 在图谱构建过程中是否归一化边缘权重。默认值=True
  • text_analyzer dict - NLP 模型的参数。
  • extractor_type regex_english|syntactic_parser|cfg - 默认值=regex_english
  • model_name str - NLP 模型名称(基于 SpaCy 的模型)
  • max_word_length int - 允许的最长单词。默认值=15
  • word_delimiter str - 分割单词的分隔符。默认值 ' '。
  • include_named_entities bool - 名词短语中是否包含命名实体。默认值=True
  • exclude_nouns list[str] | None - 要排除的名词列表。如果为 None,则使用内部停用词列表。
  • exclude_entity_tags list[str] - 要忽略的实体标签列表。
  • exclude_pos_tags list[str] - 要忽略的词性标签列表。
  • noun_phrase_tags list[str] - 要忽略的名词短语标签列表。
  • noun_phrase_grammars dict[str, str] - 模型的名词短语语法(仅限 cfg)。

prune_graph

手动图谱修剪的参数。这可用于通过删除过度连接或稀有的节点来优化图谱集群的模块化。

字段

  • min_node_freq int - 允许的最小节点频率。
  • max_node_freq_std float | None - 允许的最大节点频率标准差。
  • min_node_degree int - 允许的最小节点度数。
  • max_node_degree_std float | None - 允许的最大节点度数标准差。
  • min_edge_weight_pct float - 允许的最小边缘权重百分比。
  • remove_ego_nodes bool - 移除自我节点。
  • lcc_only bool - 仅使用最大连通分量。

cluster_graph

这些是用于图谱的 Leiden 层次聚类以创建社区的设置。

字段

  • max_cluster_size int - 要导出的最大集群大小。
  • use_lcc bool - 是否仅使用最大连通分量。
  • seed int - 如果需要一致的运行到运行结果,则提供一个随机化种子。我们确实提供了一个默认值,以保证聚类的稳定性。

extract_claims

字段

  • enabled bool - 是否启用声明提取。默认关闭,因为声明提示确实需要用户调整。
  • model_id str - 用于 API 调用的模型定义名称。
  • prompt str - 要使用的提示文件。
  • description str - 描述我们要提取的声明类型。
  • max_gleanings int - 要使用的最大收集周期数。

community_reports

字段

  • model_id str - 用于 API 调用的模型定义名称。
  • prompt str - 要使用的提示文件。
  • max_length int - 每个报告的最大输出令牌数。
  • max_input_length int - 生成报告时要使用的最大输入令牌数。

embed_graph

我们使用 node2vec 嵌入图谱。这主要用于可视化,因此默认不启用。

字段

  • enabled bool - 是否启用图谱嵌入。
  • dimensions int - 生成的向量维度数。
  • num_walks int - node2vec 的步数。
  • walk_length int - node2vec 的步长。
  • window_size int - node2vec 的窗口大小。
  • iterations int - node2vec 的迭代次数。
  • random_seed int - node2vec 的随机种子。
  • strategy dict - 完全覆盖嵌入图谱策略。

umap

指示我们是否应该运行 UMAP 降维。这用于为每个图谱节点提供 x/y 坐标,适用于可视化。如果未启用,节点将接收 0/0 x/y 坐标。如果启用,您必须同时启用图谱嵌入。

字段

  • enabled bool - 是否启用 UMAP 布局。

snapshots

字段

  • embeddings bool - 将嵌入快照导出到 parquet。
  • graphml bool - 将图谱快照导出到 GraphML。

查询

字段

  • chat_model_id str - 用于聊天补全调用的模型定义名称。
  • embedding_model_id str - 用于嵌入调用的模型定义名称。
  • prompt str - 要使用的提示文件。
  • text_unit_prop float - 文本单元比例。
  • community_prop float - 社区比例。
  • conversation_history_max_turns int - 会话历史记录最大轮次。
  • top_k_entities int - 前 k 个映射实体。
  • top_k_relationships int - 前 k 个映射关系。
  • max_context_tokens int - 用于构建请求上下文的最大令牌数。

字段

  • chat_model_id str - 用于聊天补全调用的模型定义名称。
  • map_prompt str - 要使用的映射器提示文件。
  • reduce_prompt str - 要使用的缩减器提示文件。
  • knowledge_prompt str - 要使用的知识提示文件。
  • map_prompt str | None - 要使用的全局搜索映射器提示。
  • reduce_prompt str | None - 要使用的全局搜索缩减器。
  • knowledge_prompt str | None - 要使用的全局搜索通用提示。
  • max_context_tokens int - 要创建的最大上下文大小,以令牌为单位。
  • data_max_tokens int - 用于从缩减响应构建最终响应的最大令牌数。
  • map_max_length int - 请求映射响应的最大长度,以单词为单位。
  • reduce_max_length int - 请求缩减响应的最大长度,以单词为单位。
  • dynamic_search_threshold int - 包含社区报告的评分阈值。
  • dynamic_search_keep_parent bool - 如果任何子社区相关,则保留父社区。
  • dynamic_search_num_repeats int - 对同一社区报告评分的次数。
  • dynamic_search_use_summary bool - 使用社区摘要而不是 full_context。
  • dynamic_search_max_level int - 如果没有已处理的社区相关,则考虑的社区层次结构的最大级别。

字段

  • chat_model_id str - 用于聊天补全调用的模型定义名称。
  • embedding_model_id str - 用于嵌入调用的模型定义名称。
  • prompt str - 要使用的提示文件。
  • reduce_prompt str - 要使用的缩减器提示文件。
  • data_max_tokens int - 数据 llm 最大令牌数。
  • reduce_max_tokens int - 缩减阶段的最大令牌数。仅在非 o 系列模型时使用。
  • reduce_max_completion_tokens int - 缩减阶段的最大令牌数。仅在 o 系列模型时使用。
  • concurrency int - 并发请求数。
  • drift_k_followups int - 要检索的前 k 个全局结果。
  • primer_folds int - 搜索预处理的折叠数。
  • primer_llm_max_tokens int - 预处理器中 LLM 的最大令牌数。
  • n_depth int - 要执行的漂移搜索步骤数。
  • local_search_text_unit_prop float - 专用于文本单元的搜索比例。
  • local_search_community_prop float - 专用于社区属性的搜索比例。
  • local_search_top_k_mapped_entities int - 本地搜索期间要映射的前 K 个实体数。
  • local_search_top_k_relationships int - 本地搜索期间要映射的前 K 个关系数。
  • local_search_max_data_tokens int - 本地搜索的最大上下文大小(以令牌为单位)。
  • local_search_temperature float - 本地搜索中令牌生成使用的温度。
  • local_search_top_p float - 本地搜索中令牌生成使用的 top-p 值。
  • local_search_n int - 本地搜索中要生成的补全数。
  • local_search_llm_max_gen_tokens int - 本地搜索中 LLM 生成的最大令牌数。仅在非 o 系列模型时使用。
  • local_search_llm_max_gen_completion_tokens int - 本地搜索中 LLM 生成的最大令牌数。仅在 o 系列模型时使用。

字段

  • chat_model_id str - 用于聊天补全调用的模型定义名称。
  • embedding_model_id str - 用于嵌入调用的模型定义名称。
  • prompt str - 要使用的提示文件。
  • k int | None - 从向量存储中检索用于上下文构建的文本单元数。