导航菜单

  • 1.概述
  • 2.功能与能力
  • 3.系统架构
  • 4.部署与配置
  • 5.Docker 部署
  • 6.环境配置
  • 7.外部服务设置
  • 8.AI模型与LLM配置
  • 9.核心系统
  • 10.文档处理流水线
  • 11.RAG引擎与搜索
  • 12.知识库管理系统
  • 13.对话与对话系统
  • 14.翻译与跨语言支持
  • 15.用户界面
  • 16.主应用界面
  • 17.管理仪表盘
  • 18.文档编写界面
  • 19.知识库内容管理
  • 20.国际化与本地化
  • 21.管理功能
  • 22.用户与团队管理
  • 23.文件和存储管理
  • 24.知识库管理
  • 25.系统监控与健康状态
  • 26.API 参考
  • 27.知识库API
  • 28.对话与聊天API
  • 29.文件管理API
  • 30.管理与Admin API
  • 31.开发指南
  • 32.前端开发
  • 33.后端服务架构
  • 34.数据库模式与模型
  • 35.基础设施与文档
  • 36.快速入门指南
  • 1. 架构概述
    • 1.1 双系统架构设计
  • 2. 核心服务组件
    • 2.1 应用服务层
      • 应用服务组件详情
    • 2.2 文档处理流水线
  • 3. 基础设施层
    • 3.1 数据存储架构
      • 基础设施组件详情
    • 3.2 存储组件说明
  • 4. 部署架构
    • 4.1 容器部署拓扑
    • 4.2 CPU 部署
    • 4.3 GPU 部署
    • 4.4 网络架构
  • 5. 配置管理
    • 5.1 关键配置文件
    • 5.2 环境变量
    • 5.3 配置管理最佳实践
  • 6. 架构设计原则
    • 6.1 分层架构
    • 6.2 微服务设计
    • 6.3 可扩展性
    • 6.4 安全性
  • 7. 总结

# Ragflow-Plus 系统架构教程

本文档详细描述了 Ragflow-Plus 的高层系统架构。Ragflow-Plus 是基于原始 Ragflow 框架构建的增强型 RAG(检索增强生成)系统。本文档涵盖双系统架构、核心服务组件、基础设施依赖和部署拓扑。

有关具体部署细节,请参阅 部署与配置。有关各个子系统的详细实现,请参阅 核心系统。

1. 架构概述 #

Ragflow-Plus 实现了双系统架构,将面向用户的功能与管理操作完全分离。系统通过 MinerU 集成增强了文档处理能力,并通过专用的管理界面提供全面的管理工具。

1.1 双系统架构设计 #

Ragflow-Plus 采用双系统架构,将系统分为两个独立但协作的部分:

┌─────────────────────────────────────────┐
│      用户面向系统 (User-Facing System)    │
│  ┌──────────────────────────────────┐  │
│  │  用户前端 (web/src/pages/)       │  │
│  │  - 聊天界面 (chat/)              │  │
│  │  - 知识库管理 (add-knowledge/)   │  │
│  │  - 文档编写 (write/)             │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      管理系统 (Management System)        │
│  ┌──────────────────────────────────┐  │
│  │  管理前端 (management/web/)       │  │
│  │  管理后端 (management/server/)    │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      基础设施层 (Infrastructure Layer)   │
│  - MySQL 数据库                         │
│  - Elasticsearch 集群                   │
│  - MinIO 对象存储                       │
│  - Redis 缓存                          │
└─────────────────────────────────────────┘

双系统架构的优势:

  1. 职责分离:用户功能与管理功能完全解耦,提高系统安全性
  2. 独立扩展:两个系统可以独立扩展,互不影响
  3. 权限控制:管理功能与用户功能分离,便于权限管理
  4. 维护便利:系统结构清晰,便于维护和升级

2. 核心服务组件 #

系统由三个主要服务层组成,分别处理 RAG 流程和系统管理的不同方面。

2.1 应用服务层 #

应用服务层包含前端应用和后端 API 服务:

┌─────────────────────────────────────────┐
│        前端应用 (Frontend Applications)   │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ 用户前端     │  │ 管理前端     │    │
│  │ web/src/     │  │ management/ │    │
│  │ pages/       │  │ web/src/    │    │
│  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│        后端服务 (Backend Services)       │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ Ragflow API  │  │ 管理 API     │    │
│  │ api/         │  │ management/ │    │
│  │ ragflow_     │  │ server/      │    │
│  │ server       │  │ app.py       │    │
│  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      处理服务 (Processing Services)      │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ MinerU 集成  │  │ 翻译服务     │    │
│  │ 增强文档解析  │  │ 跨语言支持   │    │
│  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────┘

