默认配置模式(使用 YAML/JSON)
默认配置模式可以通过在数据项目根目录中使用 settings.yml 或 settings.json 文件进行配置。如果存在 .env 文件和此配置文件,则会加载该文件,并且其中定义的环境变量将可通过 ${ENV_VAR} 语法用于配置文档中的令牌替换。我们默认在 graphrag init 中使用 YML 进行初始化,但如果偏好,您可以使用等效的 JSON 格式。
许多这些配置值都有默认值。为避免在此处重复,请直接参考代码中的常量。
例如
配置部分
语言模型设置
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_keystr - 要使用的 OpenAI API 密钥。auth_typeapi_key|azure_managed_identity - 指示您希望如何验证请求。typechat|embedding|openai_chat|azure_openai_chat|openai_embedding|azure_openai_embedding|mock_chat|mock_embeddings - 要使用的 LLM 类型。model_providerstr|None - 要使用的模型提供商,例如 openai、azure、anthropic 等。当type == chat|embedding时必需。当type == chat|embedding时,底层使用 LiteLLM,它支持调用 100 多个模型。查看 LiteLLm 基本用法了解模型调用详情(model_provider是/之前的部分,而model是/之后的部分)。查看语言模型选择了解使用 LiteLLM 的更多详细信息和示例。modelstr - 模型名称。encoding_modelstr - 要使用的文本编码模型。默认是使用与语言模型对齐的编码模型(即,如果未设置,则从 tiktoken 中检索)。api_basestr - 要使用的 API 基本 URL。api_versionstr - API 版本。deployment_namestr - 要使用的部署名称(Azure)。organizationstr - 客户端组织。proxystr - 要使用的代理 URL。audiencestr - (仅限 Azure OpenAI) 请求托管身份令牌的目标 Azure 资源/服务的 URI。如果未定义api_key则使用。默认值=https://cognitiveservices.azure.com/.defaultmodel_supports_jsonbool - 模型是否支持 JSON 模式输出。request_timeoutfloat - 每个请求的超时时间。tokens_per_minuteint - 设置每分钟令牌数的漏桶节流。requests_per_minuteint - 设置每分钟请求数的漏桶节流。retry_strategystr - 要使用的重试策略,"native" 是默认值,使用 OpenAI SDK 内置的策略。其他允许的值包括 "exponential_backoff"、"random_wait" 和 "incremental_wait"。max_retriesint - 要使用的最大重试次数。max_retry_waitfloat - 最大回退时间。concurrent_requestsint 允许同时进行的开放请求数。async_modeasyncio|threaded 要使用的异步模式。可以是asyncio或threaded。responseslist[str] - 如果此模型类型是模拟,则这是要返回的响应字符串列表。nint - 要生成的补全数。max_tokensint - 最大输出令牌数。对 o 系列模型无效。temperaturefloat - 要使用的温度。对 o 系列模型无效。top_pfloat - 要使用的 top-p 值。对 o 系列模型无效。frequency_penaltyfloat - 令牌生成的频率惩罚。对 o 系列模型无效。presence_penaltyfloat - 令牌生成的频率惩罚。对 o 系列模型无效。max_completion_tokensint - 聊天补全消耗的最大令牌数。必须足够大以包含模型“推理”的未知数量。仅适用于 o 系列模型。reasoning_effortlow|medium|high - 模型推理响应所需的“思考”量。仅适用于 o 系列模型。
输入文件和分块
input
我们的管道可以从输入位置摄取 .csv、.txt 或 .json 数据。有关更多详细信息和示例,请参阅输入页面。
字段
storageStorageConfigtypefile|blob|cosmosdb - 要使用的存储类型。默认值=filebase_dirstr - 相对于根目录的输出工件写入的基本目录。connection_stringstr - (仅限 blob/cosmosdb) Azure 存储连接字符串。container_namestr - (仅限 blob/cosmosdb) Azure 存储容器名称。storage_account_blob_urlstr - (仅限 blob) 要使用的存储账户 blob URL。cosmosdb_account_blob_urlstr - (仅限 cosmosdb) 要使用的 CosmosDB 账户 blob URL。file_typetext|csv|json - 要加载的输入数据类型。默认值是textencodingstr - 输入文件的编码。默认值是utf-8file_patternstr - 匹配输入文件的正则表达式。默认值是.*\.csv$、.*\.txt$或.*\.json$,具体取决于指定的file_type,但您可以根据需要进行自定义。file_filterdict - 用于过滤的键/值对。默认值为 None。text_columnstr - (仅限 CSV/JSON) 文本列名称。如果未设置,我们期望一个名为text的列。title_columnstr - (仅限 CSV/JSON) 标题列名称,如果未设置,则使用文件名。metadatalist[str] - (仅限 CSV/JSON) 要保留的附加文档属性字段。
chunks
这些设置配置我们将文档解析成文本块的方式。这是必要的,因为非常大的文档可能无法适应单个上下文窗口,并且图谱提取的准确性可能会受到影响。另请注意输入文档配置中的 metadata 设置,它将文档元数据复制到每个块中。
字段
sizeint - 令牌中的最大块大小。overlapint - 令牌中的块重叠。group_by_columnslist[str] - 在分块之前按这些字段对文档进行分组。strategystr[tokens|sentences] - 如何分块文本。encoding_modelstr - 用于按令牌边界分割的文本编码模型。prepend_metadatabool - 确定是否应在每个块的开头添加元数据值。默认值=False。chunk_size_includes_metadatabool - 指定块大小计算是否应包含元数据令牌。默认值=False。
输出和存储
output
此部分控制管道用于导出输出表的存储机制。
字段
typefile|memory|blob|cosmosdb - 要使用的存储类型。默认值=filebase_dirstr - 相对于根目录的输出工件写入的基本目录。connection_stringstr - (仅限 blob/cosmosdb) Azure 存储连接字符串。container_namestr - (仅限 blob/cosmosdb) Azure 存储容器名称。storage_account_blob_urlstr - (仅限 blob) 要使用的存储账户 blob URL。cosmosdb_account_blob_urlstr - (仅限 cosmosdb) 要使用的 CosmosDB 账户 blob URL。
update_index_output
此部分定义了用于运行增量索引的辅助存储位置,以保留您的原始输出。
字段
typefile|memory|blob|cosmosdb - 要使用的存储类型。默认值=filebase_dirstr - 相对于根目录的输出工件写入的基本目录。connection_stringstr - (仅限 blob/cosmosdb) Azure 存储连接字符串。container_namestr - (仅限 blob/cosmosdb) Azure 存储容器名称。storage_account_blob_urlstr - (仅限 blob) 要使用的存储账户 blob URL。cosmosdb_account_blob_urlstr - (仅限 cosmosdb) 要使用的 CosmosDB 账户 blob URL。
cache
此部分控制管道使用的缓存机制。这用于缓存 LLM 调用结果,以便在重新运行索引过程时获得更快的性能。
字段
typefile|memory|blob|cosmosdb - 要使用的存储类型。默认值=filebase_dirstr - 相对于根目录的输出工件写入的基本目录。connection_stringstr - (仅限 blob/cosmosdb) Azure 存储连接字符串。container_namestr - (仅限 blob/cosmosdb) Azure 存储容器名称。storage_account_blob_urlstr - (仅限 blob) 要使用的存储账户 blob URL。cosmosdb_account_blob_urlstr - (仅限 cosmosdb) 要使用的 CosmosDB 账户 blob URL。
reporting
此部分控制管道用于常见事件和错误消息的报告机制。默认是将报告写入输出目录中的文件。但是,您也可以选择将报告写入 Azure Blob 存储容器。
字段
typefile|blob - 要使用的报告类型。默认值=filebase_dirstr - 相对于根目录的报告写入的基本目录。connection_stringstr - (仅限 blob) Azure 存储连接字符串。container_namestr - (仅限 blob) Azure 存储容器名称。storage_account_blob_urlstr - 要使用的存储账户 blob URL。
vector_store
存储系统所有向量的位置。默认配置为 lancedb。这是一个字典,键用于标识单个存储参数(例如,用于文本嵌入)。
字段
typelancedb|azure_ai_search|cosmosdb - 向量存储类型。默认值=lancedbdb_uristr (仅用于 lancedb) - 数据库 uri。默认值=storage.base_dir/lancedburlstr (仅用于 AI 搜索) - AI 搜索端点api_keystr (可选 - 仅用于 AI 搜索) - 要使用的 AI 搜索 api 密钥。audiencestr (仅用于 AI 搜索) - 如果使用托管身份验证,则为托管身份令牌的受众。container_namestr - 向量容器的名称。这存储给定数据集摄取的所有索引(表)。默认值=defaultdatabase_namestr - (仅限 cosmosdb) 数据库名称。overwritebool (仅在索引创建时使用) - 如果集合存在则覆盖。默认值=True
工作流配置
这些设置控制每个单独工作流的执行。
workflows
list[str] - 这是要按顺序运行的工作流名称列表。GraphRAG 具有内置管道来配置此功能,但您可以通过在此处指定列表来精确运行您想要的内容。如果您已经自己完成了部分处理,这将很有用。
embed_text
默认情况下,GraphRAG 索引器只会导出我们查询方法所需的嵌入。但是,模型为所有纯文本字段定义了嵌入,这些可以通过设置 target 和 names 字段进行自定义。
支持的嵌入名称有
text_unit.textdocument.textentity.titleentity.descriptionrelationship.descriptioncommunity.titlecommunity.summarycommunity.full_content
字段
model_idstr - 用于文本嵌入的模型定义名称。vector_store_idstr - 要写入的向量存储定义名称。batch_sizeint - 要使用的最大批处理大小。batch_max_tokensint - 最大批处理令牌数。nameslist[str] - 要运行的嵌入名称列表(必须在支持列表中)。
extract_graph
调整基于语言模型的图谱提取过程。
字段
model_idstr - 用于 API 调用的模型定义名称。promptstr - 要使用的提示文件。entity_typeslist[str] - 要识别的实体类型。max_gleaningsint - 要使用的最大收集周期数。
summarize_descriptions
字段
model_idstr - 用于 API 调用的模型定义名称。promptstr - 要使用的提示文件。max_lengthint - 每次摘要的最大输出令牌数。max_input_lengthint - 用于摘要的最大令牌数(这将限制您为给定实体或关系发送多少描述进行摘要)。
extract_graph_nlp
定义基于 NLP 的图谱提取方法的设置。
字段
normalize_edge_weightsbool - 在图谱构建过程中是否归一化边缘权重。默认值=True。text_analyzerdict - 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_sizeint - 要导出的最大集群大小。use_lccbool - 是否仅使用最大连通分量。seedint - 如果需要一致的运行到运行结果,则提供一个随机化种子。我们确实提供了一个默认值,以保证聚类的稳定性。
extract_claims
字段
enabledbool - 是否启用声明提取。默认关闭,因为声明提示确实需要用户调整。model_idstr - 用于 API 调用的模型定义名称。promptstr - 要使用的提示文件。descriptionstr - 描述我们要提取的声明类型。max_gleaningsint - 要使用的最大收集周期数。
community_reports
字段
model_idstr - 用于 API 调用的模型定义名称。promptstr - 要使用的提示文件。max_lengthint - 每个报告的最大输出令牌数。max_input_lengthint - 生成报告时要使用的最大输入令牌数。
embed_graph
我们使用 node2vec 嵌入图谱。这主要用于可视化,因此默认不启用。
字段
enabledbool - 是否启用图谱嵌入。dimensionsint - 生成的向量维度数。num_walksint - node2vec 的步数。walk_lengthint - node2vec 的步长。window_sizeint - node2vec 的窗口大小。iterationsint - node2vec 的迭代次数。random_seedint - node2vec 的随机种子。strategydict - 完全覆盖嵌入图谱策略。
umap
指示我们是否应该运行 UMAP 降维。这用于为每个图谱节点提供 x/y 坐标,适用于可视化。如果未启用,节点将接收 0/0 x/y 坐标。如果启用,您必须同时启用图谱嵌入。
字段
enabledbool - 是否启用 UMAP 布局。
snapshots
字段
embeddingsbool - 将嵌入快照导出到 parquet。graphmlbool - 将图谱快照导出到 GraphML。
查询
local_search
字段
chat_model_idstr - 用于聊天补全调用的模型定义名称。embedding_model_idstr - 用于嵌入调用的模型定义名称。promptstr - 要使用的提示文件。text_unit_propfloat - 文本单元比例。community_propfloat - 社区比例。conversation_history_max_turnsint - 会话历史记录最大轮次。top_k_entitiesint - 前 k 个映射实体。top_k_relationshipsint - 前 k 个映射关系。max_context_tokensint - 用于构建请求上下文的最大令牌数。
global_search
字段
chat_model_idstr - 用于聊天补全调用的模型定义名称。map_promptstr - 要使用的映射器提示文件。reduce_promptstr - 要使用的缩减器提示文件。knowledge_promptstr - 要使用的知识提示文件。map_promptstr | None - 要使用的全局搜索映射器提示。reduce_promptstr | None - 要使用的全局搜索缩减器。knowledge_promptstr | None - 要使用的全局搜索通用提示。max_context_tokensint - 要创建的最大上下文大小,以令牌为单位。data_max_tokensint - 用于从缩减响应构建最终响应的最大令牌数。map_max_lengthint - 请求映射响应的最大长度,以单词为单位。reduce_max_lengthint - 请求缩减响应的最大长度,以单词为单位。dynamic_search_thresholdint - 包含社区报告的评分阈值。dynamic_search_keep_parentbool - 如果任何子社区相关,则保留父社区。dynamic_search_num_repeatsint - 对同一社区报告评分的次数。dynamic_search_use_summarybool - 使用社区摘要而不是 full_context。dynamic_search_max_levelint - 如果没有已处理的社区相关,则考虑的社区层次结构的最大级别。
drift_search
字段
chat_model_idstr - 用于聊天补全调用的模型定义名称。embedding_model_idstr - 用于嵌入调用的模型定义名称。promptstr - 要使用的提示文件。reduce_promptstr - 要使用的缩减器提示文件。data_max_tokensint - 数据 llm 最大令牌数。reduce_max_tokensint - 缩减阶段的最大令牌数。仅在非 o 系列模型时使用。reduce_max_completion_tokensint - 缩减阶段的最大令牌数。仅在 o 系列模型时使用。concurrencyint - 并发请求数。drift_k_followupsint - 要检索的前 k 个全局结果。primer_foldsint - 搜索预处理的折叠数。primer_llm_max_tokensint - 预处理器中 LLM 的最大令牌数。n_depthint - 要执行的漂移搜索步骤数。local_search_text_unit_propfloat - 专用于文本单元的搜索比例。local_search_community_propfloat - 专用于社区属性的搜索比例。local_search_top_k_mapped_entitiesint - 本地搜索期间要映射的前 K 个实体数。local_search_top_k_relationshipsint - 本地搜索期间要映射的前 K 个关系数。local_search_max_data_tokensint - 本地搜索的最大上下文大小(以令牌为单位)。local_search_temperaturefloat - 本地搜索中令牌生成使用的温度。local_search_top_pfloat - 本地搜索中令牌生成使用的 top-p 值。local_search_nint - 本地搜索中要生成的补全数。local_search_llm_max_gen_tokensint - 本地搜索中 LLM 生成的最大令牌数。仅在非 o 系列模型时使用。local_search_llm_max_gen_completion_tokensint - 本地搜索中 LLM 生成的最大令牌数。仅在 o 系列模型时使用。
basic_search
字段
chat_model_idstr - 用于聊天补全调用的模型定义名称。embedding_model_idstr - 用于嵌入调用的模型定义名称。promptstr - 要使用的提示文件。kint | None - 从向量存储中检索用于上下文构建的文本单元数。