源码仓库 · 有用请 Star

第 2 章 部署与模型通道

本章导读:第 1 章说清了「为什么是 RAGFlow」,本章回答「怎么让它跑起来」。你有一台装好 Docker 的机器,手上有售后知识底座的三份种子文档——《售后政策手册》《商品 FAQ》《物流时效公告》,目标是把 RAGFlow 部署起来、把模型接进去,为第 3 章的数据集(Dataset)建设铺好路。本章沿三条线展开:部署——容器族拓扑与 Docker Compose 五步;配置——docker/.env 与 service_conf.yaml.template 的分工;模型通道——七类模型角色中,客服场景的「检索 + 生成」起步只需要 chat 与 embedding 两类,rerank 留给第 7 章调优时再加。读完本章,你能:完成一次健康检查通过的部署;说清改配置的生效方式;接入在线或本地模型并设好默认;用《售后政策手册》走通第一条带引用的问答链路。

flowchart LR A["五步启动容器族(2.2)
max_map_count → clone → up -d
tag 与 RAGFLOW_IMAGE 必须一致"] --> B["healthz 200 后再登录(2.2)
改 .env → 全栈重启 → 复查(2.3)
避开解析窗口"] B --> C{"接入模型(2.4)
按模型来源选路线"} C -->|"在线 Provider"| D["建 Provider 实例(2.4.2)
填 API Key 与 Base URL
测试与生产分开建实例"] C -->|"本地 · 内网或省费用"| E["Ollama / vLLM 起服务(2.4.3)
容器内 localhost 不是宿主机
Base URL 用 host.docker.internal"] D --> F["验证后设默认模型(2.4.2)
Default LLM 与 Default embedding
rerank 留给第 7 章"] E --> F F --> G["建数据集、上传并解析(2.5)
embedding 选定是单向门(2.4.4)
after-sales-policy.pdf(50 页)"] G --> H["建售后助手提问验收(2.5)
Empty response 必设
带引用可溯源 · 建库见第 3 章"]

本章操作流程图

你什么时候需要它

三种典型处境,对应本章三种用法。

第一次在本机装 RAGFlow——按 2.2 的五步走,卡在启动或健康检查时回 2.1 看容器族地图定位是哪个组件没起来,最后用 2.5 收尾验证。

装好了,但模型没接上或想换 Provider——直接看 2.4。验证按钮报错九成出在 Base URL 与网络可达性:RAGFlow 跑在容器里,localhost 不是你的宿主机。

要改端口、换文档引擎,或开始为上线做准备——看 2.3 理解两份配置文件的分工与生效方式;生产化的密码治理、备份与升级管理在(见第 12 章)展开。

前置:一台满足 2.2 前置资源的机器与 Docker;第 1 章的 RAG 基本概念。本章不要求任何编程背景,全部操作都在命令行与网页界面完成。

2.1 概述:部署单位是容器族

先立一个认知立场:把 RAGFlow 当作「一族协作的容器」来理解,而不是一个单体应用。之后排障、改端口、做容量规划,靠的都是这张地图。docker compose up 之后你得到的不是「一个 RAGFlow」,而是一个入口、一个业务容器和六类依赖:

flowchart TB U["浏览器 / HTTP 客户端"] --> N["nginx
公共入口 80 / 443"] N --> R["ragflow 容器
API 9380 · Admin 9381
ingestion workers · 数据同步"] subgraph deps["依赖容器(docker-compose-base.yml)"] ES["Elasticsearch
文档引擎 1200"] MY["MySQL
业务元数据 3306"] MO["MinIO
对象存储 9000 / 9001"] KV["Kvrocks
Redis 兼容缓存 6379"] NA["NATS JetStream
消息队列 4222"] CH["ClickHouse
分析型存储"] end R --> ES R --> MY R --> MO R --> KV R --> NA R --> CH KB["Kibana(可选)
6601"] -.-> ES MD["模型通道(容器族之外)
chat · embedding 等"] -.->|API 调用| R

RAGFlow 容器族拓扑(端口为宿主机对外端口,默认值见下表)

组件与职责一览:

组件 职责 默认端口(宿主机) .env 关键变量
nginx 公共入口,浏览器与 API 流量都从这里进 80 / 443 SVR_WEB_HTTP_PORT / SVR_WEB_HTTPS_PORT
ragflow API、Admin、ingestion workers、数据同步;启动脚本先跑数据库迁移 9380 / 9381 SVR_HTTP_PORT / ADMIN_SVR_HTTP_PORT / RAGFLOW_IMAGE
Elasticsearch 文档引擎(默认选择),承载切片索引 1200 STACK_VERSION / ES_PORT / ELASTIC_PASSWORD
MySQL 业务元数据库(默认库名 rag_flow) 3306 DB_TYPE / MYSQL_PASSWORD / EXPOSE_MYSQL_PORT
MinIO 对象存储,存放所有上传文件 9000(API)/ 9001(控制台) MINIO_USER / MINIO_PASSWORD
Kvrocks Redis 兼容缓存(与 NATS 队列相互独立) 6379 KVROCKS_PORT / REDIS_PASSWORD
NATS JetStream 消息队列 4222 EXPOSE_NATS_PORT
ClickHouse 分析型存储 —(源码部署为 9900) —
Kibana(可选) Elasticsearch 可视化 6601 KIBANA_PORT

三条数据流帮你把表读活:上传的原文件落 MinIO,解析产出的切片索引进 Elasticsearch,业务元数据(数据集、文档记录、账户)进 MySQL。ragflow 容器则是唯一干业务活的:quickstart 原文的说法是它运行 API server、ingestion workers 与数据同步,对应源码视角的四个 Go 服务——API、Admin、Ingestor、Syncer(2.6 会再见到它们)。

还有一类依赖不在图上的实线里:模型。quickstart 在前置要求里写明,运行时需要能访问一个 LLM 和一个 embedding 模型——它们要么是在线 Provider 的 API,要么是你自己部署的本地服务。这就是 2.4 的「模型通道」:容器族之外的第二条供给线。

2.2 Docker Compose 部署

官方标准路径是 Docker Compose 拉起预构建镜像。自 v1.0.0-rc2 起提供 Linux x86-64 与 ARM64 两种架构的镜像,使用 release tag 启动时 Docker 会自动选择与主机匹配的架构。

前置资源

项 要求(v1.0.0-rc2 文档)
CPU 4 核起步(x86-64 或 ARM64)
内存 16 GB 起步
磁盘 50 GB 可用空间
Docker ≥ 24.0.0,Docker Compose ≥ v2.26.1,且启用 BuildKit
构建期网络 能拉取依赖镜像 infiniflow/ragflow_deps:latest
运行期依赖 可访问一个 LLM 与一个 embedding 模型(2.4)

文档同时提醒:实际资源取决于文档引擎、数据量、解析负载与并发;本地模型与 OceanBase 需要额外资源——售后底座如果在同机跑 Ollama,请把内存预算往上加(本书立场:16 GB 是「能跑」,加了本地模型后 32 GB 才「舒服」)。

五步启动

第 1 步:调整 vm.max_map_count(默认 Elasticsearch 引擎需要)。 检查并在低于 262144 时调高:

sysctl vm.max_map_count
sudo sysctl -w vm.max_map_count=262144

sysctl -w 的修改是临时的,重启后失效;要持久化,把 vm.max_map_count=262144 写入 /etc/sysctl.conf。Docker Desktop 用户需要把这个设置应用到它的 Linux 虚拟机里——这是新手最常漏的一步,症状是 ES 容器反复重启。

第 2 步:克隆仓库。

git clone https://github.com/infiniflow/ragflow.git

第 3 步:检出 release tag,用 Docker Compose 启动。

cd ragflow/docker
git checkout v1.0.0-rc2
docker compose -f docker-compose.yml up -d

注意版本对应关系:换成其他版本时,git checkout 的 tag 与 docker/.env 里 RAGFLOW_IMAGE 的镜像标签必须一致。若镜像拉取困难,文档提供了华为云与阿里云两个镜像源(改 RAGFLOW_IMAGE 即可,见 2.3)。另外两点提前打招呼:其一,开源 1.0 版的 DeepDoc 版面分析、OCR 与表格识别使用 CPU 推理,不需要 GPU;其二,部署到任何网络可达的主机之前,先改掉 docker/.env 里的默认密码。

第 4 步:验证服务状态。

docker ps
docker logs -f ragflow-cpu

初始化完成后,从另一台终端通过 web 端口检查 API 与依赖健康:

curl -f http://localhost/api/v1/system/healthz

成功响应为 HTTP 200。若你改过 SVR_WEB_HTTP_PORT,URL 里要带上该端口。等这条检查通过了再打开网页界面——ragflow 容器的启动脚本会先执行数据库迁移再启动服务,抢跑只会看到半初始化的状态。

第 5 步:登录。 浏览器打开 http://IP_OF_YOUR_MACHINE(改过 web 端口的同样要带端口),注册或登录进入控制台。

一个开发场景的坑

如果 checkout 的是开发分支而非 release tag,可能遇到服务拒绝启动并报 Refusing to start: database was migrated by a newer version——代码版本比数据库迁移版本旧。文档给的解法是在 .env 里设 RAGFLOW_DEV_MODE=true 后重新执行 Compose 命令(它会跳过数据库降级检查);生产环境必须保持 RAGFLOW_DEV_MODE=false。本书各章统一使用 release tag,不会触发此问题。

2.3 配置体系

改端口、换文档引擎、接外部数据库,都发生在配置层。RAGFlow 的 Docker 部署有四个配置文件,分工如下:

文件 管什么
docker/.env 部署面:Docker 镜像、服务 profiles、对外端口、依赖凭据等环境变量
docker/service_conf.yaml.template 服务面:Go 服务消费的系统级配置;容器启动时由模板生成 service_conf.yaml 并替换其中的环境变量
docker/docker-compose.yml 启动 RAGFlow 服务,并按 profiles 选择依赖
docker/docker-compose-base.yml 定义共享依赖:文档引擎、元数据库、MinIO、Kvrocks、NATS、ClickHouse

日常改动九成落在 .env。关键项速查:

变量 默认值 说明
SVR_WEB_HTTP_PORT / SVR_WEB_HTTPS_PORT 80 / 443 公共 nginx 端口;改了之后所有访问 URL 都要带端口
SVR_HTTP_PORT / ADMIN_SVR_HTTP_PORT 9380 / 9381 Go API / Admin 端口,一般不需要直接暴露给浏览器
DOC_ENGINE —(默认 Elasticsearch) 文档引擎选择;quickstart 原文:.env 控制 DOC_ENGINE、服务端口与依赖凭据
DB_TYPE mysql 元数据库类型;连 OceanBase 时经其 MySQL 兼容协议接入
STACK_VERSION / ES_PORT 8.11.3 / 1200 Elasticsearch 版本与对外端口
MYSQL_PORT / EXPOSE_MYSQL_PORT 3306 / 3306 容器内连接端口 / 对宿主机暴露端口
MEM_LIMIT 8073741824(约 7.52 GiB) 单容器内存上限,不是最小内存、不是总预留、也不是实际用量保证
TZ Asia/Shanghai 时区
HF_ENDPOINT 默认禁用 huggingface.co 镜像站,网络受限时取消注释启用
ENABLE_REGISTER 1 是否开放用户注册;对内部署建议设 0
RAGFLOW_IMAGE — 镜像与 tag,须与 checkout 的 release tag 匹配

service_conf.yaml.template 这一层本章只需记住两点:它是模板而非最终文件(启动时生成,不要直接改生成物);涉及代理与真实 IP 时关注 api.trusted_proxies(默认只信任镜像内 nginx 的回环地址,显式列表是替换而非追加)。MEM_LIMIT 的值也定义在这一层的 MySQL 连接池等参数(如 max_connections 默认 900)——服务面调优在第 12 章展开。

生效方式:对以上任何配置的修改,都需要重启全部容器才能生效:

docker compose --env-file docker/.env -f docker/docker-compose.yml up -d

本书立场:把「改 .env → 全栈重启 → healthz 复查」固化成肌肉记忆,并且一次只改一组相关配置——全栈重启会中断进行中的解析任务,改配置的时机请避开解析窗口(生产环境的变更管理与升级迁移见第 12 章)。

2.4 模型通道

RAGFlow 是 RAG 引擎,本身不带任何生成或向量化能力;它对模型的全部需求都通过「模型通道」满足——在界面上把 Provider、模型与凭据配置好,容器族在运行时按角色调用。通道在容器族之外,这是理解部署拓扑的最后一块拼图。

2.4.1 模型角色分类

RAGFlow 按角色使用模型,官方文档列出七类:

模型角色 全称 做什么 典型场景
LLM(chat) Large Language Model 理解、推理并生成文本 问答、内容生成、摘要、信息抽取
Embedding 嵌入模型 把文本转为向量 语义检索、相似度计算、知识库索引
Rerank 重排模型 按相关性对初检候选重打分排序 优化检索结果、提高问答准确率
VLM 视觉语言模型 理解图像及其中的文字、物体、场景 图像问答、图表理解
ASR 自动语音识别 语音转文本 转写、会议记录、实时字幕
TTS 语音合成 文本转语音 语音播报、语音交互
OCR 光学字符识别 识别图片或扫描件中的文字 扫描件、票据识别

检索问答的主链由前三类串成:embedding 模型把查询与切片向量化、按相似度召回候选,rerank 模型对候选重排,LLM 基于选中的知识生成答案。贯穿到售后场景:客服问「退货时限是几天」,问题被 embedding 模型向量化后在 after-sales-kb 的切片里召回政策条目,chat 模型据此作答。起步清单由此得出:跑通「检索 + 生成」至少需要 chat 与 embedding 两类模型;rerank 是第 7 章调优时的增强项;VLM/ASR/TTS/OCR 本书的售后场景用不到(《售后政策手册》的表格与版面由 DeepDoc 的 CPU 推理承担,不依赖你另配视觉模型)。RAGFlow 也支持 HTTP API 把这些能力暴露给外部应用,接入方式在(见第 11 章)。

2.4.2 在线 Provider 接入

以在线大模型为例,quickstart 给出四步:

  1. 从头像进入 User settings,选择 Model providers;
  2. 在 Available models 里选择 Provider,创建 Provider 实例;
  3. 填写实例名与连接信息(如 API Key 与 Base URL),从列表选择或添加所需模型,逐一验证后保存实例;
  4. 在 Set default models 里选定 Chat 模型与 Embedding 模型,其余类型按需配置。

上面这套四步落到真实界面里,第一眼看到的往往是最后一步那页。这张截图来自 2026-11-04 实测于本机 Docker 部署的 RAGFlow v1.0.0-rc2(User settings → Model providers),新账号首进 Set default models 时六类默认模型全是空下拉:

实测 Set default models 页:LLM、Embedding、VLM、ASR、Rerank、TTS 六类默认模型下拉全部为空,LLM 带红色必填星号,左侧 Available models 列出 OpenAI-API-Compatible、OpenAI、Anthropic、Gemini 等供应商

页首提示「Please complete these settings before beginning」,LLM 一项还带着红色必填星号——默认模型不设,业务页面就没有模型可用。左侧 Available models 排着 OpenAI、Anthropic、Gemini 一长串供应商,但下拉里能选的模型只来自已建实例(OpenAI-API-Compatible 旁的绿点是 demo-gateway 实例已就绪的标记,这张截图摄于建实例之后、设默认之前)——先建 Provider 实例、再回来设默认,顺序在界面上是硬约束。

几个文档强调的细节值得抄进操作习惯:

四步里的第 2、3 步——选 Provider 建实例、填连接信息——落在界面上是下面这个表单。同一轮实测(2026-11-04,RAGFlow v1.0.0-rc2)中从 Available models 选中 OpenAI-API-Compatible 后新建实例:

实测 OpenAI-API-Compatible 实例表单:Instance name 填 demo-gateway,API Key 以圆点显示,Base URL 一栏已打码,Models 区为空(All models 0),提供 List models、Verify all models、Add all models 按钮

Instance name 取 demo-gateway,对应「为测试、生产、代理网关分别建实例」的习惯;API Key 以圆点回显,Base URL 整条黑幕打码(网关地址按敏感信息隐去)。Models 区此刻是空的——All models 0、No models available,旁边的 List models、Verify all models、Add all models 正是下一步用来装模型、做验证的三个按钮。

实例保存之后再点开,表单变成了档案视图:

实测实例 demo-gateway 保存后的只读视图:标题行显示 demo-gateway,供应商名旁出现绿点,Models 区有 deepseek-flash(LLM)与 doubao-embedding-vision、text-embedding-v4(Embedding)三张模型卡

标题行换成实例名 demo-gateway,供应商名旁多出绿点;Models 区有了三张卡,分类计数为 All models 3 / LLM 1 / Embedding 2。两张 embedding 卡(text-embedding-v4、doubao-embedding-vision)是 List models 从网关拉到的;deepseek-flash 这张 LLM 卡则是用「+」手动添加的——填模型名、类型选 Chat、再补 Max context length,走的正是正文「自定义模型」那条路。

实例与模型就绪,回头把开篇那页空表单补上:

实测 Set default models 页设定完成:LLM 选 deepseek-flash(demo-gateway),Embedding 选 text-embedding-v4(demo-gateway),其余四类保持为空,顶部出现绿色 Modified 提示

六类里实测只动了两类——LLM 与 Embedding,正对应「默认模型至少设两个」;VLM、ASR、Rerank、TTS 留空不影响「检索 + 生成」主链,rerank 按本书节奏留给第 7 章。下拉项以「模型名 + 实例名」成对显示(deepseek-flash demo-gateway),模型隶属于实例、默认值落到哪个实例一眼可辨。

2.4.3 本地模型

数据不出内网或想省 API 费用时,可以本地部署模型再接入。文档给出两条主线,外加一个 Docker 内置的可选项:

Ollama——轻量起手。 一条命令起服务,再拉一个 chat 模型和一个 embedding 模型(文档示例):

sudo docker run -d --name ollama --restart unless-stopped \
  -p 11434:11434 -v ollama:/root/.ollama ollama/ollama
sudo docker exec ollama ollama pull openbmb/minicpm5-2b
sudo docker exec ollama ollama pull qwen3-embedding:0.6b

接入 RAGFlow:Model providers 里选 Ollama 建实例,Base URL 填下表中的地址,API Key 留空,把 openbmb/minicpm5-2b 添加为 Chat、qwen3-embedding:0.6b 添加为 Embedding(模型名必须与 Ollama 返回的名字完全一致),验证后保存。

Ollama 的接入表单在实测里长这样。同一轮实测里新建 Ollama 实例,宿主机跑的是 Ollama 0.20.5:

实测 Ollama 供应商实例表单:Instance name 为 local-ollama,API Key 留空,Base URL 一栏给出 http://host.docker.internal:11434,Models 区尚未拉取模型

Base URL 一栏给出的地址就是 http://host.docker.internal:11434——RAGFlow 在容器里、Ollama 在宿主机,「容器内的 localhost 不是宿主机」这条铁律,界面在输入框里就替你预防了;API Key 留空即可,本机 Ollama 不做鉴权。

点一下 List models,本机模型直接进了实例:

实测 Ollama 实例 local-ollama 的 Models 区:gemma4:26b 标记为 LLM,qwen3-embedding:0.6b 标记为 Embedding,分类计数 All models 2 / LLM 1 / Embedding 1

List models 从本机 Ollama(0.20.5)拉到两个模型,名字与 ollama list 的输出完全一致:gemma4:26b 归入 LLM,qwen3-embedding:0.6b 归入 Embedding——正文示例里的 qwen3-embedding:0.6b 原样出现,chat 模型实测用的是本机已有的 gemma4:26b,替代书中示例的 openbmb/minicpm5-2b。

vLLM——GPU 高吞吐。 提供 OpenAI 兼容服务:

vllm serve openbmb/MiniCPM5-2B --served-model-name MiniCPM5-2B \
  --host 0.0.0.0 --port 8000 --dtype auto --max-model-len 8192

接入时 Provider 选 VLLM,Base URL 以 /v1 结尾;未配置 --api-key 时 API Key 留空,配置了则填同一个值。

TEI——.env 内置的本地 embedding 服务:启用 tei-cpu 或 tei-gpu profile,用 TEI_MODEL 指定模型、TEI_PORT(默认 6380)对外暴露,适合不想为 embedding 单独装一套工具栈的场景。

两种来源可以混搭:vLLM 的 chat 模型配 Ollama 的 embedding 模型是文档认可的组合。模型在哪台机器,决定 Base URL 怎么填——这张表是本章最高频的查阅点:

部署形态 Base URL(以 Ollama 11434 / vLLM 8000 为例)
RAGFlow 在 Docker,模型在同宿主机 http://host.docker.internal:11434 / http://host.docker.internal:8000/v1
RAGFlow 与模型都直跑在宿主机 http://localhost:11434 / http://localhost:8000/v1
模型在另一台机器 http://<模型机 IP>:11434 / http://<模型机 IP>:8000/v1

连通性铁律:RAGFlow 跑在容器里,容器内的 localhost 不是宿主机。 同宿主机场景一律用 host.docker.internal;拿不准就钻进容器实测——先找到 ragflow 容器名,再从容器内 curl 一次:

sudo docker ps --filter "label=com.docker.compose.service=ragflow-cpu" --format '{{.Names}}'
sudo docker exec -it <RAGFLOW_CONTAINER> curl http://host.docker.internal:11434/api/tags

容器内能列出模型,界面上验证才有意义。安全上,11434 与 8000 这类模型端口都不要直接暴露公网,用防火墙或内网约束访问来源。

2.4.4 选型立场:embedding 模型近似不可逆

七类角色里,chat 模型是随时可换的——它无状态,每次调用独立,今天用 A 明天换 B 不留痕迹。embedding 模型完全不同,quickstart 用一整段 caution 给出警告,值得原文级转述:

建数据集时就要选好 embedding 模型。数据集还没有切片(Chunk)之前可以直接换;一旦有了切片,再换模型会触发兼容性检查——向量维度必须匹配,且对既有向量抽样的平均余弦相似度不低于 0.9,检查不通过则恢复原选择。保存模型变更不会自动重新嵌入既有切片。

把这段翻译成决策语言:embedding 模型的选定是单向门——换模型 ≈ 重建数据集的隐性成本。向量来自模型,换了模型,旧向量与新查询不在同一个语义空间里,检索结果不可信。所以本书的立场是:在第 3 章建 after-sales-kb 数据集之前,把 embedding 选型当作一个正式决定来做——中文售后语料优先选中文表现好、维度适中的模型,本地化诉求用 Ollama 的 qwen3-embedding:0.6b 起步即可,并接受「先小规模验证再全量解析」的节奏。数据集创建页面的选型细节(见第 3 章)。

2.5 首条链路验证

部署健康(healthz 200)、模型验证通过之后,用一次真实问答把链路串起来。quickstart 的五步走读如下,每一步都标注「验证什么」——验证意识比操作本身重要,每步都是下一站的地基:

步骤 操作(依 quickstart) 验证什么
① 建数据集 Datasets → Create dataset:填 Name,选 Embedding model 与 Parse type(首次选 Built-in 并挑适配的解析方法) 数据集创建成功,且 embedding 模型已锁定——此刻是 2.4.4 那扇单向门关闭前的最后窗口
② 上传文档 数据集 Files 页 Add file > Upload file;可勾选 Parse on creation 自动解析,否则选中文档点 Run 解析状态推进到完成;卡住时看文档 Logs 与 ragflow-cpu 服务日志
③ 解析干预 点开已完成解析的文件进入 Chunk 页:悬停快照预览,双击文本手动修改或加关键词;再到 Retrieval Testing 的 Test text 里试问 切片不是黑盒:看得见、改得动、测得了;《售后政策手册》的表格有没有被切成可用的块,在这一步眼见为实
④ 建聊天助手 Chat → Create chat;在 Chat setting 里选中刚解析的数据集、选定 chat 模型,检查 System prompt,设好 Empty response 聊天助手(Chat Assistant)与数据集、模型的绑定生效;Empty response 是「知识库里没有答案」时的兜底话术
⑤ 提问 打开聊天窗口就文档内容提问;直选问题选 Naive,需要深入调查的选 Agentic 答案附真实引用、来源可溯——这是 RAGFlow 的立身之本,也是链路打通的唯一权威判据

落到贯穿案例:① 建数据集(名取 after-sales-kb),② 只上传 after-sales-policy.pdf(50 页、含表格,首次解析正好感受 CPU 推理的耗时量级),③ 在 Retrieval Testing 里问「退货时限是几天」看召回的政策切片,④ 建助手「售后助手」,⑤ 问「跨境订单的退货时限和运费承担」——拿到一条带引用的回答,本章的验收就完成了。两个补充:其一,解析方法的选择(50 页 PDF 用哪种、XLSX 用哪种)是第 4 章的主题,本章先用 Built-in 的默认推荐;其二,售后政策问答必须设置 Empty response——政策类问题答错比不答更糟,留空意味着允许模型在无据可依时自由发挥(本书立场:知识库问答上线前这一项不允许留空)。解析与切片的深入干预(见第 4 章),聊天助手的完整配置(见第 8 章)。

本章界面操作已于 2026-11-04 在本机 Docker 部署的 v1.0.0-rc2 实例实测(截图见各节插图);部署与运维命令依官方文档撰写,实测口径见章末复核清单。

2.6 源码启动:什么场景才需要

一句话结论:纯使用 RAGFlow(部署、建库、调优、集成)不需要源码启动,Docker Compose 就是官方推荐路径。需要源码启动的场景只有三类:要改 Go 后端或前端源码、要深入调试 DeepDoc 内部行为、或目标平台没有预构建镜像。届时再读官方 launch_ragflow_from_source 指南即可,这里只给一个预期管理:它比 Docker 部署重得多——仅支持 Linux x86_64(macOS 暂不支持 Go 后端),依赖 Go ≥ 1.27、Clang 20 / LLD 20、CMake ≥ 4.0、Node.js ≥ 18.20.4、Python ≥ 3.10;构建顺序是「依赖下载脚本 → build.sh --all → Docker 拉起支撑服务 → --migrate → 分别启动 Admin、API、Ingestor、Syncer 四个进程 → 前端 npm run dev(9222 端口)」。好消息是 2.1 的容器族地图在源码形态下依然成立——支撑服务还是那一族容器,只是 ragflow 容器换成了宿主机上的四个进程。源码形态下的开发模式开关与版本管理(见第 12 章)。

本章小结

  1. 部署单位是容器族:nginx 一个入口(80/443),ragflow 容器干业务(API 9380 / Admin 9381),六类依赖各司其职——检索(ES)、元数据(MySQL)、对象存储(MinIO)、缓存(Kvrocks)、队列(NATS)、分析(ClickHouse);模型通道是容器族之外的第二条供给线。
  2. 部署五步里真正的坑只有两个:vm.max_map_count ≥ 262144(Docker Desktop 要改进 Linux VM)与「等 healthz 200 再开界面」;tag 与 RAGFLOW_IMAGE 必须对应。
  3. 配置两层分工:.env 管部署面(端口、凭据、DOC_ENGINE),service_conf.yaml.template 管服务面;任何修改都要全栈重启生效,避开解析窗口。
  4. 模型按七类角色管理:检索问答主链是 embedding → rerank → LLM;客服场景起步只需 chat + embedding,rerank 留给第 7 章。
  5. embedding 选定是单向门:chat 模型随时可换,embedding 有切片后受维度与相似度双重约束——第 3 章建数据集前的第一决定。
  6. 首条链路五步各有验证点:从数据集创建到带引用的回答,after-sales-policy.pdf 的问答可溯源,是本章交付的验收状态。

下一步:带着已锁定的 embedding 模型进入第 3 章,把三份种子文档正式建成数据集 after-sales-kb。

验收清单

读到这里,你应该能:

延伸阅读

复核清单(发布前)