应用服务组件详情 #

服务 容器名称 端口 用途
用户前端 ragflowplus-server 9380, 80, 443 主用户界面(聊天、知识管理)
管理前端 ragflowplus-management-frontend 8888 管理界面
管理后台 ragflowplus-management-backend 5000 管理 API 及 MinerU 集成

2.2 文档处理流水线 #

作为 Ragflow-Plus 的核心能力之一,增强型文档处理流水线支持以下完整流程:

┌─────────────────────────────────────────┐
│          输入层 (Input Layer)            │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ 文件上传     │  │ 网页爬取     │    │
│  │ PDF, Word,  │  │ Web Crawling │    │
│  │ Excel 等     │  │              │    │
│  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│        处理层 (Processing Layer)         │
│  ┌──────────────────────────────────┐  │
│  │ MinerU 解析器                    │  │
│  │ - OCR 引擎                       │  │
│  │ - 版面分析                        │  │
│  │ - 结构检测                        │  │
│  │ (magic-pdf.json 配置)            │  │
│  └──────────────────────────────────┘  │
│              ↓                          │
│  ┌──────────────────────────────────┐  │
│  │ 文档分块引擎                      │  │
│  │ - 多种分块策略                    │  │
│  └──────────────────────────────────┘  │
│              ↓                          │
│  ┌──────────────────────────────────┐  │
│  │ 嵌入向量生成                      │  │
│  │ - 向量转换                        │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│          存储层 (Storage Layer)          │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ MinIO 存储   │  │ ES 索引      │    │
│  │ 二进制文件   │  │ 可搜索块     │    │
│  │ 和图片       │  │              │    │
│  └──────────────┘  └──────────────┘    │
│  ┌──────────────────────────────────┐  │
│  │ MySQL 元数据                      │  │
│  │ 文档关系                          │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘

文档处理流程详解:

  1. 文件上传/网页爬取:支持多种文件格式(PDF、Word、Excel 等)或网页内容
  2. MinerU 解析:使用 MinerU 解析器进行 OCR 和版面分析,配置文件为 magic-pdf.json
  3. 文档分块:根据文档类型选择合适的分块策略
  4. 嵌入向量生成:将文本块转换为向量表示
  5. 存储索引:
    • 原始文件和图片存储到 MinIO
    • 向量和文本块索引到 Elasticsearch
    • 文档元数据和关系存储到 MySQL

3. 基础设施层 #

基础设施层提供持久化存储、搜索能力和缓存服务,同时支持用户面向系统和管理系统。

3.1 数据存储架构 #

系统采用多层次的存储架构:

┌─────────────────────────────────────────┐
│      持久化存储 (Persistent Storage)     │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ MySQL 数据库 │  │ MinIO 存储   │    │
│  │ rag_flow     │  │ 对象存储     │    │
│  │ 用户数据     │  │ 二进制文件   │    │
│  │ KB 元数据    │  │ 图片         │    │
│  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      搜索与索引 (Search & Indexing)      │
│  ┌──────────────────────────────────┐  │
│  │ Elasticsearch 集群               │  │
│  │ es01 节点                        │  │
│  │ 向量和文本搜索                    │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      缓存与队列 (Caching & Queuing)      │
│  ┌──────────────────────────────────┐  │
│  │ Redis 缓存                       │  │
│  │ 会话数据、临时存储                │  │
│  │ 队列管理                         │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│        配置 (Configuration)              │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ .env 配置    │  │ Nginx 配置   │    │
│  │ 服务端点     │  │ 反向代理     │    │
│  │ 凭证         │  │ 负载均衡     │    │
│  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────┘

基础设施组件详情 #

组件 服务名称 端口 配置
MySQL mysql 3306 数据库:rag_flow,密码:infini_rag_flow
Elasticsearch es01 9200 版本:8.11.3,内存限制:8GB
MinIO minio 9000 用户:rag_flow,控制台:9001
Redis redis 6379 密码:infini_rag_flow

3.2 存储组件说明 #

MySQL 数据库:

  • 存储用户数据、团队信息、知识库元数据
  • 维护文档之间的关系和引用
  • 使用 rag_flow 数据库模式

Elasticsearch 集群:

  • 提供向量相似性搜索和全文搜索能力
  • 存储文档块和向量索引
  • 支持混合搜索和重新排序

