RAGFlow:RAG 引擎讲解
本文最后更新于124 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一个开源项目如何让 AI 准确回答私密数据问题


开篇:一个真实的问题

想象你是一家企业的 IT 主管。公司有海量文档:财务报表、产品手册、法律合同、技术文档…

现在,CEO 问你:”能不能用 AI 帮我快速查阅这些文档?”

你回答:”没问题,用 ChatGPT!”

但当 ChatGPT 回答 “2024年第三季度的净利润是多少?” 时,它要么说 “我不知道”,要么编造一个数字…

问题出现了

  • 🚫 ChatGPT 没有你公司的数据
  • 🚫 即使告诉它数据,它也容易出错
  • 🚫 答案来源不明,无法追溯

这就是 RAGFlow 要解决的核心问题


第一部分:什么是 RAG?

传统 AI 的困境

用户问:「2024年净利润多少?」

ChatGPT 的理解:
「我的训练数据截止到 2024 年 4 月,
而且我完全不知道你公司的数据。
我没办法准确回答。」

结果:编造答案或说不知道 ❌

RAG 的解决方案

RAG = Retrieval-Augmented Generation(检索增强生成)

核心思想很简单:


与其让 AI 凭记忆回答,
不如先从你的文档中检索相关信息,
然后让 AI 基于这些真实信息生成答案。

流程:
用户问题

从文档库中搜索相关内容

把搜索结果提给 AI

AI 根据这些内容生成答案

效果对比

  • ❌ 传统:ChatGPT 凭空想象,准确率 30%
  • ✅ RAG:基于真实文档,准确率 90%+

RAGFlow 的特别之处

这一步看起来简单,但如果做不好,效果会很差。比如:


❌ 错误做法:
1. 上传 PDF
2. 按固定字数(512字)切割
3. 丢给向量数据库
4. 搜索 → 返回结果
 
问题:
├─ 表格被打散,数据破碎
├─ 图片被丢弃,信息丢失
├─ 搜索准确率低,经常找错
└─ 答案不可信,没有来源
 
结果:虽然是 RAG,但准确率还是很差 ❌

✅ RAGFlow 做法:
1. 用深度学习理解文档结构
2. 保留表格、图片等关键信息
3. 基于语义边界智能切割
4. 多路搜索 + 融合排序
5. 每个答案都有来源引用
 
结果:真正的高准确率 ✅

这就是 “Quality in, quality out” 的含义。


第二部分:RAGFlow 的核心架构

整体流程(一图胜千言)


┌─────────────────────────────────────────┐
│ 用户上传文档(Word、PPT、PDF、网页等) │
└────────────┬────────────────────────────┘
            ↓
┌──────────────────────────────────────────┐
│ DeepDoc:深度文档理解                   │
│ ├─ 识别布局:标题、正文、表格、图片   │
│ ├─ 智能 OCR:识别扫描件和手写文字     │
│ └─ 多模态:用 AI 理解图表含义         │
└────────────┬────────────────────────────┘
            ↓
┌──────────────────────────────────────────┐
│ 智能切片:基于语义边界分割             │
│ ├─ 不是按字数,而是按逻辑分段         │
│ ├─ 保留表格、列表等结构               │
│ └─ 支持手动调整和预览                 │
└────────────┬────────────────────────────┘
            ↓
┌──────────────────────────────────────────┐
│ 生成向量:用 AI 模型理解每段内容       │
│ └─ 相似内容 → 相似向量                 │
└────────────┬────────────────────────────┘
            ↓
┌──────────────────────────────────────────┐
│ 存储到数据库                             │
│ ├─ 向量数据库(快速搜索)             │
│ └─ 文本数据库(保存原文)             │
└────────────┬────────────────────────────┘
            ↓
            ✅ 准备完毕,等待提问
            ↓
┌──────────────────────────────────────────┐
│ 用户提问(支持中文、英文等)           │
└────────────┬────────────────────────────┘
            ↓
┌──────────────────────────────────────────┐
│ 多路召回:用多种方式搜索               │
│ ├─ 向量搜索:找语义相近的内容         │
│ ├─ 关键词搜索:精确匹配               │
│ └─ 融合排序:把最相关的排最前         │
└────────────┬────────────────────────────┘
            ↓
┌──────────────────────────────────────────┐
│ 调用 AI 模型生成答案                   │
│ └─ 基于检索到的真实内容               │
└────────────┬────────────────────────────┘
            ↓
