1. RAGFlow 架构概览
RAGFlow 是 Infiniflow 开源的新一代 RAG(检索增强生成)引擎,其核心设计理念是通过深度文档理解能力提升传统 RAG 系统的效果。作为一个完整的 AI 应用框架,它不仅仅实现了基础的 RAG 功能,更在文档解析、工作流编排、多模型集成等方面进行了深度优化。
1.1 核心设计特点
RAGFlow 的架构设计体现了几个关键考量:
-
性能与灵活性的平衡:通过 Go + Python 双语言架构,既保证了 API 服务的高并发性能,又充分利用了 Python 在 AI 领域的丰富生态。
-
文档理解深度:不同于简单的文本切分,RAGFlow 的 DeepDoc 系统能够识别文档中的复杂结构(如表格、图表、多栏布局),并保持这些语义信息在后续处理流程中不丢失。
-
可编排的工作流:Canvas 图执行引擎允许用户通过 JSON DSL 定义复杂的工作流程,将 LLM、检索、业务逻辑等组件像搭积木一样组合起来。
-
混合检索策略:除了传统的向量检索,还集成了全文检索、知识图谱检索等多种方式,并能智能地组合这些检索结果。
1.2 技术栈全景
RAGFlow 的技术选型反映了现代 AI 应用开发的典型特征:
- 前端:React + Vite + TailwindCSS 的现代前端组合,提供响应式管理界面
- 后端:Gin 框架支撑的 Go 服务处理 API 路由和轻量业务逻辑
- AI 计算:Python 实现的文档解析、Embedding 生成和 LLM 交互
- 数据层:
- MySQL:存储结构化业务数据
- MongoDB:存储文档类数据和对话历史
- Infinity:专为 RAG 优化的向量数据库
- Redis:缓存和任务队列
- 基础设施:Docker Compose 实现一键部署,支持扩展到 Kubernetes
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 双语言架构深度解析
2.1 架构设计决策
在 RAGFlow 的设计中,最引人注目的就是其 Go + Python 的双服务架构。这种设计不是简单的微服务拆分,而是基于语言特性进行的深度分工:
mermaid复制graph TD
A[React 前端] -->|HTTP| B[Go 服务]
A -->|HTTP| C[Python 服务]
B -->|共享存储| D[(Redis+MySQL)]
C -->|共享存储| D
B -->|共享存储| E[(MongoDB+S3)]
C -->|共享存储| E
关键设计考量:
-
Go 服务的定位:
- 处理高并发的 HTTP 请求
- 实现认证、授权等安全层
- 管理租户、用户等业务实体
- 轻量级的查询和操作
-
Python 服务的定位:
- CPU 密集型任务(文档解析、Embedding 计算)
- 需要丰富 AI 生态支持的功能(LLM 交互、知识图谱构建)
- 复杂业务流程执行
2.2 通信机制
两个服务之间不直接进行网络调用,而是通过共享数据层实现间接通信:
-
数据交换方式:
- Go 服务将需要 Python 处理的任务写入 MongoDB 或 Redis
- Python 服务定期轮询这些存储,获取新任务
- 处理结果写回存储,Go 服务再从存储中读取
-
优势:
- 解耦:任一服务崩溃不影响另一个的基本功能
- 弹性:可以根据负载单独扩展 Python 或 Go 服务
- 简单:避免了复杂的服务间通信协议
-
挑战与解决方案:
- 数据一致性:通过 Redis 分布式锁保证
- 状态同步:使用 Redis Pub/Sub 实现进度通知
- 性能:关键路径使用 C++ 加速(通过 SWIG 绑定)
2.3 目录结构解析
RAGFlow 的代码组织体现了清晰的层次划分:
code复制ragflow/
├── cmd/ # Go 服务入口
├── inte
