快速开始 (Quick Start)
RAGFlow 是一款基于深度文档理解的开源检索增强生成 (Retrieval-Augmented Generation, RAG) 引擎。当与大语言模型 (LLM) 集成时,它能够基于各种复杂格式的数据提供有据可依的真实问答能力。
本快速开始指南介绍了以下通用流程:
- 启动本地 RAGFlow 服务器
- 创建知识库 (Dataset)
- 干预文件解析 (Parse)
- 基于您的数据集建立 AI 对话
我们官方支持 x86 CPU 和 Nvidia GPU,本文档提供了在 x86 平台上使用 Docker 部署 RAGFlow 的说明。虽然我们也在 ARM64 平台上测试 RAGFlow,但我们不维护适用于 ARM 的 RAGFlow Docker 镜像。
如果您使用的是 ARM 平台,请参考此指南来构建 RAGFlow Docker 镜像。
前提条件
- CPU ≥ 4 核 (x86);
- 内存 (RAM) ≥ 16 GB;
- 磁盘空间 ≥ 50 GB;
- Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1。
- gVisor:仅当您打算使用 RAGFlow 的代码执行器(沙箱 / sandbox)功能时才需要。
如果您的本地机器(Windows、Mac 或 Linux)尚未安装 Docker,请参阅安装 Docker 引擎 (Install Docker Engine)。
启动服务器
本节提供了在 Linux 上搭建 RAGFlow 服务器的说明。如果您使用的是其他操作系统也无需担心,大部分步骤都是相似的。
- 确保
vm.max_map_count≥ 262144。
展开查看详情:
vm.max_map_count。该值设置了一个进程可以拥有的最大内存映射区域数。默认值为 65530。虽然大多数应用需要的映射少于一千个,但降低该值可能会导致异常行为,并且当进程达到限制时,系统会抛出内存不足 (Out of Memory) 错误。
RAGFlow v0.25.2 使用 Elasticsearch 或 Infinity 进行多路召回。正确设置 vm.max_map_count 的值对于 Elasticsearch 组件的正常运行至关重要。
- Linux
- macOS
- Windows
1.1. 检查 vm.max_map_count 的值:
$ sysctl vm.max_map_count
1.2. 如果该值小于 262144,请将其重置为至少 262144:
$ sudo sysctl -w vm.max_map_count=262144
此更改将在系统重启后失效。如果您在下次启动服务器时忘记更新该值,可能会遇到 Can't connect to ES cluster(无法连接到 ES 集群)的异常。
1.3. 若要使更改永久生效,请相应地在 /etc/sysctl.conf 中添加或更新 vm.max_map_count 的值:
vm.max_map_count=262144
如果您在 macOS 上使用 Docker Desktop,请运行以下命令来更新 vm.max_map_count:
docker run --rm --privileged --pid=host alpine sysctl -w vm.max_map_count=262144
此更改将在系统重启后失效。如果您在下次启动服务器时忘记更新该值,可能会遇到 Can't connect to ES cluster(无法连接到 ES 集群)的异常。
若要使更改永久生效,请创建包含合适设置的文件:
1.1. 创建文件:
sudo nano /Library/LaunchDaemons/com.user.vmmaxmap.plist
1.2. 打开该文件:
sudo launchctl load /Library/LaunchDaemons/com.user.vmmaxmap.plist
1.3. 添加如下设置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.vmmaxmap</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/sysctl</string>
<string>-w</string>
<string>vm.max_map_count=262144</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
1.4. 保存文件后,加载新的守护进程 (Daemon):
sudo launchctl load /Library/LaunchDaemons/com.user.vmmaxmap.plist
如果上述步骤不起作用,可以考虑使用此替代方案,该方案通过容器实现,无需手动修改 macOS 设置。
如果您在 Windows 上使用 Docker Desktop,那么您必须使用 docker-machine 来设置 vm.max_map_count:
$ docker-machine ssh
$ sudo sysctl -w vm.max_map_count=262144
如果您在 Windows 上使用 Docker Desktop 并带有 WSL 2 后端,请使用 docker-desktop 来设置 vm.max_map_count:
1.1. 在 WSL 中运行以下命令:
$ wsl -d docker-desktop -u root
$ sysctl -w vm.max_map_count=262144
此更改将在重启 Docker 后失效。如果您在下次启动服务器时忘记更新该值,可能会遇到 Can't connect to ES cluster(无法连接到 ES 集群)的异常。
1.2. 如果您不想每次重启 Docker 时都运行这些命令,可以按如下方式更新您的 %USERPROFILE%\.wslconfig 文件,以便将此更改永久全局地应用到所有 WSL 发行版:
[wsl2]
kernelCommandLine = "sysctl.vm.max_map_count=262144"
这将使所有 WSL2 虚拟机在启动时都被分配该设置。
如果您使用的是 Windows 11 或 Windows 10 版本 22H2,并已安装微软应用商店 (Microsoft Store) 版本的 WSL,您也可以更新 docker-desktop WSL 发行版内部的 /etc/sysctl.conf 文件以保持更改永久有效:
$ wsl -d docker-desktop -u root
$ vi /etc/sysctl.conf
# 追加一行,内容如下:
vm.max_map_count = 262144
-
克隆仓库:
$ git clone https://github.com/infiniflow/ragflow.git
$ cd ragflow/docker -
切换到当前版本:
$ git checkout -f v0.25.2 -
使用预构建的 Docker 镜像并启动服务器:
# 使用 CPU 执行 DeepDoc 任务:
$ docker compose -f docker-compose.yml up -dRAGFlow 镜像标签 (image tag) 镜像大小 (GB) 是否稳定? v0.25.2 ≈2 稳定版 (Stable release) nightly ≈2 不稳定 的每夜构建版 (nightly build) 提示所示镜像大小指的是下载时的压缩 Docker 镜像大小。当 Docker 运行该镜像时,会对其进行解压,从而导致磁盘占用显著增加。解压后,Docker 镜像的大小将扩大到约 7 GB。
-
在服务器启动并运行后检查服务器状态:
$ docker logs -f docker-ragflow-cpu-1出现以下输出则确认系统已成功启动:
____ ___ ______ ______ __
/ __ \ / | / ____// ____// /____ _ __
/ /_/ // /| | / / __ / /_ / // __ \| | /| / /
/ _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/
* Running on all addresses (0.0.0.0)重要提示如果您跳过此确认步骤并直接登录 RAGFlow,您的浏览器可能会提示
network anomaly(网络异常)错误,因为此时您的 RAGFlow 可能尚未完全初始化。 -
在 Web 浏览器中,输入您服务器的 IP 地址并登录 RAGFlow。
警告在使用默认设置时,您只需输入
http://IP_OF_YOUR_MACHINE(无需端口号),因为在使用默认配置时可以省略默认的 HTTP 服务端口80。
配置大语言模型 (LLMs)
RAGFlow 作为一款 RAG 引擎,需要配合大语言模型 (LLM) 才能提供有据可依、无幻觉的问答能力。RAGFlow 支持大多数主流大语言模型。有关支持模型的完整列表,请参阅支持的模型。
RAGFlow 还支持使用 Ollama、Xinference 或 LocalAI 在本地部署大语言模型,但这部分内容不在本快速开始指南的讨论范围内。
要添加和配置大语言模型:
-
点击页面右上角的您的头像/Logo > Model providers(模型提供商)。
-
点击所需的大语言模型,并相应地更新 API 密钥 (API Key)。
-
点击 System Model Settings(系统模型设置)来选择默认模型:
- 对话模型 (Chat model)
- 嵌入模型 (Embedding model)
- 图生文模型 (Image-to-text model)
- 以及更多
某些模型,例如图生文模型 qwen-vl-max,从属于特定的大语言模型。您可能需要更新您的 API 密钥才能访问这些模型。
创建您的首个知识库 (Dataset)
在 RAGFlow 中,您可以将文件上传到知识库并对其进行解析。知识库(在界面上称为 Dataset)本质上是文档的集合。RAGFlow 中的问答可以基于特定的知识库或多个知识库。RAGFlow 支持的文件格式包括文档(PDF、DOC、DOCX、TXT、MD、MDX)、表格(CSV、XLSX、XLS)、图片(JPEG、JPG、PNG、TIF、GIF)以及演示文稿(PPT、PPTX)。
要创建您的首个知识库:
-
点击页面正上方的 Dataset(知识库/数据集)标签页 > Create dataset(创建知识库)。
-
输入您的知识库名称,然后点击 OK(确定)以确认。
系统将带您进入该知识库的 Configuration(配置)页面。

