【RAGFlow代码详解-5】配置系统
配置架构概述
RAGFlow 的配置系统通过多层运行,为不同的部署场景和运行时要求提供了灵活性。
服务配置系统
主配置在 service_conf.yaml
中定义,它为所有核心服务及其连接参数提供结构化设置。
核心服务配置结构
配置部分 | 目的 | 按键设置 |
---|---|---|
ragflow | 核心服务设置 | 主机 , http_port |
mysql/postgres | 数据库连接 | 主机 、 端口 、 用户 、 密码 、 名称 |
minio/s3/ 作系统 /azure | 对象存储 | 连接凭据和终结点 |
ES/ 作系统 / 无穷大 | 搜索引擎 | 主机、身份验证、数据库名称 |
redis | 缓存和任务队列 | 主机、端口、数据库、密码 |
user_default_llm | LLM 提供程序默认值 | 工厂 、api_key、base_url、default_models |
oauth | 身份验证提供程序 | 特定于提供程序的 OAuth/OIDC 设置 |
smtp | 电子邮件配置 | 通知的邮件服务器设置 |
全局设置系统
api/settings.py 中的全局设置系统管理运行时配置,并通过模块级变量提供对所有配置参数的集中访问。
配置加载过程
关键全局配置变量
变量类别 | 关键变量 | 目的 |
---|---|---|
LLM 配置 | CHAT_MDL、EMBEDDING_MDL、RERANK_MDL | 默认模型标识符 |
认证 | OAUTH_CONFIG、CLIENT_AUTHENTICATION | OAuth 提供程序设置 |
数据库 | DATABASE_TYPE、 数据库 | 数据库连接配置 |
文档引擎 | DOC_ENGINE,docStoreConn | 搜索后端选择 |
安全 | SECRET_KEY、API_KEY | 加密和 API 密钥 |
注册 | REGISTER_ENABLED | 用户注册控制 |
电子邮件 | SMTP_CONF、MAIL_SERVER | 电子邮件服务配置 |
环境配置
环境变量提供特定于部署的覆盖,并通过 service_conf.yaml.template 中的模板替换在 Docker 部署中广泛使用。
环境变量类别
关键环境变量
变量 | 违约 | 目的 |
---|---|---|
DB_TYPE | mysql | 数据库后端选择 |
DOC_ENGINE | elasticsearch | 搜索引擎后端选择 |
STORAGE_IMPL | MINIO | 对象存储实现 |
REGISTER_ENABLED | 1 | 用户注册控制 |
LIGHTEN | 0 | 轻量级模式切换 |
RAGFLOW_SECRET_KEY | 自动生成 | 应用程序加密密钥 |
存储后端配置
存储系统通过工厂模式支持多个后端,允许根据配置进行运行时选择。
存储后端选择
存储配置示例
后端 | 配置部分 | 关键参数 |
---|---|---|
最小值 | minio 用户 、 密码 、 主机 | |
AWS S3 | s3 | access_key、secret_key、 区域 、 存储桶 |
阿里巴巴 OSS | oss | access_key、secret_key、endpoint_url、区域 |
Azure SAS | azure | auth_type:SAS、container_url、sas_token |
Azure SPN | azure | auth_type:spn、client_id、secret、tenant_id |
开放 DAL | opendal | scheme, 配置对象 |
身份验证配置
认证系统通过统一的配置接口支持多个 OAuth 和 OIDC 提供程序。
身份验证提供程序配置
OAuth 提供程序配置结构
提供程序类型 | 必填字段 | 自动发现 |
---|---|---|
oauth2 | client_id、client_secret、authorization_url、token_url userinfo_url | 没有 |
oidc | client_id、client_secret、 发行人 | 自动过孔 /.well-known/openid-configuration |
github | client_id、client_secret | 内置 GitHub 终结点 |
LLM 提供程序配置
LLM 配置系统支持多个 AI 提供商,具有灵活的模型选择和每个模型的配置覆盖。
LLM 配置结构
模型配置解析
系统通过分层方法解析模型配置:
-
特定于模型的配置 - 单个模型设置覆盖全局设置
-
全局 LLM 配置 - user_default_llm 的提供程序级默认值
-
系统默认值 - 内置回退模型,如 BUILTIN_EMBEDDING_MODELS
配置级别 例 目的 特定于型号 {“name”: “gpt-4”, “api_key”: “sk-xxx”, “factory”: “OpenAI”} 特定模型的覆盖 全球 {“factory”: “OpenAI”, “api_key”: “sk-yyy”, “base_url”: “https://api.openai.com”} 提供程序默认值 系统 BUILTIN_EMBEDDING_MODELS = [“BAAI/bge-large-zh-v1.5@BAAI”] 回退模型
配置加载和初始化
配置系统通过建立所有服务连接并验证配置完整性的协调过程进行初始化。
初始化序列
配置验证和错误处理
系统在初始化期间执行多个验证步骤:
- 数据库连接 - 测试数据库连接并处理解密
- 存储后端验证 - 验证存储服务的可访问性
- LLM 提供程序验证 - 验证 API 密钥和终结点
- 身份验证提供程序验证 - 测试 OAuth 提供程序连接
严重配置故障会导致应用程序启动失败,而非严重故障(如 SMTP 配置)允许应用程序在功能减少的情况下启动。