跳转到主内容
版本:开发版

快速入门

RAGFlow 是一款基于深度文档理解的开源 RAG(Retrieval-Augmented Generation,检索增强生成)引擎。它与大语言模型(LLM)结合,能够为各种格式复杂的数据提供可靠的问答能力,并提供充分的引用依据。

本快速入门指南将介绍以下完整流程:

  • 启动本地 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。
  • gVisor:仅在您打算使用 RAGFlow 的代码执行器(sandbox)功能时才需要。
注意

如果您的本地计算机(Windows、Mac 或 Linux)尚未安装 Docker,请参阅安装 Docker 引擎

启动服务

本节提供了在 Linux 上设置 RAGFlow 服务的说明。如果您使用其他操作系统,无需担心,大多数步骤都是相似的。

1. 确保 `vm.max_map_count` ≥ 262144

`vm.max_map_count`。该值设置了一个进程可能拥有的最大内存映射区域数。其默认值为 65530。虽然大多数应用程序需要的映射少于一千个,但减小此值可能会导致异常行为,当进程达到限制时,系统会抛出内存不足的错误。

RAGFlow v0.20.0 使用 Elasticsearch 或 Infinity 进行多路召回。正确设置 `vm.max_map_count` 的值对于 Elasticsearch 组件的正常运行至关重要。

1.1. 检查 `vm.max_map_count` 的值

$ sysctl vm.max_map_count

1.2. 如果 `vm.max_map_count` 的值不是至少 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
  1. 克隆仓库

    $ git clone https://github.com/infiniflow/ragflow.git
    $ cd ragflow/docker
    $ git checkout -f v0.20.0
  2. 使用预构建的 Docker 镜像并启动服务

    注意

    以下命令会下载 RAGFlow Docker 镜像的 `v0.20.0-slim` 版本。关于不同 RAGFlow 版本的描述,请参考下表。要下载不同于 `v0.20.0-slim` 的 RAGFlow 版本,请在使用 `docker compose` 启动服务前,相应地更新 docker/.env 中的 `RAGFLOW_IMAGE` 变量。例如:对于完整版 `v0.20.0`,设置 `RAGFLOW_IMAGE=infiniflow/ragflow:v0.20.0`。

    # Use CPU for embedding and DeepDoc tasks:
    $ docker compose -f docker-compose.yml up -d

    # To use GPU to accelerate embedding and DeepDoc tasks:
    # docker compose -f docker-compose-gpu.yml up -d
RAGFlow 镜像标签镜像大小 (GB)是否包含嵌入模型和 Python 包?稳定吗?
v0.20.0≈9✔️稳定版
v0.20.0-slim≈2稳定版
nightly≈9✔️不稳定 的每日构建版
nightly-slim≈2不稳定 的每日构建版
重要

`v0.20.0` 和 `nightly` 中包含的嵌入模型是

  • BAAI/bge-large-zh-v1.5
  • maidalun1020/bce-embedding-base_v1

这两个嵌入模型专门针对英文和中文进行了优化,因此如果您用它们来嵌入其他语言的文档,性能会受到影响。

注意

显示的镜像大小指的是*已下载*的 Docker 镜像的大小,该镜像是经过压缩的。当 Docker 运行镜像时,它会解压镜像,导致磁盘使用量显著增加。例如,一个 slim 版本的镜像解压后将扩展到约 7 GB。

  1. 服务启动并运行后检查服务器状态

    $ docker logs -f ragflow-server

    以下输出确认系统已成功启动

         ____   ___    ______ ______ __
    / __ \ / | / ____// ____// /____ _ __
    / /_/ // /| | / / __ / /_ / // __ \| | /| / /
    / _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
    /_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/

    * Running on all addresses (0.0.0.0)
重要

如果您跳过此确认步骤直接登录 RAGFlow,您的浏览器可能会提示 `network anomaly`(网络异常)错误,因为此时您的 RAGFlow 可能尚未完全初始化。

  1. 在您的网页浏览器中,输入您服务器的 IP 地址并登录 RAGFlow。
警告

使用默认设置时,您只需输入 `http://您的机器IP`(**不带**端口号),因为使用默认配置时,默认的 HTTP 服务端口 `80` 可以省略。

配置大语言模型