MinIO 对象存储:

  • 存储原始文档文件(PDF、Word、Excel 等)
  • 存储提取的图片和图像
  • 基于桶(Bucket)的组织方式

Redis 缓存:

  • 存储会话数据
  • 提供临时存储和队列管理
  • 提升系统响应速度

4. 部署架构 #

Ragflow-Plus 支持通过 Docker Compose 编排进行 CPU 和 GPU 两种部署配置。

4.1 容器部署拓扑 #

系统采用容器化部署,所有服务运行在 Docker 容器中:

┌─────────────────────────────────────────┐
│           主机机器 (Host Machine)         │
│                                          │
│  ┌──────────────────────────────────┐  │
│  │    应用容器 (Application)         │  │
│  │  ┌──────────────┐               │  │
│  │  │ ragflowplus- │               │  │
│  │  │ server       │               │  │
│  │  │ RAGFLOW_     │               │  │
│  │  │ IMAGE        │               │  │
│  │  └──────────────┘               │  │
│  │  ┌──────────────────────────┐  │  │
│  │  │ ragflowplus-management-  │  │  │
│  │  │ backend                  │  │  │
│  │  │ MANAGEMENT_SERVER_IMAGE  │  │  │
│  │  └──────────────────────────┘  │  │
│  │  ┌──────────────────────────┐  │  │
│  │  │ ragflowplus-management-  │  │  │
│  │  │ frontend                 │  │  │
│  │  │ MANAGEMENT_WEB_IMAGE     │  │  │
│  │  └──────────────────────────┘  │  │
│  └──────────────────────────────────┘  │
│                                          │
│  ┌──────────────────────────────────┐  │
│  │  基础设施容器 (Infrastructure)     │  │
│  │  ┌──────────────┐               │  │
│  │  │ ragflow-mysql│               │  │
│  │  │ mysql:8.0.39 │               │  │
│  │  └──────────────┘               │  │
│  │  ┌──────────────┐               │  │
│  │  │ ragflow-es-01│               │  │
│  │  │ elasticsearch│               │  │
│  │  │ :8.11.3      │               │  │
│  │  └──────────────┘               │  │
│  │  ┌──────────────┐               │  │
│  │  │ ragflow-minio│               │  │
│  │  │ minio:RELEASE│               │  │
│  │  └──────────────┘               │  │
│  │  ┌──────────────┐               │  │
│  │  │ ragflow-redis│               │  │
│  │  │ valkey/valkey│               │  │
│  │  │ :8           │               │  │
│  │  └──────────────┘               │  │
│  └──────────────────────────────────┘  │
│                                          │
│  ┌──────────────────────────────────┐  │
│  │    卷挂载 (Volume Mounts)         │  │
│  │  - ./ragflow-logs                │  │
│  │  - ./ragflow-plus-logs           │  │
│  │  - ./nginx/                      │  │
│  │  - ./magic-pdf.json              │  │
│  └──────────────────────────────────┘  │
│                                          │
│  ┌──────────────────────────────────┐  │
│  │    GPU 资源 (GPU Resources)        │  │
│  │  ┌──────────────────────────┐    │  │
│  │  │ NVIDIA GPU               │    │  │
│  │  │ device_ids: ['0']        │    │  │
│  │  │ MinerU 加速              │    │  │
│  │  └──────────────────────────┘    │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘

4.2 CPU 部署 #

使用 docker/docker-compose.yml 进行标准资源分配的 CPU 部署。

特点:

  • 适合没有 GPU 的环境
  • 使用 CPU 进行文档解析和处理
  • 资源需求较低,易于部署

4.3 GPU 部署 #

使用 docker/docker-compose_gpu.yml 进行 GPU 资源预留的部署,用于 MinerU 加速。

GPU 配置示例:

deploy:
  resources:
    reservations:
      devices:
        - driver: nvidia
          capabilities: [gpu]
          device_ids: ["0"]

特点:

  • 利用 GPU 加速文档解析
  • 提升 MinerU 处理性能
  • 适合大规模文档处理场景

4.4 网络架构 #

所有服务通过 ragflow Docker 网络进行通信,通过容器名称进行服务发现:

┌─────────────────────────────────────────┐
│        外部访问 (External Access)        │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ 用户         │  │ 管理员       │    │
│  │ :80, :443    │  │ :8888        │    │
│  └──────────────┘  └──────────────┘    │
│  ┌──────────────────────────────────┐  │
│  │ API 客户端                        │  │
│  │ :5000                             │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│      反向代理层 (Reverse Proxy Layer)    │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ Nginx (主)   │  │ Nginx (管理) │    │
│  │ ragflow.conf │  │ management_ │    │
│  │              │  │ nginx.conf   │    │
│  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────┘
              ↓