┌──────────────────────────────────────────┐
│ 返回结果:答案 + 来源                   │
│ ├─ 答案内容                           │
│ ├─ 来自哪个文档                         │
│ ├─ 具体在第几页                       │
│ └─ 原文摘录                           │
└──────────────────────────────────────────┘

四个关键环节详解

环节 1:DeepDoc —— 比人更懂文档

问题:PDF 文档很复杂

  • 表格被打散(行与行分开)
  • 图表无法理解(直接丢弃)
  • 多列排版被打乱(左右顺序搞混)

传统方案:直接读取文本,按行切割 ❌

RAGFlow 方案


DeepDoc 的三步工作流:

1️⃣ 布局分析
  用计算机视觉识别:
  ├─ 这是标题还是正文?
  ├─ 这里有表格吗?
  ├─ 图片在哪里?
  └─ 多列排版的正确顺序是什么?

2️⃣ 结构保留
  输出结构化内容:
  ├─ 标题 → 保留为"# 标题"
  ├─ 表格 → 保留表格格式
  └─ 图片 → 用 AI 生成描述

3️⃣ 内容完整
  确保语义不破碎:
  ├─ 表格行不分开
  ├─ 列表项保持完整
  └─ 图文对应准确

具体例子


原始 PDF 中的表格:
┌─────────┬─────────┐
│ 城市   │ 销售额 │
├─────────┼─────────┤
│ 北京   │ 100万 │
│ 上海   │ 150万 │
└─────────┴─────────┘

❌ 传统切割结果:
"城市 北京 销售额 100万 城市 上海..."
(表格完全破坏了)

✅ RAGFlow 结果:
"2024年销售数据
| 城市 | 销售额 |
| 北京 | 100万 |
| 上海 | 150万 |"
(表格结构完全保留)

环节 2:智能切片 —— 怎样分割最合理?

问题:文档要分成多个小块存到数据库

  • 块太小:信息不完整,AI 回答时缺少上下文
  • 块太大:查询时加载数据太多,速度慢

传统方案:固定 512 字(无脑分割)❌

RAGFlow 方案


根据文档类型选择不同模板:

📄 学术论文模板:
按章节分割
├─ 摘要(一块)
├─ 引言(一块)
├─ 方法(一块)
├─ 结果(一块)
├─ 讨论(一块)
└─ 参考文献(一块)
 
优点:每块都是完整的研究逻辑

📋 产品手册模板:
按功能分割
├─ 产品介绍
├─ 功能 A(包括说明 + 示例)
├─ 功能 B(包括说明 + 示例)
└─ 常见问题

📰 新闻稿模板:
按逻辑分割
├─ 导语(最重要的信息)
├─ 主体(详细说明)
├─ 背景信息
└─ 相关链接

✨ 特殊:手动调整
系统会显示切片效果的预览图
你可以:
├─ 看到每块的内容
├─ 手动调整分割位置
├─ 立即看到效果
└─ 直到满意为止

环节 3:多路搜索 —— 不能漏掉答案

问题:用一种方式搜索,可能找不到最相关的内容

传统方案:只用向量搜索 ❌

RAGFlow 方案:三种方式同时搜索,然后投票


用户提问:「2024年中国 GDP 增长率是多少?」

🔍 搜索路径 1:向量相似度
  "GDP" 的向量 + "经济增长" 的向量 + ...
  ↓
  找到所有提到"经济增长、GDP"的文段
  ↓
  按相似度排序,取 Top 20

🔍 搜索路径 2:关键词匹配(BM25)
  精确查找包含"2024"且包含"GDP"的文段
  ↓
  取 Top 20

🔍 搜索路径 3:融合重排序
  把 1 和 2 的结果综合
  ├─ 给每个结果评分
  ├─ 向量分 + 关键词分
  ├─ 最后用 AI 再排一遍
  └─ 输出最相关的 Top 5

📊 最终排序:
1. [文段 A - 得分 0.98] ← 最相关!
2. [文段 B - 得分 0.95]
3. [文段 C - 得分 0.92]
4. [文段 D - 得分 0.88]
5. [文段 E - 得分 0.85]

为什么这样做

  • 向量搜索:理解”意思相近”
  • 关键词搜索:精确找到关键信息
  • 融合排序:取两者之长,避免漏掉答案

环节 4:生成答案 —— AI 的最后一步


AI 收到的输入:

用户问题:「2024年中国 GDP 增长率?」

检索到的相关文段(Top 5):
[文段 1] "2024年中国 GDP 达到140万亿元,
        同比增长5.2%..."
       
[文段 2] "这一增长率超过全球平均增长率..."

[文段 3] "主要贡献来自服务业和高新技术..."

... 更多文段

↓ AI 的工作 ↓

1. 理解这些文段的核心信息
2. 整合成一个连贯的答案
3. 补充必要的解释
4. 标注答案来源

↓ 输出结果 ↓

答案:
"2024年中国 GDP 增长率为 5.2%,
达到 140 万亿元。这一增长率
超过了全球平均水平,主要得益
于服务业和高新技术的快速发展。"

来源:
├─ 来自文档:《2024年经济数据报告》
├─ 具体位置:第 12 页
├─ 原文:「2024年中国 GDP 达到140万亿元,
                  同比增长5.2%...」
└─ 可信度:95%

第三部分:为什么 RAGFlow 更好?

核心对比

vs 传统 RAG 系统

对比项传统系统RAGFlow
文档理解❌ 无法处理复杂排版✅ DeepDoc 深度理解
表格处理❌ 表格被打散✅ 保留表格结构
图片处理❌ 直接丢弃✅ 用 AI 生成描述
切片调整❌ 无法调整✅ 可视化预览 + 手动调整
搜索准确率⚠️ 一般(70-80%)✅ 很高(90%+)
开箱即用❌ 需要自己集成✅ 一键启动
部署方式⚠️ 通常云端✅ 本地/云都支持
成本❌ 按查询次数收费✅ 开源免费

vs LangChain(开发框架)

对比项LangChainRAGFlow
定位开发者框架完整产品
用户群会编程的人所有人
易用性⚠️ 需要写代码✅ 点点鼠标
学习曲线陡峭平缓
部署难度需要定制开箱即用
灵活性✅ 极高⚠️ 有局限

怎么选

  • 需要快速上手?→ 选 RAGFlow
  • 需要深度定制?→ 选 LangChain

技术亮点

亮点 1:无限上下文

问题:ChatGPT 一次最多只能处理 128k tokens(约 50 万字)


传统方案的困境:
知识库 = 1000 万字
一次查询能用的 = 50 万字
❌ 其他 950 万字永远用不上
 
RAGFlow 的解决方案:
知识库 = 1000 万字
✅ 通过智能搜索,快速找到最相关的内容
✅ 即使知识库再大,也能秒级响应
✅ 相当于"无限上下文"

亮点 2:异构数据源统一处理

RAGFlow 可以处理各种类型的数据:


文档格式:Word、PPT、Excel、PDF、纯文本
网页内容:自动抓取并清理
数据库:直接连接,转换为可查询内容
媒体文件:图片 OCR、视频转录
特殊文件:扫描件、手写稿、影印件

一个平台 = 搞定所有数据类型 ✅

亮点 3:跨语言查询


场景:知识库中有英文论文,用户用中文提问

传统方案:
用户提问(中文)
→ 无法搜索英文内容
❌ 答案不完整

RAGFlow:
用户提问(中文)
→ 自动翻译成英文
→ 搜索英文内容
→ 答案翻译回中文
✅ 完美处理多语言混合

第四部分:实际应用场景

场景 1:企业知识库 + 智能客服


现状:
├─ 产品手册 10000+ 页
├─ FAQ 数千条
├─ 售后政策复杂
└─ 客服每天手工查文档

传统方案:
❌ 效率低:每个问题都要翻文档
❌ 错误多:容易遗漏信息
❌ 不满意:客户等待时间长

使用 RAGFlow:
✅ 上传所有文档
✅ 客服输入客户问题
✅ AI 自动从文档中找答案
✅ 1 秒内返回准确答案 + 出处

效果数据:
• 响应时间:从 5 分钟 → 1 秒
• 准确率:85% → 95%
• 客户满意度:82% → 94%
• 客服工作量:减少 60%

场景 2:教育 / 学习助手


场景:学生 24/7 学习帮助

系统包含:
├─ 课本教材(全本)
├─ 老师讲义和课件
├─ 历年考试真题
├─ 标准答案和解析
└─ 相关参考资料

学生使用:

Q1: "第五章的重点是什么?"
A: "第五章重点包括... [附原文位置]"

Q2: "这道题怎么解?"
A: "解题步骤是... [附相似题目示例]"

