配置管理
配置管理
相关源文件
本 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 采用三层配置系统,将基础设施设置、服务参数和运行时默认值分离开来。在启动时,系统会将这三个来源解析为一个统一的配置对象,供所有子系统使用。
标题:配置处理流程
来源: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 环境变量,实现了在不同向量和全文检索引擎之间的无缝切换。
标题:文档引擎配置映射
来源: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中硬编码的默认值。
标题:配置实体映射
来源: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