┌─────────────────────────────────────────┐
│        应用层 (Application Layer)        │
│  ┌──────────────┐  ┌──────────────┐    │
│  │ ragflowplus-│  │ management-  │    │
│  │ server      │  │ frontend     │    │
│  │ :9380       │  │ :80          │    │
│  └──────────────┘  └──────────────┘    │
│  ┌──────────────────────────────────┐  │
│  │ management-backend                │  │
│  │ :5000                             │  │
│  └──────────────────────────────────┘  │
└─────────────────────────────────────────┘

网络配置说明:

  • 用户访问:通过端口 80 或 443 访问主应用,由 Nginx 主配置路由到 ragflowplus-server
  • 管理员访问:通过端口 8888 访问管理界面,由 Nginx 管理配置路由到 management-frontend
  • API 访问:通过端口 5000 直接访问管理后端 API
  • 内部通信:所有容器通过 Docker 网络 ragflow 进行内部通信

5. 配置管理 #

系统使用基于环境的配置,通过 Docker Compose 变量替换实现。

5.1 关键配置文件 #

文件 用途 关键变量
docker/.env 主配置 RAGFLOW_IMAGE、数据库凭证、服务端口
docker/nginx/ragflow.conf 主应用代理 前端路由、SSL 配置
docker/nginx/management_nginx.conf 管理代理 API 路由到后端
magic-pdf.json / magic-pdf-gpu.json MinerU 配置 GPU/CPU 解析设置

5.2 环境变量 #

系统主要环境变量包括:

# 核心镜像
RAGFLOW_IMAGE=zstar1003/ragflowplus:v0.5.0
RAGFLOWPLUS_MANAGEMENT_WEB_IMAGE=zstar1003/ragflowplus-management-web:v0.5.0
RAGFLOWPLUS_MANAGEMENT_SERVER_IMAGE=zstar1003/ragflowplus-management-server:v0.5.0

# 管理系统
MANAGEMENT_ADMIN_USERNAME=admin
MANAGEMENT_ADMIN_PASSWORD=12345678
MANAGEMENT_JWT_SECRET=20250409

# 文件上传限制
MAX_CONTENT_LENGTH=10737418240  # 10GB

5.3 配置管理最佳实践 #

  1. 环境变量管理:使用 .env 文件管理敏感信息,不要提交到版本控制
  2. 配置文件分离:将不同环境的配置分离,便于管理
  3. 配置验证:启动前验证关键配置项是否正确
  4. 配置文档化:记录所有配置项的含义和默认值

6. 架构设计原则 #

Ragflow-Plus 的架构设计遵循以下原则:

6.1 分层架构 #

系统采用清晰的分层架构:

  • 表示层:前端应用(用户前端和管理前端)
  • 应用层:后端 API 服务(Ragflow API 和管理 API)
  • 业务层:文档处理、NLP 处理、RAG 引擎
  • 数据层:存储服务(MySQL、Elasticsearch、MinIO、Redis)

6.2 微服务设计 #

系统采用微服务架构:

  • 每个服务独立部署和扩展
  • 服务间通过 API 通信
  • 故障隔离,单个服务故障不影响整体系统

6.3 可扩展性 #

系统设计支持水平扩展:

  • 无状态服务设计,易于横向扩展
  • 存储层支持集群部署
  • 负载均衡支持多实例部署

6.4 安全性 #

系统注重安全性设计:

  • 用户系统与管理系统分离
  • 权限控制和访问控制
  • 敏感信息加密存储

7. 总结 #

Ragflow-Plus 通过双系统架构、分层服务设计和容器化部署,构建了一个现代化、可扩展、易维护的 RAG 系统。系统架构的主要特点包括:

  1. 双系统分离:用户功能与管理功能完全解耦,提高安全性和可维护性
  2. 分层设计:清晰的分层架构,便于开发和维护
  3. 容器化部署:支持 CPU 和 GPU 两种部署方式,灵活适应不同环境
  4. 可扩展性:微服务设计支持独立扩展,满足不同规模需求
  5. 增强处理:MinerU 集成提供强大的文档处理能力

通过这种架构设计,Ragflow-Plus 能够满足企业级知识管理和文档处理的各种需求,为中文应用场景提供了完整的解决方案。

访问验证

请输入访问令牌

Token不正确,请重新输入