本文档提供了在各种环境中部署 RAGFlow 的全面指南。它涵盖了部署先决条件、配置选项、部署方法和扩展注意事项。有关从源代码构建 Docker 镜像的信息,请参阅构建 Docker 镜像。
在部署 RAGFlow 之前,请确保您的环境满足以下最低要求
| 资源 | 最低要求 |
|---|---|
| CPU | 4+ 核心 (x86) |
| 内存 | 16+ GB |
| 磁盘 | 50+ GB |
| Docker | ≥24.0.0 |
| Docker Compose | ≥v2.26.1 |
此外,您必须将 vm.max_map_count 内核参数配置为至少 262144,以便 Elasticsearch 正常运行
要使此设置永久生效,请将 vm.max_map_count=262144 添加到 /etc/sysctl.conf。
来源:README.md109-139 docs/quickstart.mdx26-174
RAGFlow 提供了多种部署选项以适应不同的用例
RAGFlow 提供了不同的 Docker 镜像以适应各种部署需求
| 镜像标签 | 大小 (GB) | 包含嵌入模型 | 稳定版? | 用例 |
|---|---|---|---|---|
| v0.19.0 | ≈9 | ✓ | 稳定发布版 | 生产环境(带本地嵌入) |
| v0.19.0-slim | ≈2 | ✗ | 稳定发布版 | 生产环境(带外部嵌入) |
| nightly | ≈9 | ✓ | 不稳定每夜构建版 | 测试最新功能(带本地嵌入) |
| nightly-slim | ≈2 | ✗ | 不稳定每夜构建版 | 测试最新功能(带外部嵌入) |
完整镜像包含内置嵌入模型
BAAI/bge-large-zh-v1.5maidalun1020/bce-embedding-base_v1来源:README.md201-206 docker/.env94-103 Dockerfile21-26
RAGFlow 的整体部署架构由以下组件组成
部署通过 docker-compose.yml 协调,配置由 entrypoint.sh 管理,它使用来自 .env 的环境变量处理 service_conf.yaml.template。
来源:docker/docker-compose.yml1-149 docker/entrypoint.sh78-140 docker/.env1-184
部署 RAGFlow 最简单的方法是使用 Docker Compose 和预构建镜像
克隆仓库
启动服务
验证部署
成功部署后将显示 RAGFlow ASCII 艺术字徽标和 "Running on all addresses (0.0.0.0)"。
来源:README.md142-220 docs/quickstart.mdx176-238
RAGFlow 部署可以通过各种配置文件和环境变量进行定制。
主要环境配置位于 docker/.env 文件中,其中包括
RAGFLOW_IMAGE:指定要使用的 Docker 镜像SVR_HTTP_PORT:Web 界面的 HTTP 端口(默认:80)MYSQL_PASSWORD:MySQL 数据库密码MINIO_PASSWORD:MinIO 对象存储密码REDIS_PASSWORD:Redis 缓存密码ELASTIC_PASSWORD:Elasticsearch 密码DOC_ENGINE:文档引擎选择 (elasticsearch 或 infinity)服务特定配置在 docker/service_conf.yaml.template 中定义,这些配置在运行时会填充环境变量。主要配置包括
要更改默认 HTTP 端口 (80),请将 docker-compose.yml 中的端口映射从 80:80 更改为 <YOUR_PORT>:80。
来源:README.md229-247 docker/entrypoint.sh78-88
RAGFlow 支持两种用于存储文本和向量的文档引擎
Elasticsearch 是用于存储全文和向量的默认文档引擎。在您部署 RAGFlow 时会自动配置它。
从 Elasticsearch 切换到 Infinity
停止所有容器
警告:此命令会删除 Docker 卷,清除现有数据。
将 DOC_ENGINE 在 docker/.env 文件中设置为 infinity。
重启容器
请注意,Infinity 在 Linux/arm64 机器上不受官方支持。
来源:README.md250-273 docker/docker-compose-base.yml38-66
RAGFlow 支持通过向 entrypoint 脚本传递命令行参数进行分布式部署
entrypoint 脚本 (entrypoint.sh) 支持以下选项
--disable-webserver:禁用 Web 服务器 (nginx + ragflow_server)--disable-taskexecutor:禁用任务执行器工作进程--workers=<num>:要运行的任务执行器数量--host-id=<string>:主机唯一 ID(默认为主机名)--consumer-no-beg=<num> 和 --consumer-no-end=<num>:消费者 ID 范围例如,部署一个只包含 4 个任务执行器的工作节点
RAGFlow 需要配置 LLM 提供商才能正常运行
http://<SERVER_IP> 访问 Web 界面(如果使用默认端口 80,则无需端口)有关支持的 LLM 提供商的详细信息,请参阅LLM 集成层。
来源:README.md197-201 docs/quickstart.mdx240-273
要升级现有的 RAGFlow 部署
克隆仓库(或拉取最新更改)
更新 docker/.env 中的镜像引用
RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2
更新并重启
要使用最新的每夜构建版,请更新 docker/.env
RAGFLOW_IMAGE=infiniflow/ragflow:nightly
# or
RAGFLOW_IMAGE=infiniflow/ragflow:nightly-slim
然后更新并重启
注意:只要您在停止容器时不使用
-v标志,升级 RAGFlow 会保留您的数据。
来源:docs/guides/upgrade_ragflow.mdx1-102
vm.max_map_count 值过低:如果 Elasticsearch 启动失败,请检查 vm.max_map_count 是否设置为至少 262144。
网络异常错误:在服务启动后立即登录时,您可能会遇到“网络异常”错误。请等待所有服务完全初始化(使用 docker logs -f ragflow-server 检查)。
文件解析停滞:如果在处理过程中文件解析卡住,请检查日志以查找特定错误,并确保有足够的可用资源。
使用以下命令监控容器健康状况
检查特定容器的日志
来源:README.md217-220 docs/quickstart.mdx231-233
为了开发目的,您可以直接从源代码运行 RAGFlow 服务
安装 uv(如果已安装则跳过)
克隆并安装依赖项
启动依赖服务
启动后端服务
启动前端服务
这种部署方法适用于需要修改和测试 RAGFlow 代码的开发人员。