架构概览
概述
RAGFlow 是一款基于深度文档理解的开源检索增强生成(RAG)引擎,其系统架构围绕"文档输入 → 智能解析 → 向量检索 → 生成回答"的核心数据流设计。整个系统采用微服务架构思想,将前端交互、后端业务逻辑、文档存储、元数据管理和缓存服务解耦为独立组件,各组件通过 API 协议和数据管道协同工作。
用户通过 Web UI 上传文档并发起问答,请求经过 API Server 编排处理后,由 DeepDoc 引擎完成文档解析和分块,解析结果以向量和全文索引的形式存入 Elasticsearch/Infinity,原始文件存储在 MinIO 对象存储中,用户和知识库的配置信息持久化到 MySQL 数据库,会话状态和热点数据通过 Redis 缓存加速访问。
系统架构图
以下交互式架构图展示了 RAGFlow 各组件的层级关系和数据流向。鼠标悬停在任意组件上,可高亮该组件及其直接关联的数据通路。
核心组件
前端 Web UI
RAGFlow 的前端基于 React 构建,为用户提供知识库管理、文档上传、对话交互、Agentic 工作流可视化编排等完整的操作界面。用户通过 Web UI 完成所有日常操作,包括创建和配置知识库、上传各类格式文档、选择分块策略、发起基于文档的智能问答对话,以及搭建多步骤的 Agent 工作流。前端还提供了文档解析状态的实时反馈和问答结果中引用来源的可视化展示。
后端 API 服务
后端 API 服务是 RAGFlow 的业务逻辑核心,基于 Python 构建,负责编排整个 RAG 流程——从接收用户请求、调度文档解析、管理向量索引,到协调 LLM 调用生成最终答案。API 层处理用户认证与权限控制、知识库 CRUD 操作、文档上传与解析任务队列管理、检索-排序-生成流水线的完整编排,并对外暴露 RESTful HTTP API 供第三方系统集成调用。
Elasticsearch / Infinity
Elasticsearch 是 RAGFlow 默认的文档引擎(Document Engine),负责存储文档的全文索引和向量嵌入(embedding),支持混合检索(全文检索 + 向量相似度检索)以提高召回精度。RAGFlow 同时支持切换到 Infinity(由 InfiniFlow 团队开发的高性能向量数据库)作为替代引擎,Infinity 在大规模向量检索场景下具有更优的性能表现。无论使用哪种引擎,系统都存储文档的分块文本、向量表示和对应的元数据信息(如来源文件、页码位置等)。
MySQL
MySQL 作为 RAGFlow 的关系型元数据存储,持久化系统运行所需的结构化数据,包括用户账户信息、知识库配置、文档注册记录、分块策略参数、对话历史记录以及 Agent 工作流定义等。所有需要事务一致性保证的业务数据都通过 MySQL 管理,确保系统状态的可靠性和可恢复性。
MinIO
MinIO 是 RAGFlow 使用的 S3 兼容对象存储服务,专门用于存储用户上传的原始文档文件(如 PDF、Word、Excel、图片等)。将原始文件与解析后的结构化数据分离存储,既保证了文档的完整性和可追溯性,也使得系统能够在需要时重新解析文档或为用户提供原文下载。
Redis
Redis 在 RAGFlow 架构中承担缓存和会话管理的职责,用于存储用户登录会话(session)、API 请求频率限制、任务队列状态以及高频访问数据的临时缓存。通过 Redis 的内存级读写性能,系统能够显著降低数据库查询压力,加快用户请求的响应速度,同时为分布式部署场景下的会话共享提供支持。
核心能力
DeepDoc 文档理解
DeepDoc 是 RAGFlow 内置的深度文档解析模块,集成了 OCR(光学字符识别)、TSR(表格结构识别)和 DLR(文档版面识别)等视觉模型能力,能够精准处理包含复杂排版、图表、公式和扫描件的 PDF 文档。对于用户而言,这意味着无需手动预处理文档即可直接上传各类复杂格式的资料,系统自动将其转化为高质量的结构化文本,大幅提升下游检索和问答的准确性。
模板化分块
RAGFlow 提供多种分块策略模板(如通用、简历、论文、表格、法律文书等),用户可以根据不同文档类型选择最匹配的分块方式,系统按照预设的语义边界将文档切分为意义完整的文本块。这种模板化的分块机制避免了"一刀切"的固定长度切分问题,确保每个分块都保持语义完整性,从而提高检索召回率和答案生成质量,用户无需深入理解分块算法即可获得最佳效果。
引用溯源
RAGFlow 在生成回答时会自动标注每段内容对应的来源文档名称、页码和具体文本片段,使用户可以一键定位到原始出处进行验证。这一能力让 RAG 系统的输出具备可审计性和可信度,用户不再需要盲目信任 AI 生成的答案,而是可以快速追溯到原始材料确认信息的准确性,特别适用于对信息可靠性要求严格的专业场景(如法律、金融、学术研究)。
多数据源支持
RAGFlow 支持导入多种文档格式(PDF、Word、Excel、PPT、TXT、Markdown、图片等)和多种数据来源(本地上传、S3 存储、Web 爬取等),用户可以将分散在不同系统和格式中的知识统一汇聚到 RAGFlow 平台。这种广泛的数据源兼容性意味着企业无需对已有文档进行格式转换,即可快速构建覆盖全面的知识库,降低了知识管理的入门门槛。
Agentic 工作流
RAGFlow 提供基于有向图的可视化工作流编排能力,用户可以通过拖拽方式组合检索、生成、判断、循环等组件,构建多步骤的智能任务流(如深度研究、自动报告生成、多轮问答推理等)。Agentic 工作流支持 LLM 驱动的自主决策——Agent 可以根据中间结果动态调整执行路径、调用外部工具或子 Agent,让用户无需编程即可实现复杂的 AI 自动化任务,极大拓展了 RAGFlow 从简单问答到端到端智能应用的能力边界。
能力-组件映射表
下表说明每项核心能力主要由哪些组件承载实现:
| 核心能力 | 主要实现组件 | 说明 |
|---|---|---|
| DeepDoc 文档理解 | 后端 API 服务 | DeepDoc 模块集成在后端服务中,解析结果写入 Elasticsearch/Infinity 和 MinIO |
| 模板化分块 | 后端 API 服务、Elasticsearch/Infinity | 后端执行分块逻辑,分块结果(文本+向量)索引到文档引擎 |
| 引用溯源 | 后端 API 服务、Elasticsearch/Infinity、前端 Web UI | 后端从文档引擎检索分块元数据(来源、页码),前端渲染引用标注 |
| 多数据源支持 | 后端 API 服务、MinIO | 后端处理多格式解析逻辑,MinIO 存储各类原始文件 |
| Agentic 工作流 | 前端 Web UI、后端 API 服务、Redis | 前端提供可视化编排界面,后端执行工作流引擎,Redis 维护任务状态 |
数据流向说明
RAGFlow 的核心数据流可以分为文档入库流程和问答检索流程两条主线:
文档入库流程
- 用户上传 — 用户通过 Web UI 上传文档文件,前端将文件发送到 API 服务
- 文件存储 — API 服务将原始文件存入 MinIO 对象存储,并在 MySQL 中创建文档记录
- 文档解析 — DeepDoc 模块对文档执行 OCR、版面分析和结构识别
- 分块处理 — 根据用户选择的分块策略模板,将解析后的文档切分为语义完整的文本块
- 向量化索引 — 对每个文本块生成向量嵌入(embedding),连同全文内容一起写入 Elasticsearch/Infinity
问答检索流程
- 用户提问 — 用户在对话界面输入问题,前端将请求发送到 API 服务
- 查询理解 — API 服务对用户问题进行向量化和关键词提取
- 混合检索 — 同时执行向量相似度搜索和全文关键词匹配,从 Elasticsearch/Infinity 召回相关分块
- 重排序 — 对召回结果进行相关性重排序,筛选最优分块
- LLM 生成 — 将筛选后的上下文连同用户问题发送给 LLM,生成带引用标注的回答
- 结果返回 — API 服务将答案和引用信息返回前端,Web UI 渲染展示给用户