Q3: "这个概念和另一个有什么区别?"
A: "区别在于... [附教材原文对比]"

优势:
✅ 学生随时获得帮助
✅ 老师减少重复答题
✅ 学习效果数据化
✅ 支持自主学习

场景 3:法律案例检索


律师的工作场景:

需求:
"帮我找 3 个与本案类似的判例"

传统方式:
❌ 手工查阅数千份文件
❌ 耗时数小时
❌ 容易遗漏

使用 RAGFlow:
输入:案件信息 + 关键要点
处理:秒级检索数千份文件
输出:最相似的 5 个判例 + 相似度评分

优势:
✅ 速度快(小时 → 秒)
✅ 全面性好(不会遗漏)
✅ 可对比分析
✅ 为诉讼提供有力支撑

场景 4:医学文献查阅


医生的需求:

"最新的针对该病症的治疗方案是什么?"

传统方式:
❌ 手工查阅数百篇论文(需要几天)
❌ 需要懂英文(多数论文是英文)
❌ 容易漏掉重要发现

使用 RAGFlow:
上传:最新的医学论文库
提问:自然语言提问(支持中文)
返回:最相关的 5 篇论文摘要
      + 关键治疗方案
      + 完整引用信息

优势:
✅ 速度快(天 → 分钟)
✅ 多语言支持(中文查询,英文论文)
✅ 为论文撰写提供充分依据
✅ 提高医疗决策质量

第五部分:怎样使用 RAGFlow?

快速开始

第一步:部署


# 一条命令启动
docker-compose up -d

# 等待 30 秒
# 打开浏览器:http://localhost:5173
# 看到登录界面 ✅

第二步:创建知识库


点击"新建知识库"
输入:知识库名称(如"公司文档库")
完成 ✅

第三步:上传文档


拖拽上传文档(支持多个)
系统自动处理:
├─ 格式识别
├─ 内容提取
├─ 结构分析
├─ 切片处理
└─ 索引构建

等待完成(通常 1-5 分钟)✅

第四步:开始提问


在对话框输入问题
AI 秒级返回答案 + 来源

完成! 🎉

核心配置(给技术人员)


系统配置项:

1. LLM 选择
  ├─ OpenAI GPT-4(最强,但收费)
  ├─ 开源模型(免费,但性能一般)
  └─ 其他商用模型(Claude、Kimi 等)

2. 向量数据库
  ├─ Elasticsearch(开源,功能完整)
  └─ Infinity(更轻量级)

3. 文档处理参数
  ├─ 切片大小(通常 800-1000 字)
  ├─ 重叠区域(通常 100-200 字)
  └─ 是否启用 DeepDoc(推荐启用)

4. 检索参数
  ├─ 返回文段数(通常 5-10 条)
  ├─ 相似度阈值(通常 0.6-0.8)
  └─ 是否启用多路召回(推荐启用)

第六部分:常见问题解答

Q1:RAGFlow 的准确率真的有 95% 吗?


准确率不是固定的,取决于:

1️⃣ 文档质量
  ✅ 清晰 PDF → 准确率 95%+
  ⚠️ 扫描件、手写稿 → 准确率 80-90%
  ❌ 模糊、残缺文档 → 准确率 50%

2️⃣ 提问的清晰度
  ✅ "2024年净利润是多少?" → 准确率高
  ⚠️ "公司最近怎么样?" → 准确率一般
  ❌ "讲讲这个..." → 可能无法回答

3️⃣ 数据覆盖度
  ✅ 知识库中有相关内容 → 准确率 90%+
  ❌ 知识库中没有内容 → 无法回答

4️⃣ LLM 能力
  ✅ GPT-4 → 准确率最高
  ⚠️ GPT-3.5 → 准确率一般
  ❌ 开源小模型 → 准确率可能较低

结论:
与其问"准确率多少",
不如问"怎样优化准确率"
 
优化方法:
├─ 上传清晰的源文档
├─ 让用户提清晰的问题
├─ 用 GPT-4 等高质量模型
├─ 定期更新知识库
└─ 根据反馈调整切片参数

Q2:如果知识库中没有答案怎么办?


情况 1:知识库中确实没有
✅ RAGFlow 会诚实地说:"知识库中未找到相关内容"
✅ 不会编造答案(这是优势!)