RAGFlow 是一个 RAG 引擎,需要与大语言模型(LLM)配合工作,才能提供有理有据、无幻觉的问答能力。RAGFlow 支持大多数主流 LLM。有关支持模型的完整列表,请参阅支持的模型

注意

RAGFlow 也支持使用 Ollama、Xinference 或 LocalAI 在本地部署 LLM,但这部分内容不在此快速入门指南中介绍。

要添加和配置一个 LLM

  1. 点击页面右上角的您的头像 > 模型提供商

    add llm

  2. 点击所需的大语言模型并相应地更新 API 密钥(本例中为 DeepSeek-V2)

    update api key

    您添加的模型如下所示

    added available models

  3. 点击系统模型设置以选择默认模型

    • 聊天模型,
    • 嵌入模型,
    • 图生文模型。

    system model settings

一些模型,如图生文模型 qwen-vl-max,是特定 LLM 的附属模型。您可能需要更新您的 API 密钥才能访问这些模型。

创建您的第一个知识库

您可以在 RAGFlow 中将文件上传到知识库,并将它们解析成数据集。知识库实际上是数据集的集合。RAGFlow 中的问答可以基于一个特定的知识库或多个知识库。RAGFlow 支持的文件格式包括文档(PDF、DOC、DOCX、TXT、MD、MDX)、表格(CSV、XLSX、XLS)、图片(JPEG、JPG、PNG、TIF、GIF)和幻灯片(PPT、PPTX)。

要创建您的第一个知识库

  1. 点击页面中上方的知识库标签 > 创建知识库

  2. 输入您的知识库名称并点击确定以确认您的更改。

    您将被带到知识库的配置页面。

    knowledge base configuration

  3. RAGFlow 提供多种分块模板,以适应不同的文档布局和文件格式。为您的知识库选择嵌入模型和分块方法(模板)。

重要

一旦您选择了一个嵌入模型并用它解析了文件,您就不能再更改它了。显而易见的原因是,我们必须确保特定知识库中的所有文件都使用*同一个*嵌入模型进行解析(确保它们在同一个嵌入空间中进行比较)。

您将被带到知识库的数据集页面。

  1. 点击 + 添加文件 > 本地文件,开始将特定文件上传到知识库。

  2. 在已上传文件的条目中,点击播放按钮开始文件解析

    file parsing

    当文件解析完成时,其解析状态变为成功

注意

干预文件解析

RAGFlow 具有可见性和可解释性,允许您查看分块结果并在必要时进行干预。要做到这一点:

  1. 点击完成文件解析的文件以查看分块结果

    您将被带到分块页面

    chunks

  2. 将鼠标悬停在每个快照上,可快速查看每个分块。

  3. 双击分块文本以添加关键词或在必要时进行*手动*修改

    update chunk

注意

您可以为一个文件分块添加关键词,以提高其在包含这些关键词的查询中的排名。此操作会增加其关键词权重,并可以提高其在搜索列表中的位置。

  1. 在召回测试中,在测试文本中快速提问,以再次检查您的配置是否有效

    正如您从下面可以看到的,RAGFlow 会用真实的引文进行回应。

    retrieval test

建立一个 AI 聊天

RAGFlow 中的对话基于一个或多个特定的知识库。一旦您创建了知识库并完成了文件解析,您就可以开始进行 AI 对话了。

  1. 点击页面中上方的聊天标签 > 创建助手,以显示*您下一个对话*的聊天配置对话框。

    RAGFlow 提供了为每个对话选择不同聊天模型的灵活性,同时也允许您在系统模型设置中设置默认模型。

  2. 更新助手设置

    • 为您的助手命名并指定您的知识库。
    • 空回复:
      • 如果您希望将 RAGFlow 的回答*限制*在您的知识库范围内,请在此处留下一个回复。这样,当它没有检索到答案时,它会*统一地*用您在此处设置的内容进行回复。
      • 如果您希望 RAGFlow 在未从您的知识库中检索到答案时*即兴发挥*,请将其留空,但这可能会产生幻觉。
  3. 更新提示词引擎或在开始时保持原样。

  4. 更新模型设置

  5. 现在,让我们开始表演吧

    question1

    question2

注意

RAGFlow 还提供 HTTP 和 Python API,供您将 RAGFlow 的功能集成到您的应用程序中。请阅读以下文档以获取更多信息: