目录
  1. 1. 目录
  2. 2. 项目速览
  3. 3. 功能概述
    1. 3.1. 深度文档理解 — deepdoc 引擎
    2. 3.2. 模板化智能分块
    3. 3.3. 多路召回与融合重排序
    4. 3.4. Agent 与 MCP 支持
    5. 3.5. 异构数据源集成
  4. 4. 适用场景
    1. 4.1. 企业文档智能问答
    2. 4.2. 法律与金融合规文档处理
    3. 4.3. 学术研究与论文检索
    4. 4.4. 多语言客服知识库
    5. 4.5. 企业级 RAG + Agent 工作流
  5. 5. 快速上手
    1. 5.1. 环境要求
    2. 5.2. 安装
    3. 5.3. LLM 配置
    4. 5.4. 通过 Web UI 构建 RAG 流程
    5. 5.5. Python SDK
  6. 6. 源码架构
  7. 7. 实操 Demo
  8. 8. 同类对比
  9. 9. 参考资源
RAGFlow — 开源 RAG 引擎与 Agent 平台

GitHub: infiniflow/ragflow
Stars: 82,800+ | Language: Python (41.0%), Go (26.2%), TypeScript (25.3%) | License: Apache 2.0
官网: ragflow.io | 最新版本: v0.26.0 (2026-06-11)

目录

  1. 项目速览
  2. 功能概述
  3. 适用场景
  4. 快速上手
  5. 源码架构
  6. 实操 Demo
  7. 同类对比
  8. 参考资源

项目速览

RAGFlow 由 infiniflow 团队开发,是当前 GitHub 上 Star 数最高的开源 RAG 引擎,截至 2026 年 6 月已累计超过 82,800 颗 Star,共发布 48 个版本。与纯向量数据库(如 Chroma、Milvus)不同,RAGFlow 定位为一站式 RAG 平台:从文档解析、智能分块、向量化到检索增强生成,提供完整的端到端工作流。

RAGFlow 最核心的差异化能力在于深度文档理解(Deep Document Understanding)。传统 RAG 系统对 PDF 中的表格、图片、多栏排版等复杂结构处理能力薄弱,而 RAGFlow 的 deepdoc 模块专门针对此类非结构化文档进行了深度优化。它能识别并提取 PDF 中的表格数据、图片中的文字(OCR)、复杂排版中的段落关系,显著提升了从”脏文档”到结构化知识的转化质量。

v0.26.0 版本进一步引入了 Agentic 工作流与 MCP(Model Context Protocol)支持,RAGFlow 正从纯 RAG 引擎向”RAG + Agent”一体化平台演进。

功能概述

深度文档理解 — deepdoc 引擎

RAGFlow 的 deepdoc 是其技术护城河。它针对不同文档类型实现了专用的解析管道:

  • PDF:支持多栏布局识别、表格提取、图片内文字 OCR、页眉页脚去除
  • Word/PPT/Excel:基于文件格式规范的结构化解析,保留层级关系
  • 图片:OCR + Layout 分析,识别图片中的文字区域和结构
  • 扫描件:结合图像预处理(去噪、纠偏)和 OCR 提高识别准确率
  • 网页:HTML 清洗 + 正文提取,去除广告和导航等噪音

模板化智能分块

RAGFlow 提供基于模板(Template)的可解释分块策略,每种文档类型都有专用的分块方法:

分块方法 适用文档 说明
naive 通用文本 基于 token 数 + 分隔符的通用分块
manual 所有类型 手动指定分块边界
qa FAQ 文档 基于 Q&A 对的分块
table Excel/表格 PDF 按表格行/列结构分块
paper 学术论文 识别 Abstract/Section/Reference 结构
book 书籍 按章节层级分块
laws 法律文档 按条款编号分块
presentation PPT 按幻灯片分块
picture 图片 基于视觉区域的分块
knowledge_graph 知识图谱 实体-关系抽取式分块
email 邮件 按邮件线程分块

每种分块方法都有独立的 parser_config 配置,如 naive 方法支持 RAPTOR(递归抽象式摘要树)增强长文档理解。

多路召回与融合重排序

RAGFlow 的检索管道支持多路召回(Multiple Recall)和融合重排序(Fused Re-ranking):

  1. 多路召回:同时从向量语义检索、关键词 BM25 检索、知识图谱检索等多条路径获取候选文档块
  2. 融合排序:通过加权融合或学习排序(Learning to Rank)对多路结果进行综合排序
  3. 可溯源引用:每个生成的答案都附带文档引用链接,支持人工干预时的可视化溯源

