Ragflow-Plus 系统概述 #
目的与范围 #
Ragflow-Plus 是基于 Ragflow 二次开发增强的检索增强生成(RAG)系统。本文档全面介绍了该系统的架构、组件和功能。该系统专为需要集中式知识库管理和增强文档处理能力的企业及机构应用场景设计。
有关部署说明,请参阅 Docker 部署。有关 API 文档,请参阅 API 参考。有关开发指南,请参阅 开发指南。
Ragflow-Plus 通过四大核心改进应对实际应用挑战:
- 管理模式:集中管理用户、团队和知识库的管理后台系统
- 权限回收:简化的前端界面,具有受限的用户权限
- 增强解析:MinerU 集成取代 DeepDoc,实现支持图像处理的增强版文档处理
- 图文输出:模型响应包含来自参考文本片段的相关图像
一句话总结:Ragflow-Plus 是 Ragflow 在中文应用场景下的"行业特解"。
系统架构概述 #
Ragflow-Plus 采用现代企业级的双系统架构,分为普通用户界面与管理后台:
- 用户界面系统:提供知识检索、文档 AI、日常协作入口(React/TypeScript)
- 管理系统:独立的后台管理前端及 API 层,负责用户、权限、知识库、LLM 配置的集中管理
- 后端服务:RAG 对话引擎 + 文档处理/NLP 管线,提供 RESTful API
- NLP 子系统:集成全文检索、向量检索及定制 NLP 任务处理
以下图表展示了 Ragflow-Plus 的高层架构,采用双系统设计,包含面向用户和管理员的两大组件:
┌─────────────────────────────────────────┐
│ 用户层 (User Layer) │
│ - 用户前端 (web/src/pages/) │
│ - 聊天界面 (chat/) │
│ - 文档编写 (write/) │
│ - 知识库管理 (add-knowledge/) │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ 管理层 (Management Layer) │
│ - 管理前端 (management/web/) │
│ - 管理后端 (management/server/) │
│ - 管理 API (app.py) │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ 核心服务层 (Core Services) │
│ - Ragflow API (api/) │
│ - 对话服务 (dialog_app.py) │
│ - 知识库服务 (sdk_app.py) │
│ - 文件服务 (file_app.py) │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ 数据处理层 (Data Processing) │
│ - MinerU 解析器 (rag/nlp/) │
│ - 分块引擎 (rag/nlp/) │
│ - 嵌入服务 (rag/llm/) │
│ - 翻译服务 (translation_app.py) │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ 存储层 (Storage Layer) │
│ - MySQL 数据库 (ragflow-mysql) │
│ - Elasticsearch (ragflow-es-01) │
│ - MinIO 存储 (ragflow-minio) │
│ - Redis 缓存 (ragflow-redis) │
└─────────────────────────────────────────┘核心组件与代码实体 #
该图表将系统概念与具体代码实体及其关系联系起来:
系统核心组件包括:
- 对话服务:处理用户查询和生成响应(
api/apps/dialog_app.py) - SDK 接口:提供外部系统集成能力(
api/apps/sdk_app.py) - 数据模型:定义系统数据结构和关系(
rag/db/models.py) - NLP 处理:自然语言处理模块(
rag/nlp/) - LLM 集成:大语言模型接口和嵌入服务(
rag/llm/、rag/llm/embedding/)
前端组件包括:
- ChatComponent:聊天界面组件(
web/src/pages/chat/) - WriteComponent:文档编写组件(
web/src/pages/write/) - AddKnowledgeComponent:知识库管理组件(
web/src/pages/add-knowledge/) - ManagementApp:管理后台应用(
management/web/src/)
增强型文档处理流水线 #
Ragflow-Plus 实现了集成 MinerU 的增强型文档处理流程:
文档上传 → 格式识别 → MinerU 解析 → 文本提取 → 图像提取
↓
文本分块 → 向量化 → 存储索引
↓
图文关联 → 知识库构建该流程支持以下功能:
- 多格式支持:PDF、DOC、DOCX、PPT、XLS、TXT、MD、JPG、PNG 等格式
- OCR 增强:MinerU 提供更优的 OCR 和版面分析能力
- 图文关联:维护文本块与相关图像之间的关系
处理流程详解 #
- 文档输入:支持多种文件格式上传(
management/server/app.py) - MinerU 处理:使用 MinerU 解析器进行 OCR 和版面分析(
rag/nlp/)- OCR 引擎:文本和图像提取
- 版面分析:结构检测
- 分块策略:通过分块引擎处理(
rag/nlp/chunking/)- 手动分块
- 自动分块
- 问答分块
- 向量生成:使用 BGE-M3 模型生成嵌入向量(
rag/llm/embedding/)- 向量生成
- 图像嵌入
- 索引存储:将处理结果存储到 Elasticsearch(
rag/app/retrieval.py) - 文件存储:原始文档和图片存储到 MinIO
- 元数据管理:文档元数据存储到 MySQL(
rag/db/services/)
管理系统架构 #
管理后台通过独立的 Web 应用程序提供集中式系统管理:
┌─────────────────────────────────────┐
│ 管理前端 (Port 8888) │
│ ┌──────────┐ ┌──────────┐ │
│ │ 用户管理 │ │ 知识库 │ │
│ │ 视图 │ │ 管理视图 │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────┘
↕
┌─────────────────────────────────────┐
│ 管理后台 API (Port 5000) │
│ ┌──────────┐ ┌──────────┐ │
│ │ 用户路由 │ │ 知识库 │ │
│ │ │ │ 路由 │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────┘管理功能模块 #
- 用户管理:集中式用户创建、团队分配和权限控制(
management/web/src/views/user/) - 团队管理:团队创建、成员管理和权限分配(
management/web/src/views/team/) - 文件管理:文档与图片的上传、组织及生命周期管理(
management/web/src/views/file/) - 知识库管理:批量文件处理、配置解析与内容监管(
management/web/src/views/kb/) - 配置管理:系统配置和模型参数管理(
management/web/src/views/config/)
API 接口 #
- 用户 API:
management/server/routes/user.py - 团队 API:
management/server/routes/team.py - 文件 API:
management/server/routes/file.py - 知识库 API:
management/server/routes/kb.py - 配置 API:
management/server/routes/config.py
部署架构 #
Ragflow-Plus 采用 Docker Compose 的容器化部署方式,各服务组件如下:
| 服务 | 容器名称 | 端口 | 目的 |
|---|---|---|---|
| 主应用程序 | ragflowplus-server | 9380, 80, 443 | 核心 RAG 系统 |
| 管理前端 | ragflowplus-management-frontend | 8888 | 管理界面 |
| 管理后台 | ragflowplus-management-backend | 5000 | 管理员 API |
| MySQL 数据库 | ragflow-mysql | 3306 | 元数据存储 |
| Elasticsearch | ragflow-es-01 | 9200 | 向量搜索 |
| MinIO 存储 | ragflow-minio | 9000 | 文件存储 |
| Redis 缓存 | ragflow-redis | 6379 | 缓存层 |
部署支持 CPU 和 GPU 两种配置,可根据实际需求选择。
外部访问 #
- 用户访问:通过端口 80 或 443 访问主应用
- 管理员访问:通过端口 8888 访问管理界面
- API 客户端:通过端口 5000 访问管理 API
核心能力 #
增强文档处理 #
- MinerU 集成:替换 DeepDoc,具备更优的 OCR 和版面分析能力
- 多格式支持:PDF、DOC、DOCX、PPT、XLS、TXT、MD、JPG、PNG 格式
- 图文关联:维护文本块与相关图像之间的关系
行政管理 #
- 用户管理:集中式用户创建、团队分配和权限控制
- 知识库管理:批量文件处理、配置解析与内容监管
- 文件管理:文档与图片的上传、组织及生命周期管理
RAG 能力 #
- 混合搜索:结合向量相似性与全文搜索,并加入重新排序
- 多语言支持:跨语言搜索与翻译服务
- 写作辅助:基于模板的文档生成与知识库集成
技术特性 #
- Docker 部署:支持 CPU 和 GPU 两种配置
- API 兼容性:保持 Ragflow API 兼容性并增强功能
- 可扩展架构:具备独立扩展能力的微服务设计
总结 #
Ragflow-Plus 以现代化的架构、高度集成的基础设施和敏捷部署方式,成为企业知识管理、文档智能处理与多团队协同的理想平台。双系统架构既保障了丰富的业务功能,也兼顾了系统安全和运维效率。
通过四大核心改进——管理模式、权限回收、增强解析和图文输出,Ragflow-Plus 在中文应用场景下提供了更加贴合实际需求的解决方案,是 Ragflow 的"行业特解"。