type
status
date
slug
summary
tags
category
icon
password
RAGflow 项目介绍
RAGflow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。它可以为各种不同规模的项目提供一套精简的 RAG 工作流程,结合大语言模型针对用户的各类不同的复杂格式数据提供可靠的问答和有理有据的引用。
本文将详细介绍 RAGflow 项目,并提供快速入门指南,同时也会从源码层面对 RAGflow 项目进行简要解析,从而可以对 RAGflow 项目有一个全面的了解。
1. RAGflow 核心功能介绍
RAGflow 是一个集成化模块化的 RAG 框架,它结合了最新的检索技术、大型语言模型、支持多种类型的数据格式解析、多样的切片&索引构建策略,以提高生成内容的质量和相关性,同时还支持基于 Graph 的 Agent 工作流构建,端到端提供检索增强问答等能力。
具体来说,RAGflow 的核心功能包括:
- 高质量的文档提取:支持多种格式的文档,确保准确的信息抽取
- 基于模板,支持各类切片模式:灵活适应不同场景的数据分割需求
- 可视化,检索内容支持溯源,切片透明:提高系统的可解释性和可信度
- 支持多种类型的数据源:适应各种数据环境,提高系统的通用性
- 支持多种模型对接:兼容不同的语言模型,满足多样化的应用需求
- 提供各类API:便于集成到现有系统中,提高开发效率
- 多路召回,融合重排序:提高检索精度和相关性
- 支持Graph定制工作流:实现复杂的智能交互和决策流程
2. 系统架构
RAGflow 整体的系统架构图如下:

整体包含两条流:
- 知识构建流:
- 文档解析:支持多种格式的文档,如PDF、Word、HTML等
- 多样数据识别:包括 OCR 图片识别、文档布局分析、表结构识别
- 文本切片:基于模板的灵活切片策略
- 向量化:将文本转换为向量表示
- 索引构建:创建高效的检索索引
- 问答检索增强流:
- 查询处理:对用户输入进行预处理和理解
- 多路召回:使用多种策略检索相关信息
- 重排序:对检索结果进行精确排序
- LLM生成:利用大语言模型生成最终答案
- 引用追踪:提供答案的来源和依据
3. 快速入门指南
3.1 环境搭建
RAGflow 官方提供了快速部署的文档,整体还是非常简单清晰的。
具体步骤如下:
要求 Docker >= 24.0.0 & Docker Compose >= v2.26.1
由于镜像是相对比较大的,因此拉取镜像可以有一定的耗时,耐心等待即可。
等待服务启动后,检查 ragflow-server 的日志:
如果出现以下内容说明服务启动成功:
接下来,你就可以直接访问 http://127.0.0.1 来访问你的服务了。
3.2 准备知识数据
我们以 https://webui-agent.thoughtailab.com/about 项目文档为例来构造我们的知识集。
上述项目是我们最近在进行的一些 AI 原生应用用于 WEB UI 智能化测试的项目,它的文档相当的齐全,可以用于我们构建知识集以及相关的问答等场景评测。
由于 RAGflow 并不支持基于整站站点的数据抓取,因此,我们需要先通过一段 LangChain + Firecrawl 代码将对应站点的文档下抓取下来。
完成上述操作后,我们可以将 WEBUI Agent 项目文档批量导出的 markdown 文档。
3.3 创建知识库
接下来,我们需要在 RAGflow 进入文件管理页面,并上传相应的文档:

下一步,我们需要创建一个 WEB UI 智能体的知识库,并将文档关联到对应的知识库:

接下来,需要进入到知识库的数据集页面,启动对文档的解析:

在解析之前,可以通过配置选择不同的解析方法和解析模型:

RAGflow 的一大亮点就是支持各种基于模板的解析模式和多样的模型支持。这种灵活性使得 RAGflow 能够适应不同类型的文档和数据结构,从而提高解析的准确性和效率。
具体来说,RAGflow 提供了以下几种解析模式和模型支持:
- 基于规则的解析:适用于结构化程度较高的文档
- 基于典型数据结构的解析:例如 Paper, Table 等类型的数据
- 基于 Graph 的解析:参考 GraphRAG 构建知识集的 Knowledge Graph 知识图谱
通过这些多样化的解析选项,RAGflow 能够更好地处理各种复杂的文档结构,提取高质量的信息,为后续的检索和问答任务奠定坚实的基础。
3.4 注册模型
额外补充一下,在模型的选择上,RAGflow 也提供了非常多的模型服务提供商,例如常见的 OpenAI 等,但是再使用这些模型之前,首先去设置页面配置相关的模型提供商:

添加模型服务商后,继续还需要配置一下默认的系统模型的设置。此处,我们先配置了 OpenAI 的相关模型用于一些基础的验证。
系统默认模型设置时,不支持将 gpt-4o 模型选为 img2text 模型,只支持选择 gpt-4-version-preview,需要看一下如何修改配置。
配置完成后,我们就可以启动解析任务了。
我们先使用最简单的 General 的方法进行文档解析。

可以看到,切的稀烂😅。在后文中,我们会尝试其他的各种不同的切分策略来看一下效果。
现在,我们先继续往后,来体验一下完整的功能吧!
3.5 检索测试
我们可以在【检索测试】中,针对指定文件验证检索内容:

3.6 Chat 功能
下面,我们来基于知识增强构建一个 Chat 机器人。



创建完成后,可以发起对话试试了:

… 效果的确不尽如人意,和 chunk 切片一样,回答的基本不对😅!
与切分策略一样,后续我们会对整体的策略进行调整,从而得到更好的表现效果。
3.7 搜索功能
除了对话之外,RAGflow 还提供了两大核心能力,分别是:搜索和 Agent。
下面,我们先看尝试一下搜索能力:

Cool! 搜索效果还是不错的!
3.8 Agent 功能
最后,我们再来体验一个 Agent 的能力吧。
RAGflow 支持以 Graph 的模式定义一个 Agent 的工作流,同时,内置了一系列常用的工作流模板。此处,我们来创建一个通用的 ChatBot 的 Agent 体验一下效果吧。
通用 ChatBot 的默认工作流如下:

我们可以调整其工作流模式,同时,RAGFlow 提供了一系列 Node 供选择:

我们先使用默认的工作流保存来看看效果。其中,知识检索环节主要关联一个知识集,我们关联到我们配置的知识库即可。同时,我们将相关的模型全部调整为 gpt-4o-mini 模型。

emmm…. 回答的还是不好,核心本质其实还是知识构建的比较离散,检索增强得到的效果不好。
接下来,我们来切换更新的知识构建方式来观察一下效果变化。
4. 多种切块模式验证
4.1 KnowledgeGraph
下面,我们来尝试使用目前业内比较先进的 KnowledgeGraph 的方式来进行数据解析。

配置如上图所示,其中,实例类型是我们以对当前项目的理解,人工提前标注出来的一些核心实体(不是必须的,但是如果有一些系统中的核心概念,标注出来对整体的效果会有一定的提升)。
然后,我们启动知识集的构建,相比最基础的 General 模式,KnowledgeGraph 的知识构建模型明显会更慢一些,我们需要耐心等待一阵。

如图所示,这是针对执行引擎介绍一文中,构造出的思维脑图。

如图所示,这是针对项目背景一文构造出的知识图谱。
等待知识构建完成后,我们再来看一下 Agent 的效果是不是变的更好了:

不错,很明显,效果的确变的更好了!