Agent 与 MCP 支持

v0.26.x 起,RAGFlow 引入了 Agentic 工作流支持。用户可通过 Web UI 构建多步骤 Agent 流程,Agent 可以:

  • 执行 RAG 检索
  • 调用外部工具(通过 MCP 协议)
  • 进行条件判断和循环
  • 与用户进行多轮对话

MCP 支持意味着 RAGFlow Agent 可以连接任何实现了 MCP 协议的工具服务器,极大地扩展了其能力边界。

异构数据源集成

RAGFlow 支持从多种数据源直接同步文档,包括但不限于:S3 对象存储、本地文件系统、Web 网页爬取、数据库连接器、SaaS 应用 API(如 Notion、Confluence)等。数据源的同步支持定时调度和增量更新。

适用场景

企业文档智能问答

对于积累了大量 PDF 合同、规章制度、产品手册和技术文档的企业,RAGFlow 的 deepdoc 引擎能够高质量地解析这些”脏文档”。相比其他 RAG 方案在复杂文档上的高失败率,RAGFlow 在表格、图片文字和多栏排版方面的解析能力是决定性的优势。

法律与金融合规文档处理

法律条款、合同文本、招股说明书等结构化程度高但格式复杂的文档,RAGFlow 的 lawsbook 分块方法能够按条款/章节准确切分,保证检索结果的法律完整性。可溯源引用功能对合规审计至关重要。

学术研究与论文检索

学术 PDF 的双栏排版、图表混排、参考文献格式让常规 PDF 解析器束手无策。RAGFlow 的 paper 分块方法专为学术文档优化,能够识别 Abstract、Introduction、Methodology、Conclusion 等结构,RAPTOR 摘要树可对长论文进行分层总结。

多语言客服知识库

RAGFlow 支持中文、英文和更多语言的文档处理,其分块策略对中文分词特征(如无空格分隔)做了专门处理。BGE 系列中文 Embedding 模型的内置集成使得中文语义检索的精度得到了保证。

企业级 RAG + Agent 工作流

对于需要将检索与自动化决策相结合的复杂业务(如自动合同审查、智能招投标分析),RAGFlow 的 Agentic 工作流可以在 RAG 检索的基础上加入规则引擎、外部 API 调用和人工审批节点,构建完整的业务自动化流程。

快速上手

环境要求

  • Docker 与 Docker Compose(推荐)
  • CPU >= 4 核,RAM >= 16GB(deepdoc OCR 需要较多内存)
  • (可选)NVIDIA GPU(加速 OCR 和 Embedding)

安装

git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker

# 使用 CPU 版本
docker compose -f docker-compose.yml up -d

# 使用 GPU 版本(需 NVIDIA Container Toolkit)
docker compose -f docker-compose-gpu.yml up -d

启动后访问 http://localhost:80,完成初始配置。

LLM 配置

RAGFlow 启动后需要配置 LLM 工厂。编辑 docker/service_conf.yaml(或通过 Web UI 设置):

user_default_llm:
factory: "OpenAI" # 或 "DeepSeek", "Gemini", "Qwen" 等
api_key: "<YOUR_API_KEY>"

