入门指南
RAGFlow 是一个基于深度文档理解的开源 RAG(检索增强生成)引擎。当与大语言模型(LLMs)集成时,它可以提供基于各种复杂格式数据来源的真实问答能力。
本快速入门指南描述了一般的流程:
- 启动本地 RAGFlow 服务器,
- 创建知识库,
- 处理文件解析,
- 基于您的数据集建立 AI 聊天系统。
我们正式支持 x86 CPU 和 Nvidia GPU,并且本文档提供了在 x86 平台上使用 Docker 部署 RAGFlow 的说明。尽管我们在 ARM64 平台上也进行了测试,但我们不维护针对 ARM 架构的 RAGFlow Docker 镜像。
如果您在 ARM 平台上,请按照此指南构建 RAGFlow Docker 镜像。
先决条件
- CPU ≥ 4 核 (x86);
- 内存 ≥ 16 GB;
- 磁盘空间 ≥ 50 GB;
- Docker 版本 ≥ 24.0.0 和 Docker Compose 版本 ≥ v2.26.1。
- gVisor: 如果您打算使用 RAGFlow 的代码执行器(沙箱)功能,则需要安装。
如果您尚未在本地机器上安装 Docker(Windows、Mac 或 Linux),请参阅 安装 Docker 引擎。
启动服务器
本节提供了在Linux上设置RAGFlow服务器的指导。如果你使用的是其他操作系统,请不用担心,大多数步骤是相似的。
1. 确保vm.max_map_count
≥ 262144:
vm.max_map_count
:此值设置进程可拥有的最大内存映射区域数量。默认值为65530。虽然大多数应用程序所需的映射区少于一千个,但降低该值可能导致异常行为,并且当进程达到限制时系统会抛出“内存不足”的错误。
RAGFlow v0.20.3 使用 Elasticsearch 或 Infinity 进行多重召回。正确设置 vm.max_map_count
的值对于 Elasticsearch 组件的正常运行至关重要。
- Linux
- macOS
- Windows
1.1. 检查 vm.max_map_count
的值:
$ sysctl vm.max_map_count
1.2. 如果该值不满足条件,将其重置为至少 262144:
$ sudo sysctl -w vm.max_map_count=262144
这个更改在系统重启后会被重置。如果你忘记下次启动服务器时更新该值,可能会收到 Can't connect to ES cluster
异常。
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
异常。
要使你的更改持久化,请创建一个带有适当设置的文件:
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. 保存文件后,加载新的守护进程:
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
异常。
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.20.3
```3. 使用预构建的Docker镜像启动服务器:
:::提示 注意事项
下面的命令下载了RAGFlow Docker镜像的 `v0.20.3-slim` 版本。参考下表了解不同版本的描述信息。如果您需要下载与 `v0.20.3-slim` 不同的 RAGFlow 版本,请在使用 `docker compose` 启动服务前,在 **docker/.env** 文件中更新 `RAGFLOW_IMAGE` 变量值。例如,要为完整版 `v0.20.3` 设置变量,则将 `RAGFLOW_IMAGE` 设置为 `infiniflow/ragflow:v0.20.3`。
:::
```bash
# 使用CPU进行嵌入式和DeepDoc任务:
$ docker compose -f docker-compose.yml up -d
# 要使用GPU来加速嵌入式和DeepDoc任务:
# docker compose -f docker-compose-gpu.yml up -d
RAGFlow 镜像标签 | 镜像大小(GB) | 包含嵌入模型及Python包? | 稳定版 |
---|---|---|---|
v0.20.3 | ≈9 | ✔️ | 稳定发布版本 |
v0.20.3-slim | ≈2 | ❌ | 稳定发布版本 |
nightly | ≈9 | ✔️ |