情况 2:想要扩展搜索范围
✅ RAGFlow 支持集成网络搜索
✅ 自动网络查询 + 关联返回
✅ 类似 ChatGPT 的 Web 搜索功能

配置方法:
在设置中启用 Tavily(网络搜索 API)
之后:
- 知识库有 → 返回知识库答案
- 知识库无 → 自动网络搜索

Q3:部署和维护成本高吗?


开源版本成本:

1️⃣ 软件成本
  0 元(完全开源免费)

2️⃣ 服务器成本
  小规模(<10k 文档):
  ├─ 8GB 内存服务器
  ├─ 50GB 存储
  └─ 约 ¥60-100/月

  中等规模(10k-100k 文档):
  ├─ 32GB 内存服务器
  ├─ 500GB 存储
  └─ 约 ¥200-300/月

3️⃣ LLM 成本
  如果用 OpenAI:
  ├─ GPT-4:约 ¥1000-2000/月(中等使用)
  ├─ GPT-4o:约 ¥500-1000/月(推荐)
  └─ 或用开源模型:0 元(但性能一般)

4️⃣ 维护成本
  ✅ 开源项目,自己维护
  ❌ 没有商业支持(但有社区)

总成本估算:
• 小公司试用:¥500-1000/月
• 中等规模生产环境:¥2000-5000/月
 
对比商用 RAG 工具:
❌ 商用通常 ¥5000+/月
✅ RAGFlow 便宜 70%+

Q4:数据安全怎么保证?


传统云服务的风险:
❌ 数据上传到云端
❌ 无法完全控制
❌ 可能泄露商业机密

RAGFlow 的优势:
✅ 完全本地部署
✅ 数据永远不上云
✅ 完全可控

部署方式:
├─ 公司内网部署
├─ 防火墙隔离
├─ 数据库加密
├─ 只允许内部访问
└─ 定期备份

代码透明性:
✅ 开源项目,所有代码可见
✅ 可以自己审计代码
✅ 没有隐藏的数据采集

结论:
如果数据敏感 → RAGFlow 最安全 ✅

第七部分:总结与启示

我们学到了什么?


1️⃣ RAG 的核心价值
  大模型 + 私密数据 = 准确的答案
  关键是"怎样理解和检索数据"

2️⃣ RAGFlow 的创新
  质量优先:不是快速简单,而是准确可靠
  用户体验:不需要技术,开箱即用
  成本优化:开源免费,自己可控

3️⃣ 应用前景
  企业 AI 的标准方案
  从"通用 AI" → "专业 AI"的过渡

4️⃣ 对我们的意义
  ├─ 如果想用 AI 处理企业数据 → RAGFlow 首选
  ├─ 如果想快速原型开发 → RAGFlow 合适
  ├─ 如果需要高度定制 → 可以修改源码
  └─ 如果想学习 RAG 技术 → 绝佳教材

下一步建议


短期(1-2 周):
□ 了解 RAG 基本原理
□ 本地安装并尝试
□ 用公司的一份样本文档测试

中期(2-4 周):
□ 调整参数优化效果
□ 构建完整的知识库
□ 评估是否满足需求

长期(1 个月+):
□ 考虑生产环境部署
□ 制定 SOP(标准操作流程)
□ 评估是否扩展到其他部门

背景资料

核心技术术语(不需要深入理解)


Embedding(向量化):
把文本转换成一个数字向量
相似的内容 → 相似的向量
这样就能快速计算相似度

向量数据库:
存储这些向量的专用数据库
支持快速的相似度搜索
速度比普通数据库快 1000 倍

BM25 算法:
一种经典的关键词搜索方法
精确度很高,已被验证

多路召回:
用多种搜索方式同时搜索
然后综合排序结果
准确率更高

推荐资源


想深入学习?

📖 官方文档:
  https://docs.ragflow.io

💻 GitHub 项目:
  https://github.com/infiniflow/ragflow

🎥 视频教程:
  官方 YouTube 频道(搜索 RAGFlow)

💬 社区讨论:
  GitHub Discussions

结语

RAGFlow 代表了一个重要趋势:

从”万能的通用 AI” → “专业的领域 AI”

每个企业都在问:”我们能用 AI 解决自己的问题吗?”

RAGFlow 的回答是:“可以,而且很简单。”

现在你明白了 RAGFlow 是什么、怎样工作、能解决什么问题。

接下来的选择取决于你的企业需求。


感谢你花时间了解 RAGFlow!有任何问题,欢迎讨论。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