通过 Web UI 构建 RAG 流程

  1. 创建知识库:在 Web UI 中选择 “Knowledge Base” -> “Create”,指定名称和 Embedding 模型(推荐 BAAI/bge-large-zh-v1.5
  2. 上传文档:拖拽或选择文件上传,支持 PDF/Word/Excel/PPT/图片/Markdown 等格式
  3. 配置解析:为文档选择合适的分块方法(如 PDF 选择 book,Excel 选择 table
  4. 开始解析:点击 “Start Parsing”,等待 deepdoc 引擎处理完成
  5. 创建 Chat 助手:在 “Chat” 模块中创建助手,关联知识库,配置 Prompt 模板和 LLM 模型
  6. 开始问答:在 Chat 界面输入问题,获得带引用来源的答案

Python SDK

pip install ragflow-sdk
from ragflow_sdk import RAGFlow

# 初始化客户端
rag = RAGFlow(
api_key="<YOUR_API_KEY>",
base_url="http://localhost:9380"
)

# 创建知识库
dataset = rag.create_dataset(
name="my_knowledge_base",
embedding_model="BAAI/bge-large-zh-v1.5",
chunk_method="naive",
parser_config={
"chunk_token_num": 512,
"delimiter": "\n!?;。;!?",
"layout_recognize": True
}
)

# 上传并解析文档
dataset.upload_documents([
{"display_name": "report.pdf", "blob": open("report.pdf", "rb").read()}
])
docs = dataset.list_documents()
dataset.async_parse_documents(document_ids=[doc.id for doc in docs])

# 创建 Chat 助手并提问
chat = rag.create_chat(
name="document_assistant",
dataset_ids=[dataset.id]
)
session = chat.create_session()

# 流式问答
for chunk in session.ask("这份报告的核心结论是什么?", stream=True):
print(chunk.content, end="", flush=True)

源码架构

RAGFlow 采用 Python + Go + TypeScript 混合架构:

ragflow/
├── api/ # Python 后端 API(Flask)
│ ├── apps/ # API 应用模块
│ │ ├── kb_app.py # 知识库管理 API
│ │ ├── chat_app.py # Chat 助手 API
│ │ ├── document_app.py # 文档管理 API
│ │ └── user_app.py # 用户与权限 API
│ └── db/ # 数据库模型(SQLAlchemy)
├── deepdoc/ # 深度文档理解引擎(Python)
│ ├── parser/ # 文档解析器
│ │ ├── pdf_parser.py # PDF 解析(含 OCR + 表格)
│ │ ├── docx_parser.py # Word 解析
│ │ ├── excel_parser.py # Excel 解析
│ │ └── html_parser.py # HTML 解析
│ └── vision/ # 视觉模块(OCR/布局分析)
├── rag/ # RAG 核心管道(Python)
│ ├── nlp/ # 文本处理(分词、NER)
│ ├── resume/ # 简历/实体提取
│ └── svr/ # 任务服务(解析调度)
├── agent/ # Agent 引擎(Python)
│ ├── canvas.py # Agent 画布 DAG
│ └── component/ # Agent 组件库
├── memory/ # Agent 记忆系统(Python)
├── mcp/ # MCP 协议支持(Python)
├── common/ # 公共常量与配置
├── conf/ # 服务配置文件
├── web/ # 前端 UI(TypeScript + React)
│ └── src/
│ ├── pages/ # 页面组件
│ ├── components/ # UI 组件
│ └── services/ # API 调用层
├── cmd/ # Go 命令行工具
├── internal/ # Go 内部服务
├── sdk/python/ # Python SDK(ragflow-sdk)
│ └── ragflow_sdk/
│ ├── modules/
│ │ ├── dataset.py # DataSet 类
│ │ ├── document.py # Document 类
│ │ ├── chat.py # Chat 类
│ │ ├── session.py # Session 类
│ │ ├── chunk.py # Chunk 类
│ │ └── agent.py # Agent 类
│ └── ragflow.py # RAGFlow 客户端入口
├── docker/ # Docker 部署配置
│ ├── docker-compose.yml
│ ├── Dockerfile
│ └── service_conf.yaml.template
├── helm/ # Kubernetes Helm Chart
├── docs/ # 文档
└── pyproject.toml # Python 项目配置
  • **deepdoc/**:RAGFlow 的核心技术壁垒。对不同文档格式实现专用解析器,PDF 解析器整合了 OCR(PaddleOCR/Tesseract)、表格检测(TableBank/定制模型)和布局分析算法,输出的结构化 JSON 保留了原文档的段落层级关系。
  • **rag/**:RAG 管道核心,管理从文档上传到分块、向量化、检索、重排序的完整流程。nlp/ 子模块提供分词、命名实体识别等中文文本处理基础能力。
  • **agent/**:v0.26 引入的 Agent 引擎,基于 DAG 画布模型构建。Agent 组件库提供 RAG 检索、LLM 生成、HTTP 请求、代码执行等基本操作单元,用户通过 Web UI 拖拽组合这些组件来构建工作流。
  • **mcp/**:MCP 协议客户端实现,允许 RAGFlow Agent 连接外部的 MCP Server(如文件系统服务、数据库服务、API 网关等)。
  • **web/**:React + TypeScript 前端,提供知识库管理、文档上传、Chat 界面和 Agent 画布四大核心功能模块。
  • **sdk/python/**:独立的 Python SDK(PyPI 包名 ragflow-sdk),导入使用 ragflow_sdk。覆盖知识库、文档、Chat、Session、Agent 五大资源类型的 CRUD 操作。

实操 Demo

以下通过 Python SDK 构建一个完整的简历筛选 RAG 系统:

"""
简历筛选 RAG Demo
功能:上传简历 → 智能解析 → 向量化 → 按条件检索
"""
from ragflow_sdk import RAGFlow

API_KEY = "your_api_key_here"
BASE_URL = "http://localhost:9380"

rag = RAGFlow(api_key=API_KEY, base_url=BASE_URL)

# 1. 创建简历知识库
print("[1/5] 正在创建知识库...")
dataset = rag.create_dataset(
name="resume_screening",
description="候选人简历库",
embedding_model="BAAI/bge-large-zh-v1.5",
chunk_method="resume", # 简历专用解析模式
parser_config={
"chunk_token_num": 256,
"layout_recognize": True
}
)
print(f" 知识库 ID: {dataset.id}")

# 2. 上传简历文件
print("[2/5] 正在上传简历...")
resume_files = [
{"display_name": "resume_zhang.pdf", "blob": open("resumes/张三_后端工程师.pdf", "rb").read()},
{"display_name": "resume_li.pdf", "blob": open("resumes/李四_算法工程师.pdf", "rb").read()},
{"display_name": "resume_wang.pdf", "blob": open("resumes/王五_前端工程师.pdf", "rb").read()},
]
dataset.upload_documents(resume_files)
print(" 简历上传完成")

# 3. 解析简历(异步,RAGFlow 自动提取姓名/技能/经验等结构化信息)
print("[3/5] 正在解析简历(异步)...")
docs = dataset.list_documents()
doc_ids = [doc.id for doc in docs]
dataset.async_parse_documents(document_ids=doc_ids)
print(f" 已提交 {len(doc_ids)} 个文档的解析任务")

# 4. 创建筛选助手
print("[4/5] 正在创建招聘助手...")
chat = rag.create_chat(
name="recruiter_assistant",
dataset_ids=[dataset.id],
prompt_config={
"system": """你是一位专业的招聘助手。基于提供的简历库,帮助筛选符合条件的候选人。
每次回答需要:
1. 列出匹配的候选人及其关键技能
2. 说明匹配原因
3. 标注信息来源"""
}
)
session = chat.create_session()
print(f" 助手已就绪,会话 ID: {session.id}")

# 5. 智能筛选问答
print("[5/5] 开始筛选...\n")

queries = [
"请找出有 3 年以上 Python 后端开发经验的候选人",
"有哪些候选人使用过 PyTorch 或 TensorFlow?",
"推荐一位最适合做技术 leader 的候选人并说明理由",
]

for i, question in enumerate(queries, 1):
print(f"--- 查询 {i} ---")
print(f"问题:{question}")
print("回答:", end="")
for chunk in session.ask(question, stream=True):
print(chunk.content, end="", flush=True)
print("\n")

print("Demo 完成!")

同类对比

特性 RAGFlow LangChain + VectorDB LlamaIndex Dify
Stars 82,800+ 139,000+ 50,100+ 75,000+
定位 端到端 RAG 引擎 Agent 开发框架 文档 RAG 框架 LLM 应用平台
文档解析 deepdoc 深度解析引擎 依赖第三方 Loader LlamaParse(专业) 基础 Loader
智能分块 11 种模板化分块 RecursiveCharacter Sentence/Token/Node 可配置
内置向量数据库 Elasticsearch / Infinity 需自行集成 需自行集成 需自行集成
Agent 工作流 Web 画布 + MCP LangGraph 图编排 Workflows 1.0 可视化画布
API REST + Python SDK Python/JS SDK Python/TS SDK REST API
Web UI 完整管理后台 LangSmith(可观测) LlamaCloud 完整管理后台
多模态文档 PDF/Word/Excel/图片集成 OCR 依赖 Loader LlamaParse 依赖 Loader
私有化部署 Docker / K8s pip install pip install Docker Compose
学习曲线 中等 中高 中等

分析:RAGFlow 区别于其他方案的独特价值在于”文档理解”深度。LangChain 和 LlamaIndex 是框架,需要开发者自己组装配件;RAGFlow 是开箱即用的完整平台,部署后通过 Web UI 即可操作。对于那些文档质量参差不齐、包含大量扫描件和复杂表格的企业场景,RAGFlow 的 deepdoc 引擎是决定性的优势。而 Dify 虽然也提供 Web UI 和可视化工作流,但在文档解析深度和 RAG 管道精细度上不及 RAGFlow。如果你需要一个”上传文档就能问答”的开源 RAG 平台,RAGFlow 是目前最成熟的选择。如果你需要最大灵活性的定制 RAG 流程,LangChain 配合 Chroma/Milvus 提供更大的自由度。

参考资源

文章作者: Leo·Cheung
文章链接: http://tufusi.com/2026/06/15/SKILL-RAGFlow/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ONE·PIECE
打赏
  • 微信
  • 支付宝

评论