-
RAGFlow 提供了多种分块 (Chunking) 模板,以适应不同的文档布局 and 文件格式。为您的知识库选择嵌入模型 (Embedding model) 和分块方法(模板)。
重要提示一旦您选择好嵌入模型并用它解析了文件,就不能再更改该模型。显而易见的原因是,我们必须确保特定知识库中的所有文件都是使用同一个嵌入模型进行解析的(以确保它们在同一个嵌入空间中进行对比)。
随后系统将带您进入该知识库的 Dataset(文件列表)页面。
-
点击 + Add file(添加文件) > Local files(本地文件)开始将特定文件上传到知识库。
-
在已上传的文件条目中,点击播放/开始按钮启动文件解析:

干预文件解析
RAGFlow 具备高可视化和可解释性的特点,允许您查看分块 (Chunking) 结果并在必要时进行干预。步骤如下:
-
点击已完成解析的文件,查看分块结果:
系统将带您进入 Chunk(分块列表)页面:

-
将鼠标悬停在每个快照上,可以快速预览每个分块 (Chunk)。
-
双击已被分块的文本,可以根据需要添加关键词或进行手动修改:
注意您可以向文件分块添加关键词或问答对,以提高该分块在包含这些关键词的查询中的排名。此操作将增加其关键词权重,从而提升其在搜索列表中的位置。
-
在“检索测试”中,在 Test text(测试文本)中快速提问,以验证您的配置是否生效:
如下图所示,RAGFlow 会给出基于事实的准确引用。

开启 AI 对话
RAGFlow 中的对话基于特定的一个或多个知识库。创建完知识库并完成文件解析后,您就可以着手开始 AI 对话了。
-
点击页面正中上方的 Chat(对话)标签页 > Create chat(创建对话)来创建对话助手。
-
点击刚创建的对话应用,进入其配置页面。
RAGFlow 提供了极大的灵活性,允许您为每个对话选择不同的大语言模型,同时您也可以在 System Model Settings(系统模型设置)中设置默认模型。
-
更新配置页面右侧的 Chat setting(对话设置):
- 为您的助手命名,并指定关联的知识库。
- Empty response(空回复):
- 如果您希望 RAGFlow 的回答仅局限于您的知识库内容,请在此处填写一段默认回复。当系统未检索到答案时,它将统一使用您设置的内容进行回复。
- 如果您希望 RAGFlow 在未能从知识库检索到答案时进行即兴创作,请将此项保持空白(这可能会导致幻觉)。
-
更新 System prompt(系统提示词),初次使用时也可以保持默认状态。
-
在 Model(模型)下拉列表中选择一个对话模型。
-
接下来,让我们开始对话:

RAGFlow 还提供了 HTTP 和 Python API,便于您将 RAGFlow 的能力集成到自己的应用中。欲了解更多信息,请阅读以下文档: