配置管理(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/infiniflow/ragflow/2.2-configuration-management
翻译时间:2026-05-27T08:44:23.259Z
翻译模型:deepseek-chat
原文字符数:10191
项目:RAGFlow (ragflow)
--- 好的,作为一名资深技术文档翻译专家,我将严格遵循您的要求,对这份 DeepWiki 技术文档进行全文翻译和润色。
---
配置管理
相关源文件
本 Wiki 页面的生成参考了以下文件:
README.mdREADME_ar.mdREADME_fr.mdREADME_id.mdREADME_ja.mdREADME_ko.mdREADME_pt_br.mdREADME_tr.mdREADME_tzh.mdREADME_zh.mdadmin/server/admin_server.pyapi/apps/__init__.pyapi/db/init_data.pyapi/ragflow_server.pyapi/settings.pyapi/utils/api_utils.pycommon/doc_store/ob_conn_base.pycommon/doc_store/ob_conn_pool.pycommon/settings.pyconf/service_conf.yamldocker/.envdocker/README.mddocker/service_conf.yaml.templatedocs/guides/manage_files.mddocs/quickstart.mdxmemory/utils/aggregation_utils.pymemory/utils/highlight_utils.pymemory/utils/ob_conn.pyrag/utils/ob_conn.pyrag/utils/redis_conn.pytest/testcases/test_web_api/test_system_app/test_apps_init_unit.pytest/unit_test/memory/utils/test_ob_conn_aggregation.pytest/unit_test/memory/utils/test_ob_conn_highlight.py
本文档阐述了 RAGFlow 的配置系统,包括环境变量、服务配置文件以及运行时设置如何协同工作,以配置应用程序及其依赖项。有关使用这些配置进行部署的步骤,请参阅 Docker Compose 部署。有关文档引擎的特定配置,请参阅 文档引擎选择。
配置架构
RAGFlow 采用三层配置系统,将基础设施设置、服务参数和运行时默认值分离开来。在启动时,系统会将这三个来源解析为一个统一的配置对象,供所有子系统使用。
标题:配置处理流程
graph TB
subgraph "第一层:环境变量"
EnvFile["docker/.env<br/>系统环境"]
EnvVars["环境变量<br/>ES_PORT, MYSQL_PASSWORD 等"]
end
subgraph "第二层:服务配置"
TemplateFile["docker/service_conf.yaml.template"]
ConfigFile["conf/service_conf.yaml<br/>(开发环境)"]
Entrypoint["docker/entrypoint.sh<br/>变量替换"]
end
subgraph "第三层:运行时设置"
SettingsInit["settings.init_settings()"]
SettingsModule["common.settings"]
RuntimeConfig["api.db.runtime_config.RuntimeConfig"]
end
subgraph "应用组件"
RagflowServer["ragflow_server.py"]
TaskExecutor["task_executor.py"]
APIApps["API 应用"]
end
EnvFile --> EnvVars
EnvVars -->|"${VAR:-default}"| TemplateFile
TemplateFile -->|"入口脚本"| Entrypoint
Entrypoint -->|"生成"| ConfigFile
ConfigFile --> SettingsInit
SettingsInit --> SettingsModule
SettingsModule --> RuntimeConfig
RuntimeConfig --> RagflowServer
RuntimeConfig --> TaskExecutor
RuntimeConfig --> APIApps
来源:docker/.env:1-20, api/ragflow_server.py:91-92, api/ragflow_server.py:126-127
环境变量
环境变量主要在 docker/.env 文件中定义 docker/.env:1-180。这些变量控制着 Docker 容器的行为、网络端口映射和服务凭证。在容器入口点阶段,它们会通过模板替换的方式注入到服务配置中。
核心基础设施变量
| 类别 | 变量 | 默认值 | 描述 |
|---|---|---|---|
| 文档引擎 | DOC_ENGINE | elasticsearch | 可选值:elasticsearch、infinity、oceanbase、opensearch、seekdb docker/.env:13-20 |
ES_HOST | es01 | Elasticsearch 主机名 docker/.env:34-34 | |
ES_PORT | 1200 | Elasticsearch 外部端口 docker/.env:38-38 | |
ELASTIC_PASSWORD | infini_rag_flow | Elasticsearch 密码 docker/.env:42-42 | |
INFINITY_HOST | infinity | Infinity 主机名 docker/.env:68-68 | |
| 数据库 | MYSQL_HOST | mysql | MySQL 主机名 docker/.env:113-113 |
MYSQL_PORT | 3306 | MySQL 内部连接端口 docker/.env:118-118 | |
MYSQL_PASSWORD | infini_rag_flow | MySQL root 密码 docker/.env:111-111 | |
MYSQL_DBNAME | rag_flow | MySQL 数据库名称 docker/.env:115-115 | |
| 对象存储 | MINIO_HOST | minio | MinIO 主机名 docker/.env:125-125 |
MINIO_USER | rag_flow | MinIO 用户名 docker/.env:135-135 | |
MINIO_PASSWORD | infini_rag_flow | MinIO 密码 docker/.env:138-138 | |
| 缓存 | REDIS_HOST | redis | Redis 主机名 docker/.env:141-141 |
REDIS_PASSWORD | infini_rag_flow | Redis 密码 docker/.env:146-146 |
部署控制变量
RAGFlow 使用环境变量来切换功能和管理资源分配:
# DeepDoc 推理的设备选择(cpu 或 gpu)
DEVICE=${DEVICE:-cpu} # [docker/.env:26-26]
# Docker Compose 配置文件(根据 DOC_ENGINE 和 DEVICE 自动构建)
COMPOSE_PROFILES=${DOC_ENGINE},${DEVICE} # [docker/.env:28-28]
# Docker 容器的资源限制
MEM_LIMIT=8073741824 # [docker/.env:65-65]
# 服务器部署模式(python 或与 Go 混合模式)
API_PROXY_SCHEME=python # [docker/.env:159-159]
来源:docker/.env:26-159
服务配置模板
docker/service_conf.yaml.template 文件是主配置蓝图。它使用 ${VAR:-default} 语法,允许环境变量覆盖默认设置。
文档引擎抽象
该配置通过 DOC_ENGINE 环境变量,实现了在不同向量和全文检索引擎之间的无缝切换。
标题:文档引擎配置映射
graph TD
DOC_ENGINE{"DOC_ENGINE 变量"}
DOC_ENGINE -- "elasticsearch" --> ES["章节: es<br/>hosts: ES_HOST:9200"]
DOC_ENGINE -- "infinity" --> INF["章节: infinity<br/>uri: INFINITY_HOST:23817"]
DOC_ENGINE -- "opensearch" --> OS["章节: os<br/>hosts: OS_HOST:1201"]
DOC_ENGINE -- "oceanbase" --> OB["章节: oceanbase<br/>host: OCEANBASE_HOST"]
ES --> API["DocumentStore 工厂"]
INF --> API
OS --> API
OB --> API
来源:docker/.env:13-20, docker/.env:45-48
配置加载与初始化
启动顺序
当 ragflow_server.py 启动时,会遵循一个严格的初始化顺序:
- 日志器初始化:调用
init_root_logger("ragflow_server")api/ragflow_server.py:75-75。 - 配置展示:调用
show_configs()和settings.print_rag_settings()api/ragflow_server.py:90-92。 - 设置初始化:执行
settings.init_settings(),将生成的 YAML 文件中的值加载到内存中api/ragflow_server.py:91-91。 - 数据库同步:通过
init_web_db()初始化数据表,并通过init_web_data()初始化默认数据api/ragflow_server.py:100-101。 - 运行时环境:调用
RuntimeConfig.init_env()来设置全局执行上下文api/ragflow_server.py:126-126。
超级用户初始化
RAGFlow 支持通过命令行标志 --init-superuser 自动创建超级用户 api/ragflow_server.py:113-113。这会触发 init_superuser() 函数,该函数会设置初始管理账户和默认的租户模型 api/db/init_data.py:50-94。初始化逻辑还会尝试验证与已配置的大语言模型(LLM)和嵌入向量模型的连接 api/db/init_data.py:96-109。
配置优先级
配置值的解析遵循以下优先级顺序:
- 系统环境变量:优先级最高,通常通过
docker compose注入。 .env文件:在docker/.env中定义的变量。- YAML 配置:
conf/service_conf.yaml(由模板生成)中的值。 - 模板默认值:
service_conf.yaml.template中硬编码的默认值。
标题:配置实体映射
graph LR
subgraph "自然语言空间"
S1["'数据库密码'"]
S2["'搜索引擎类型'"]
S3["'Web 端口'"]
S4["'调试模式'"]
end
subgraph "代码实体空间"
E1["MYSQL_PASSWORD (环境变量)"]
E2["DOC_ENGINE (环境变量)"]
E3["SVR_HTTP_PORT (环境变量)"]
E4["RAGFLOW_DEBUG (环境变量)"]
C1["settings.MYSQL['password']"]
C2["common.settings.DOC_ENGINE"]
C3["settings.HOST_PORT"]
C4["RuntimeConfig.DEBUG"]
end
S1 --> E1
S2 --> E2
S3 --> E3
S4 --> E4
E1 --> C1
E2 --> C2
E3 --> C3
E4 --> C4
来源:docker/.env:111-111, docker/.env:20-20, docker/.env:152-152, api/ragflow_server.py:122-123, api/ragflow_server.py:127-127
配置参考:端口
| 服务 | 内部端口 | 环境变量 |
|---|---|---|
| RAGFlow HTTP | 9380 | SVR_HTTP_PORT docker/.env:152-152 |
| 管理服务 | 9381 | ADMIN_SVR_HTTP_PORT docker/.env:153-153 |
| MCP 服务器 | 9382 | SVR_MCP_PORT docker/.env:154-154 |
| Go 服务器 | 9384 | GO_HTTP_PORT docker/.env:155-155 |
| MySQL | 3306 | MYSQL_PORT docker/.env:118-118 |
| Redis | 6379 | REDIS_PORT docker/.env:144-144 |
来源:docker/.env:118-155