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

快速入门

RAGFlow 是一款基于深度文档理解的开源 RAG (Retrieval-Augmented Generation,检索增强生成) 引擎。与大语言模型 (LLM) 集成后,RAGFlow 能够基于各种格式复杂的数据,提供有理有据、可溯源的问答能力。

本快速上手指南将介绍以下完整流程:

  • 在本地启动 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.22.1 使用 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,请将其重置为至少 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.22.1
  2. 使用预构建的 Docker 镜像并启动服务

    # Use CPU for DeepDoc tasks:
    $ docker compose -f docker-compose.yml up -d
    <APITable>
    RAGFlow 镜像标签镜像大小 (GB)是否稳定?
    v0.22.1≈2稳定版
    nightly≈2不稳定的每日构建版
    </APITable>
    注意

    此处显示的镜像大小指的是下载的 Docker 镜像的大小,该镜像是经过压缩的。当 Docker 运行该镜像时,会将其解压,导致磁盘使用量显著增加。一个 Docker 镜像解压后大约会占用 7 GB 的空间。

  3. 在服务启动并运行后检查服务状态

    $ docker logs -f docker-ragflow-cpu-1

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

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

    * Running on all addresses (0.0.0.0)
    重要

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

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

    警告

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

配置大语言模型 (LLM)

RAGFlow 是一个 RAG 引擎,需要与 LLM 配合使用,以提供有事实依据、无幻觉的问答能力。RAGFlow 支持大多数主流的 LLM。有关支持模型的完整列表,请参阅支持的模型

注意

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

要添加和配置 LLM:

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

  2. 点击所需的大语言模型 (LLM),并相应地更新 API 密钥。

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

    • 对话模型,
    • Embedding 模型,
    • 图像到文本模型,
    • 以及更多。

某些模型,例如图像到文本模型 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. 输入您的数据集名称,然后点击确定以确认您的更改。

    您将被带到您数据集的配置页面。

    dataset configuration

  3. RAGFlow 提供多种切片模板,以适应不同的文档布局和文件格式。为您的数据集选择 Embedding 模型和切片方法 (模板)。

    重要

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

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

  4. 点击 + 添加文件 > 本地文件,开始将特定文件上传到数据集。

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

    parse file

    注意

对文件解析进行干预

RAGFlow 具有可见性和可解释性的特点,允许您查看切片结果并在必要时进行干预。操作如下:

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

    您将被带到分块页面

    chunks

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

  3. 双击切分后的文本,在必要时添加关键词或进行手动修改。

    update chunk

    注意

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

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

    从以下内容可以看出,RAGFlow 的回应带有真实可信的引文。

    retrieval test

创建 AI 对话

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

  1. 点击页面顶部中间的对话标签页 > 创建对话来创建一个对话助手。

  2. 点击创建的聊天应用,进入其配置页面。

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

  3. 更新配置页面右侧的对话设置

    • 为您的助手命名并指定您的数据集。
    • 空回复:
      • 如果您希望将 RAGFlow 的回答限制在您的数据集中,请在此处留下回复。这样当它没有检索到答案时,会统一使用您在此设置的内容进行回复。
      • 如果您希望 RAGFlow 在未从您的数据集中检索到答案时能够自由发挥,请将此项留空,但这可能会导致幻觉的产生。
  4. 更新系统提示,或者对于初学者可以保持原样。

  5. 模型下拉列表中选择一个对话模型。

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

    chat_thermal_solution

注意

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

© . This site is unofficial and not affiliated with InfiniFlow.