跳到主要内容

入门指南

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 组件的正常运行至关重要。

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
  1. 克隆仓库:

    $ 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✔️不稳定的夜间构建
nightly-slim≈2不稳定的夜间构建

:::警告 重要提示 在v0.20.3nightly中包含的嵌入式模型如下:

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

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

:::提示 注意事项 所显示的镜像大小指的是下载后的Docker镜像大小(已压缩),当Docker运行时会将其解压出来使用,这会导致磁盘空间占用显著增加。例如,瘦版本的镜像在解压后大约是7GB左右的大小。 :::

  1. 在服务器启动之后检查其状态:

    $ docker logs -f ragflow-server

    下面的日志确认系统已成功启动:

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

    * 在所有地址上运行(0.0.0.0)

:::警告 重要提示 如果您跳过此确认步骤直接登录RAGFlow,由于此时的RAGFlow可能还没有完全初始化完毕,您的浏览器可能会提示“网络异常”错误。 :::

  1. 在您的Web浏览器中输入服务器的IP地址并登录到RAGFlow。

:::警告 警告 使用默认设置时,请在浏览器中直接访问http://IP_OF_YOUR_MACHINE(无需端口号),因为默认配置下的HTTP服务端口为80,可以省略。 :::

配置大模型

RAGFlow 是一个 RAG 引擎,需要与大型语言模型(LLM)配合工作,以提供基于事实且不含幻觉的问答功能。RAGFlow 支持大多数主流的 LLM 模型。有关支持的完整列表,请参见支持的模型

备注

RAGFlow 还支持使用 Ollama、Xinference 或 LocalAI 在本地部署大语言模型,但这些内容不在本快速入门指南中涵盖。

添加和配置 LLM:

  1. 点击页面右上角的个人图标 > Model providers(模型提供商):

    add llm

  2. 选择所需的 LLM 并相应地更新 API 密钥(此处使用 DeepSeek-V2):

    update api key

    你添加的模型如下所示:

    added available models

  3. 点击 System Model Settings(系统模型设置)以选择默认的模型:

    • Chat 模型,
    • 嵌入式模型,
    • 图片转文本模型。

    system model settings

一些模型,如图片转文本的 qwen-vl-max 模型,是特定 LLM 的附属功能。你可能需要更新你的 API 密钥以访问这些模型。

创建您的第一个知识库

在 RAGFlow 中,您允许上传文件到知识库,并将其解析为数据集。知识库实际上是一系列数据集合的组合。RAGFlow 支持的文件格式包括文档(PDF、DOC、DOCX、TXT、MD、MDX)、表格(CSV、XLSX、XLS)、图片(JPEG、JPG、PNG、TIF、GIF)和幻灯片(PPT、PPTX)。

创建您的第一个知识库:

  1. 点击页面中部的 Knowledge Base(知识库)标签 > Create knowledge base(创建知识库)。

  2. 输入您的知识库名称,然后点击 OK (确定)以确认更改。

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

    knowledge base configuration

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

重要

一旦选择了嵌入式模型并用于解析一个文件,则不允许更改该设置。显然的原因是,我们必须确保特定知识库中的所有文件都使用相同的嵌入式模型进行解析(以保证它们在一个统一的嵌入空间中比较)。

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

  1. 点击 + Add file (添加文件) > Local files(本地文件),开始上传特定文件到知识库。

  2. 在已上传文件的条目中,点击播放按钮以启动文件解析:

    file parsing

    当文件解析完成后,其解析状态将变为 SUCCESS(成功)。

注意
  • 如果您的文件解析卡在低于 1% 的位置,请参阅此 FAQ
  • 如果您的文件解析在接近完成时停止不动,但日志未显示任何错误,请参阅此 FAQ

干预文件解析

RAGFlow 具备可见性和可解释性功能,允许您查看切片结果并在必要时进行干预。为此:

  1. 点击完成文件解析的文件以查看切片结果:

    您将被带到 Chunk(块)页面:

    chunks

  2. 鼠标悬停在每个快照上,快速查看每块的内容。

  3. 双击切片文本以添加关键词或进行必要的 手动 更改:

    update chunk

注意

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

  1. 在检索测试中,在 Test text(测试文本)中快速提问,双重确认您的配置是否有效:

    如下所示,RAGFlow 将以真实引文的形式进行回应。

    retrieval test

设置AI聊天

RAGFlow中的对话基于特定的知识库或多知识库。在创建了您的知识库并完成文件解析后,您可以开始启动AI对话。

  1. 点击页面中部的**Chat(聊天)选项卡 > Create an assistant(创建助手) 来显示Chat Configuration(聊天配置)**对话框以设置您接下来的对话

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

  2. 更新Assistant settings(助手设置)

    • 为您的助手命名并指定知识库。
    • Empty response(空响应)
      • 如果希望将RAGFlow的回答限制在其知识库内,请在此处留下一个回答。这样当它没有检索到答案时,会统一用您在这里设定的内容回应。
      • 如果希望在未从您的知识库中检索到答案时让RAGFlow进行即兴发挥,请留空,这可能会导致幻觉现象。
  3. 更新**Prompt engine(提示引擎)**或保持不变。

  4. 更新Model settings(模型设置)

  5. 现在让我们开始:

    question1

    question2

提示

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