快速开始
RAGFlow 是一个基于深度文档理解的开源 RAG(检索增强生成)引擎。当与大型语言模型(LLMs)集成时,它能够提供真实可信的问答能力,并支持从各种复杂格式的数据中引用有据可依的内容。
本快速入门指南描述了从以下方面的一般流程:
- 启动本地RAGFlow服务器,
- 创建知识库,
- 干预文件解析,以
- 基于您的数据集建立AI聊天。
我们正式支持x86 CPU和Nvidia GPU,本文档提供了在x86平台上使用Docker部署RAGFlow的说明。虽然我们也在ARM64平台上测试了RAGFlow,但我们不计划维护ARM的RAGFlow Docker镜像。
如果您使用的是ARM平台,请按照本指南构建RAGFlow Docker镜像。
先决条件
- CPU ≥ 4 核 (x86);
- 内存 ≥ 16 GB;
- 磁盘 ≥ 50 GB;
- Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1.
启动服务器
本节提供了在Linux上设置RAGFlow服务器的说明。如果您使用的是不同的操作系统,不用担心。大多数步骤都是相似的。
1. Ensure vm.max_map_count
≥ 262144:
vm.max_map_count
. 此值设置一个进程可能拥有的最大内存映射区域数。其默认值为65530。虽然大多数应用程序需要的映射数少于一千,但减少此值可能导致异常行为,当进程达到限制时,系统将抛出内存不足错误。
RAGFlow v0.15.1 使用 Elasticsearch 或 Infinity 进行多重召回。正确设置 vm.max_map_count
的值对于 Elasticsearch 组件的正常运行至关重要。
- Linux
- macOS
- Windows
1.1. 检查 vm.max_map_count
的值:
$ sysctl vm.max_map_count
1.2. 如果vm.max_map_count
的值小于262144,请将其重置为至少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
如果您使用的是带有Docker Desktop WSL 2后端的Windows系统,请使用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
# Append a line, which reads:
vm.max_map_count = 262144
-
克隆仓库:
$ git clone https://github.com/infiniflow/ragflow.git
$ cd ragflow
$ git checkout -f v0.15.1 -
使用预构建的Docker镜像并启动服务器:
NOTE以下命令下载RAGFlow Docker镜像的
v0.15.1-slim
版本。请参考下表了解不同RAGFlow版本的描述。要下载不同于v0.15.1-slim
的RAGFlow版本,请在使用docker compose
启动服务器之前,在docker/.env中相应地更新RAGFLOW_IMAGE
变量。例如:为完整版v0.15.1
设置RAGFLOW_IMAGE=infiniflow/ragflow:v0.15.1
。$ docker compose -f docker/docker-compose.yml up -d
RAGFlow 镜像标签 | 镜像大小 (GB) | 是否包含嵌入模型和Python包? | 是否稳定? |
---|---|---|---|
v0.15.1 | ≈9 | ✔️ | 稳定版本 |
v0.15.1-slim | ≈2 | ❌ | 稳定版本 |
nightly | ≈9 | ✔️ | 不稳定 的 nightly 构建 |
nightly-slim | ≈2 | ❌ | 不稳定 的 nightly 构建 |
-
在服务器启动并运行后检查服务器状态:
$ docker logs -f ragflow-server
以下输出确认系统已成功启动:
____ ___ ______ ______ __
/ __ \ / | / ____// ____// /____ _ __
/ /_/ // /| | / / __ / /_ / // __ \| | /| / /
/ _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:9380
* Running on http://x.x.x.x:9380
INFO:werkzeug:Press CTRL+C to quit如果您跳过此确认步骤并直接登录到RAGFlow,您的浏览器可能会提示
network anomaly
错误,因为此时您的RAGFlow可能尚未完全初始化。 -
在您的网页浏览器中,输入您服务器的IP地址并登录到RAGFlow。
使用默认设置时,您只需输入http://IP_OF_YOUR_MACHINE
(无需端口号),因为在使用默认配置时可以省略默认的HTTP服务端口80
。
配置LLMs
RAGFlow 是一个 RAG 引擎,需要与一个 LLM 配合使用,以提供基于事实、无幻觉的问答能力。RAGFlow 支持大多数主流的 LLM。有关支持的模型的完整列表,请参阅 支持的模型。
RAGFlow 还支持使用 Ollama、Xinference 或 LocalAI 在本地部署 LLMs,但本快速入门指南未涵盖此部分。
添加并配置LLM:
-
点击页面右上角的您的徽标 > 模型提供者:
每个RAGFlow账户都可以免费使用text-embedding-v2,这是通义千问的一个嵌入模型。这就是为什么你可以在已添加模型列表中看到通义千问。你可能需要在稍后更新你的通义千问API密钥。
-
点击所需的LLM并相应地更新API密钥(在本例中为DeepSeek-V2):
您添加的模型显示如下:
-
点击系统模型设置以选择默认模型:
- 聊天模型,
- 嵌入模型,
- 图像到文本模型。
一些模型,如图像到文本模型qwen-vl-max,是特定LLM的附属模型。您可能需要更新您的API密钥以访问这些模型。
创建您的第一个知识库
您可以将文件上传到RAGFlow中的知识库,并将其解析为数据集。知识库实际上是数据集的集合。RAGFlow中的问答可以基于特定的知识库或多个知识库。RAGFlow支持的文件格式包括文档(PDF、DOC、DOCX、TXT、MD)、表格(CSV、XLSX、XLS)、图片(JPEG、JPG、PNG、TIF、GIF)和幻灯片(PPT、PPTX)。
创建您的第一个知识库:
-
点击页面顶部中间的知识库标签>创建知识库。
-
输入您的知识库名称,然后点击确定以确认您的更改。
您将被带到知识库的配置页面。
-
RAGFlow 提供了多种分块模板,以适应不同的文档布局和文件格式。为您的知识库选择嵌入模型和分块方法(模板)。
一旦你选择了一个嵌入模型并用它来解析文件,就不允许再更改它。显而易见的原因是,我们必须确保特定知识库中的所有文件都使用相同的嵌入模型进行解析(确保它们在相同的嵌入空间中进行比较)。
您将被带到知识库的数据集页面。
-
点击+ 添加文件 > 本地文件开始将特定文件上传到知识库。
-
在上传的文件条目中,点击播放按钮开始文件解析:
当文件解析完成时,其解析状态变为SUCCESS。
干预文件解析
RAGFlow 具有可见性和可解释性,允许您查看分块结果并在必要时进行干预。为此:
-
点击完成文件解析的文件以查看分块结果:
您被带到Chunk页面:
-
将鼠标悬停在每个快照上以快速查看每个块。
-
双击分块文本以添加关键字或在必要时进行手动更改:
您可以向文件块添加关键字,以提高其在包含这些关键字的查询中的排名。此操作会增加其关键字权重,并可以改善其在搜索列表中的位置。
-
在检索测试中,在测试文本中提出一个快速问题,以再次确认您的配置是否有效:
从以下内容可以看出,RAGFlow 提供了真实的引用。
设置一个AI聊天
RAGFlow中的对话基于特定的知识库或多个知识库。一旦您创建了知识库并完成了文件解析,您就可以继续进行并开始AI对话。
-
点击页面顶部中间的Chat标签>创建助手以显示聊天配置对话框用于您的下一个对话。
RAGFlow 提供了为每个对话选择不同聊天模型的灵活性,同时允许您在系统模型设置中设置默认模型。
-
更新助手设置:
- 为您的助手命名并指定您的知识库。
- 空响应:
- 如果您希望将RAGFlow的答案限制在您的知识库中,请在此处留下响应。然后当它没有检索到答案时,它会统一响应您在此处设置的内容。
- 如果您希望RAGFlow在未从您的知识库中检索到答案时即兴发挥,请留空,这可能会导致幻觉。
-
更新提示引擎或保持原样开始。
-
更新模型设置。
-
现在,让我们开始表演:
RAGFlow 还提供了 HTTP 和 Python API,以便您将 RAGFlow 的功能集成到您的应用程序中。阅读以下文档以获取更多信息: