管理与操作
管理与运维
相关源文件
本章引用的主要源码文件:
admin/client/http_client.pyadmin/client/parser.pyadmin/client/ragflow_cli.pyadmin/client/ragflow_client.pyadmin/client/user.pyadmin/server/auth.pyadmin/server/config.pyadmin/server/roles.pyadmin/server/routes.pyadmin/server/services.pyagent/component/list_operations.pyapi/db/services/system_settings_service.pyapi/utils/health_utils.pybuild.shconf/system_settings.jsoninternal/dao/database.gointernal/dao/license.gointernal/dao/time_record.gointernal/engine/engine.gointernal/handler/auth.gointernal/handler/kb.gointernal/handler/tenant.gointernal/utility/convert.gotest/testcases/test_web_api/test_canvas_app/test_list_operations_unit.pyweb/src/pages/agent/canvas/node/list-operations-node.tsxweb/src/pages/agent/form/list-operations-form/index.tsx
本文档提供了 RAGFlow 管理与运维基础设施的技术概述。该系统采用双服务器架构进行管理(基于 Python 和基于 Go),一个用于代码执行的安全沙箱,以及一套全面的 CLI 和迁移工具,用于管理多租户环境和系统健康状态。
管理服务与 CLI
RAGFlow 拥有一个独立于核心 RAG 服务的专用管理层。该层同时以基于 Python 的服务器和基于 Go 的服务形式实现,其中 Go 实现越来越多地用于处理高性能需求和二进制分发。
管理服务器架构
管理服务器管理系统级实体,如用户、租户和全局设置。
- Go 管理后端:在
cmd/admin_server.go中定义,并由internal/handler/中的处理器支持。它提供用于用户管理、基于角色的访问控制(RBAC)和服务监控的端点。数据库层通过internal/dao/database.go中的InitDB初始化,该函数处理User、Tenant和APIToken等实体的自动迁移internal/dao/database.go:114-155。 - Python 管理后端:一个基于 Flask 的实现,为用户、系统设置和环境配置提供管理服务
admin/server/routes.py:35。它利用专门的管理器,如用于生命周期操作的UserMgradmin/server/services.py:40-124和用于监控基础设施的ServiceMgradmin/server/services.py:28。 - 认证:两个后端都强制要求超级用户才能访问。Python 版本使用
check_admin_auth装饰器admin/server/auth.py:146-159,该装饰器会验证数据库中is_superuser标志admin/server/auth.py:152-153。Go 版本使用专门的中间件,确保只有授权的管理员才能访问/api/v1/admin前缀。 - 用户管理:实现了列出所有用户
admin/server/services.py:42-55、创建具有特定角色的用户admin/server/services.py:81-96以及通过APITokenService管理 API 令牌admin/server/services.py:151-170的逻辑。
RAGFlow CLI
ragflow-cli 是一个命令行界面,用于将管理命令转换为 API 请求。它被编译为独立的二进制文件 build.sh:98。
| 组件 | 职责 | 源文件 |
|---|---|---|
RAGFlowClient | 基于 ServerType(admin/user)编排命令执行 | admin/client/ragflow_client.py:46-49 |
HttpClient | 底层 HTTP 请求处理,支持用于基准测试的迭代 | admin/client/http_client.py:26-145 |
Lark Grammar | 定义 CLI 命令的类 SQL 语法(例如,LIST SERVICES, ACTIVATE USER) | admin/client/parser.py:19-227 |
User Utility | 处理 CLI 的密码加密和登录逻辑 | admin/client/user.py:1-25 |
详情请参见 管理服务与 CLI。
沙箱代码执行器
为了支持 Agent 工作流中的 Code 组件,RAGFlow 使用了一个安全的沙箱环境。这确保了用户提供的 Python 脚本在隔离环境中执行。
- 工作流集成:
ListOperations组件agent/component/list_operations.py:48和其他数据处理节点通常需要隔离的执行逻辑来安全地操作数组和对象。 - 隔离策略:系统支持通过 gVisor 或类似的基于容器的隔离方式进行安全执行。
- 代码组件:Agent 画布中的
Code节点允许用户编写自定义的 Python 逻辑。该逻辑被传输到沙箱执行器,执行器返回结果,同时阻止对主机文件系统或网络的访问。 - 安全性:执行受到通过环境变量(如
COMPONENT_EXEC_TIMEOUT)定义的超时保护agent/component/list_operations.py:51。
详情请参见 沙箱代码执行器。
测试基础设施
RAGFlow 维护了一个多层测试套件,以确保系统在不同文档引擎和模型提供商之间的稳定性。
- SDK 和 API 测试:对 RESTful 端点和 SDK 完整性的自动化测试。
- 单元测试:分布在代码库中,用于测试单个组件,例如
ListOperations逻辑test/testcases/test_web_api/test_canvas_app/test_list_operations_unit.py。 - 集成测试:验证 Go 处理器层
internal/handler/kb.go:31与底层文档引擎之间的交互。 - 端到端测试:基于 Playwright 的测试,用于验证通过 Web 界面的完整用户旅程。
详情请参见 测试基础设施。
迁移与实用工具
tools/ 目录和各个服务层包含用于运维维护和数据迁移的实用程序。
- 数据库初始化:初始化默认管理员账户(
admin@ragflow.io)和设置初始租户模型的逻辑admin/server/auth.py:90-116。 - 构建系统:一个统一的
build.sh脚本管理 C++ 分词器和 Go 二进制文件的编译,用于服务器、管理服务和 CLIbuild.sh:55-113。 - 健康监控:
health_utils.py为 MySQL(check_db)、Redis(check_redis)以及包括 Elasticsearch、Infinity 和 OceanBase 在内的各种文档引擎提供深度探针api/utils/health_utils.py:34-133。它提供详细的 OceanBase 指标,包括延迟、QPS 和存储使用情况api/utils/health_utils.py:195-201。
详情请参见 迁移与实用工具。
系统交互图
管理控制流
此图连接了 CLI 空间与后端实体,突出了 Python 和 Go 双管理路径。
来源: cmd/admin_server.go, admin/server/routes.py:35-44, internal/dao/database.go:114-155, admin/client/ragflow_client.py:114-124
系统健康与配置探针
此图将管理健康检查映射到底层基础设施组件。
来源: api/utils/health_utils.py:34-60, api/utils/health_utils.py:72-85, api/utils/health_utils.py:104-133, admin/server/routes.py:38-41
来源: admin/server/routes.py:35-212 admin/server/services.py:40-170 admin/client/ragflow_client.py:46-152 admin/client/http_client.py:26-145 admin/client/parser.py:19-227 api/utils/health_utils.py:34-201 internal/dao/database.go:68-175 build.sh:1-113 admin/server/auth.py:90-159