RAGFlow

RAGFlow 主要解决文档检索和生成中的准确性问题。

MIRIX 则是一个 多代理个人助理框架,基于 LLM 的多代理记忆系统。

Chunk

🚀 流程实例:以一份 PDF 财务报告为例

假设用户向 RAGFlow 上传了一份 2024 年 Q1 的公司财务报告 PDF,并希望提问相关数据。整个流程分解如下:

阶段 概念/操作 解释 (前因后果)
I. 前因:原始数据 原始文档 (Source Document) 一份完整的、非结构化或半结构化的 PDF 报告,包含封面、目录、多页文本、表格、图表等。
II. 核心:切块 (Chunking) Chunking 过程 RAGFlow 的核心工作 。它使用预先选择的切块模板 (例如,针对表格的模板)来解析 PDF,并执行以下操作: 1. 深度理解: 识别出表格的边界、标题和每行数据。 2. 智能切分: 将表格的一行数据或一个独立的段落切分成一个Chunk
III. 后果 1:Chunk 结果 Chunk (切块) 例如,PDF 中一个关于"营收数据"的表格行,被转化为一个 Chunk。这个 Chunk 不仅仅包含表格数据,RAGFlow 还会附加上下文(比如表格的标题、它所属的章节)以增加语义完整性。
IV. 后果 2:嵌入 (Embedding) Embedding (向量化) 嵌入模型 将上一步生成的每个 Chunk 文本转化为一个高维向量
V. 最终用途:检索 (Retrieval) 向量存储 (Vector Store) 所有的 Chunk 向量被存储在 ElasticsearchInfinity 中。 当用户提问(如:"一季度软件服务的营收是多少?")时,问题也会被向量化,然后在向量存储中快速找到语义最相似的 Chunk(包含"一季度"、"软件服务"、"营收"信息的 Chunk)。

🔍 结论:Chunk 的作用

Chunk 的质量直接决定了 RAG 的可用性。

  • 如果 Chunk 太大: 它可能包含太多不相关的信息,稀释了关键语义,导致检索不精确。
  • 如果 Chunk 太小: 它可能破坏一个完整的语义单元(例如,将表格的一行数据分成了两半),导致 LLM 无法获得完整上下文来生成准确的答案。

RAGFlow 强调切块模板可视化干预 ,就是为了让用户能最大限度地优化这个 Chunking 过程,从而确保 LLM 接收到的信息是高质量且完整的。


多路召回(Multiple Recall)?

实例解释:查找"销售额"

我们以一个包含公司年报的 RAGFlow 知识库为例。

假设用户提出了一个问题:

用户查询: "2023 年 Q4 软件服务的营收是多少?"

1. 单一召回的局限性

如果只使用向量召回(语义搜索),系统可能会出现偏差:

  • 问题: 用户问的是"营收",但向量模型可能会检索到语义相似的词,如"利润"、"净收入"等,而错过了精确包含"营收"这个关键词的表格数据。
  • 结果: 找到了很多关于公司财务情况的定性描述 (文本),但没有找到精确的数字(表格)。

2. 多路召回的运作方式

RAGFlow 的多路召回会同时发起至少三种类型的查询:

召回路径 (Path) 策略类型 作用和搜索目标 检索结果(示例 Chunk)
路径一 向量召回 (Vector Recall) 侧重语义相似度。将用户查询向量化,搜索所有语义上最接近"2023 年 Q4 软件服务"的 Chunks。 Chunk A (文本描述): "2023 年第四季度,我们的软件服务增长势头强劲,是核心收入驱动力..."
路径二 关键词召回 (Keyword Recall) 侧重精确匹配 。在 Elasticsearch 中搜索精确包含 "2023"、"Q4"、"软件服务"、"营收" 等关键词的 Chunks。 Chunk B (表格行): "软件服务
路径三 结构化召回 (Structured Recall) 侧重结构化信息 。针对被 RAGFlow 识别的表格问答结构,执行特定的结构查询(如果支持)。 Chunk C (表格元数据): 直接从识别的表格中定位到 2023 Q4 对应的"软件服务"行。

3. 结果融合与重排 (Fusion and Re-ranking)

最后一步,系统会对这三条路径返回的全部 Chunks 进行统一处理

  1. 融合 (Fusion): 将所有路径的结果合并到一个列表中。
  2. 重排 (Re-ranking): 使用一个更强大的模型或算法(例如,混合评分算法)对合并后的 Chunks 再次进行排序。

通过这个过程,即使关键词召回(路径二)找到了最准确的数字表格,它也能确保最终被送给 LLM 的信息列表中,精确包含答案的 Chunk B 能排在最前面。

最终结果: LLM 接收到最相关的 Chunks (包含精确的 1.2 亿美元数据),从而生成一个准确且有数据支撑的回答。

Ollama IPEX-LLM Xinference

部署本地大模型是目前非常热门的话题,Ollama、Xinference、IPEX-LLM 实际上处于大模型部署生态中不同的"生态位",而 Triton 则属于工业级的"重武器"。

为了让你更直观地理解,我们可以把部署大模型比作**"开一家餐厅(提供模型服务)"**。


一、 三者角色的核心区别

1. Ollama:极简的"自动售货机"
  • 定位: 面向开发者和个人用户的极简桌面级工具。

  • 特点:

    • 傻瓜式: 下载 -> 安装 -> ollama run llama3,一键搞定。
    • 轻量: 主要依赖 GGUF 格式(量化模型),对显存要求低,CPU 也能跑得不错。
    • 生态: 社区非常活跃,很多 WebUI、IDE 插件都首选支持 Ollama。
  • 局限: 主要是为了跑 LLM(对话模型),虽然也支持 Embedding,但对多模态、分布式推理、微调的支持不如专业的全面。

2. Xinference (Xorbits Inference):全能的"连锁自助餐厅"
  • 定位: 面向企业级开发和数据科学家的全能型推理框架。

  • 特点:

    • 大一统: 不仅支持 LLM,还原生支持 Embedding(向量模型)、Rerank(重排序模型)、Image(绘图)、Audio(语音)。做 RAG(知识库)应用时,这一个框架就能把所有模型服务都包圆了。
    • 后端灵活: 它像一个"中介",底层可以自动调用 vLLM、CTranslate2、GGUF 等不同的推理引擎。
    • 分布式: 支持多机多卡,如果你有两台电脑,想连起来跑一个大模型,Xinference 原生支持。
  • 局限: 安装和配置比 Ollama 稍微复杂一点点(需要 Python 环境),资源占用相对高一些。

3. IPEX-LLM (Intel Extension for PyTorch):专属的"发动机加速器"
  • 定位: Intel 硬件专用的加速库。

  • 特点:

    • 它不是一个服务器: 严格来说,它不是像 Ollama 那样直接给你提供 API 的服务软件,而是一个库(Library)
    • 化腐朽为神奇: 它的作用是让 PyTorch 模型在 Intel 的 CPU (如酷睿 Ultra)、集成显卡 (Intel Arc 核显)和 独立显卡 上跑得飞快。
    • 兼容性: 你可以在 Ollama 或 Xinference 的底层使用 IPEX-LLM 来加速(如果你的电脑是 Intel 芯片)。
  • 局限: 如果你用的是 NVIDIA (N卡) 或 AMD 显卡,这个跟你没关系。


二、 它们与 NVIDIA Triton 的关系

Triton Inference Server (NVIDIA) 是这里的"老大哥",属于工业级/数据中心级的"中央厨房"。

  • 关系:

    • Ollama/Xinference 是为了易用性而设计的,它们牺牲了一些极致的并发性能,换取了"好部署、好管理"。
    • Triton 是为了极致吞吐量稳定性设计的。
  • 主要区别:

    • Triton 的强项: 动态批处理(Dynamic Batching,同时处理几百个人的请求)、多模型并发、支持 TensorRT 极致加速。它通常用于像 ChatGPT 官网、京东客服这种高并发的生产环境。
    • Triton 的缺点: 配置极其痛苦(写 config.pbtxt),学习曲线陡峭。对于本地单用户来说,用 Triton 属于"杀鸡用牛刀",而且这把牛刀还很重,拿不动。

三、 实际使用场景与选择建议

为了帮你选择,我构建了几个典型的实际场景:

场景 A:程序员/学生,想在 MacBook 或 游戏本上试玩 Llama3,写代码辅助
  • 选择:Ollama
  • 理由: 你不需要配置 Python 环境,不想折腾依赖库。下载完就能用,配合各类插件(如 VSCode 的 Continue 插件)无缝集成。
场景 B:你需要开发一个 RAG(企业知识库)应用
  • 选择:Xinference
  • 理由: RAG 不仅需要对话模型,还需要 Embedding 模型把文档变成向量,需要 Rerank 模型优化搜索结果。Xinference 可以用一套 API 同时启动这三种模型,管理起来非常方便,而且兼容 OpenAI 格式 API,代码改动小。
场景 C:你的公司买了一批 Intel 的服务器,或者是新的 Intel Core Ultra 笔记本
  • 选择:IPEX-LLM (作为底层)
  • 理由: 如果直接用普通的 PyTorch 或 Ollama 的默认后端,Intel 显卡可能无法调用或速度很慢。你需要安装集成了 IPEX-LLM 的 Ollama 版本,或者在代码中 import ipex_llm,才能榨干 Intel 硬件的性能。
场景 D:你需要在生产环境上线一个服务,预计每秒有 1000 人同时访问
  • 选择:Triton (配合 vLLM 或 TensorRT-LLM)
  • 理由: 这种时候 Ollama 会卡死,Xinference 可能也会有瓶颈。你需要 Triton 强大的调度能力和显存管理能力来保证高并发下的低延迟。

总结对照表

特性 Ollama Xinference IPEX-LLM Triton
核心定位 个人/开发者工具 全栈模型部署框架 Intel 硬件加速库 工业级推理服务器
上手难度 ⭐ (极简) ⭐⭐ (简单) ⭐⭐⭐ (需改代码/配置) ⭐⭐⭐⭐⭐ (困难)
模型支持 主打 LLM (GGUF) LLM + 图片 + 音频 + 向量 PyTorch 模型 所有主流 AI 框架
硬件倾向 Apple Silicon, NV卡, CPU NV卡 (推荐), CPU Intel CPU/GPU 专用 NVIDIA GPU 专用
适合场景 本地测试、AI 助手 搭建复杂 AI 应用 (RAG) Intel 设备加速 高并发生产环境

一句话建议:

如果你是个人玩,闭眼选 Ollama ;如果你要搞开发做系统,选 Xinference ;如果你是 Intel 硬件受害者(或受益者),务必带上 IPEX-LLM ;如果你要抗住高并发流量,再去研究 Triton

数据集和核心文件系统

实例说明:一个文件,两个数据集

假设您有一个包含 2024 年 Q1 和 Q2 销售数据 的 PDF 文件,文件名为 Sales_Report_2024.pdf

步骤 操作 核心文件系统 数据集 A (市场分析) 数据集 B (财务检索)
1. 上传 Sales_Report_2024.pdf 上传到 RAGFlow。 原始文件被安全存储在这里。 - -
2. 链接 A 将文件链接数据集 A(用于市场分析)。 原始文件不变。 持有文件的引用 。使用 "Q&A 切块模板""中英文嵌入模型" 进行切块和向量化。 -
3. 链接 B 将文件链接数据集 B(用于财务检索)。 原始文件不变。 持有文件的引用 持有文件的引用 。使用 "表格切块模板""财务专业嵌入模型" 进行切块和向量化。
4. 检索 用户在 RAGFlow 中选择数据集 A 或 B 进行提问。 原始文件不变。 中英文向量空间中搜索 Q&A 风格的 Chunks。 财务向量空间中搜索表格风格的 Chunks。

结果的优势:

  1. 高效性: 原始文件只存储了一次(在核心文件系统)。
  2. 灵活性: 同一个文件可以应用不同的 RAG 策略(不同的切块模板和嵌入模型)来适应不同的业务需求。
  3. 安全性: 如果您决定删除数据集 A ,只会删除 A 中生成的切块和向量,原始文件仍保留在核心文件系统中,可以继续供数据集 B 使用。

Chunk,layout, 框

这是一个非常好的问题,因为这是理解 RAGFlow 这种深度文档理解型 RAG 引擎的关键。

我们通过一个具体的合同文件 实例,来清晰区分 Layout 模型 检测出的"框"和最终的 Chunk (切块)


📄 实例:合同文件中的一个条款和表格

假设我们有一个 PDF 格式的合同文件,其中包含一个条款和一张相关的简单表格。

1. Layout 模型:检测"框" (结构边界)

Layout 模型 的工作是纯粹的机器视觉任务 ,它像一个高效的机器人视觉系统,只关注文档在页面上的物理排版结构边界

Layout 模型检测出的"框" (Boxes) 目的(机器视觉) 核心问题
条款文本框 识别这是一个"文本段落"区域。 "这个区域的边界在哪里?"
表格标题框 识别这是表格的"标题"或"标签"。 "这是什么类型的元素?"
表格行/单元格框 识别表格中每个单元格的内容和边界。 "这个表格是如何分割的?"

结果: Layout 模型输出了一堆带有坐标的"框",告诉 RAGFlow 哪里是标题,哪里是正文,哪里是表格。

2. Chunking (切块):创建"语义单元"

Chunking 过程 (由 RAGFlow 的切块模板驱动)是一个知识工程任务 ,它使用 Layout 模型的结果作为输入,目标是创建具有完整语义的知识片段 (Chunk)

RAGFlow 切块的"语义单元" (Chunk) 目的(知识工程) 核心问题
Chunk 1:条款文本 将整个条款文本作为一个独立 Chunk。 "这个段落的语义是什么?"
Chunk 2:表格行 1 关键区别点: 它会结合表格标题该行内容,创建一个 Chunk。 "如何让这个 Chunk 独立地回答问题?"

核心区别实例

假设表格内容是:

产品 价格 交付日期
软件授权 $10000 2025/12/31
❌ 错误的切块(简单画框)

如果 Chunk 只是简单地复制表格行 1 的内容 "软件授权 | $10000 | 2025/12/31" ,那么检索时 LLM 就会困惑:这是什么的价格?

✅ RAGFlow 智能切块(语义关联)

RAGFlow 的切块模板会利用 Layout 模型的结构信息,生成一个语义丰富的 Chunk

Chunk Text (用于 Embedding): "这是合同附件 3 中的表格行。产品:软件授权,价格:10000 美元,交付日期:2025 年 12 月 31 日。"


🌟 总结:从"框"到"Chunk"的转变

特征对比 Layout 模型检测出的"框" RAGFlow 最终的 "Chunk"
本质 物理结构边界(像素和坐标)。 逻辑语义单元(文本和上下文)。
作用 输入:提供文档的排版指导。 输出:用于向量化和检索的最小知识单位。
内容 孤立的文本或数据。 融合了上下文和结构信息的完整语句。
目标 识别**"是什么元素"**。 确保 Chunk 能够独立回答**"为什么""是什么意思"**。

结论: Layout 模型画出的"框"是 RAGFlow 智能切块的原材料 ,而 Chunk 才是经过 RAGFlow 知识工程加工后的"成品",这个成品具有完整的语义,可以直接交给 LLM 使用。

2. 什么是关键词索引(Full-Text/Keyword Index)?

关键词索引是支撑多路召回(Multiple Recall) 中的全文搜索那一路的关键。

实例:关键词索引

假设 RAGFlow 处理了您的 Chunk:

Chunk 文本 关键词索引中的记录 召回机制
Chunk Text: "核心产品营收 软件服务 2024 Q1 1.2 亿..." 核心产品营收软件服务2024Q11.2亿 用户查询 "2024 Q1 软件营收" 时,系统在 关键词索引 中进行精确匹配,找到包含这四个词的 Chunk,并给予高分。

作用: 确保当用户使用精准词语 (如日期、产品名称、特定术语)提问时,系统能迅速且准确地找到对应的 Chunk。这是对向量召回(语义搜索) 的有效补充。


3. 手动修改 Chunk 文本具体指什么?

手动修改主要有三种形式,旨在修复机器切块的边界错误语义缺失

手动干预类型 实例 为什么需要(机器不智能)
1. 边界修正(合并/拆分) 机器切分错误: 机器将一个完整的句子:"公司今年决定...(换行)...重点投资 AI 领域。"切成了两个 Chunk。 人工操作: 双击第一个 Chunk,将第二个 Chunk 的文本复制过来,合并成一个完整的句子。 机器擅长视觉分析,但对复杂的跨页、跨段的语义衔接判断容易出错。
2. 上下文补充 机器切分结果: 一个表格 Chunk 只有数据,没有标题。 人工操作: 手动在 Chunk 文本开头添加:"以下是 2024 年 Q1 软件服务的营收数据。" 确保每个 Chunk 语义自洽。如果 Chunk 缺失关键上下文,LLM 可能会误解数据。
3. 元数据/关键词注入 Chunk 内容: 描述了公司的"Llama 3 部署项目"。 人工操作: 双击 Chunk,手动添加关键词/标签:"大模型"、"关键项目"、"战略级"。 增强检索效果。许多关键词(如"战略级")并未在文本中,但用户会用它来搜索。

4. 人工干预:太不智能?浪费时间?用户体验不好?

您的顾虑是完全正确的。在理想情况下,我们希望机器完全自动化,但这在处理非结构化文档 时是一个现实的取舍

🤖 为什么 RAGFlow 仍然需要人工干预?

RAGFlow 已经比许多简单的 RAG 工具"智能"得多(因为它有 Layout 模型和多种切块模板)。但是,它仍然无法完美处理所有情况:

  1. 复杂排版: 许多公司报告使用自定义的、不规则的排版,机器很难理解这种人为设计的上下文
  2. 知识盲区: 机器无法知道哪些信息对您和您的团队是最重要 的、哪些词语是您的团队内部用来搜索的行话(例如,"A 计划" 实际上指的是 "核心战略项目 2025")。
  3. 最终准确性要求: 对于企业级应用,例如法律或财务咨询,99.99% 的准确率是必须的。即使是 1% 的切块错误,也可能导致客户收到错误信息。

⚖️ 智能、效率与准确性的平衡

RAGFlow 提供的可视化和干预 功能,不是为了取代自动化,而是为了实现 "自动化 + 专家知识校准"

  • RAGFlow (自动化): 负责 95% 的工作,大大提高效率。
  • 用户 (人工干预): 只需检查那 5% 的复杂或关键信息,并注入 专业的知识和上下文,确保最终知识库的最高准确率和检索效果

因此,虽然手动干预会浪费少量时间 ,但其带来的检索准确率(尤其是对关键知识)的提升 是巨大的,最终保证了用户的信任和更好的问答体验

这是一个非常好的问题,因为 DLR (Document Layout Recognition)Layout 模型 是同一个概念体系中的不同术语,它们之间存在着强烈的联系,几乎可以视为同一件事。

让我们来详细解释 DLR 的含义,并通过实例说明它与 Layout 模型的关系。


1. DLR (Document Layout Recognition) 的含义

DLR(文档布局识别) 是一种计算机视觉和文档智能技术,其核心任务是理解和解析文档的视觉和逻辑结构

核心目标

DLR 的目标是识别文档页面上的每一个元素,并确定它们之间的关系和功能。它回答了以下问题:

  1. 这个区域是做什么用的? (例如:标题、正文段落、脚注、图片说明)
  2. 这些区域之间的关系是什么? (例如:哪个标题属于哪个段落?这个表格属于哪个章节?)
  3. 阅读顺序是什么? (例如:从左到右,从上到下,或者在多栏布局中如何跳转)

实例:年报的 DLR

假设 RAGFlow 正在处理一份 PDF 格式的公司年报

DLR 识别出的元素 对应的布局识别结果 对 RAGFlow 的价值
视觉元素 页面中央的粗体大字是主标题 ;右下角的小字是页码 ;左侧一栏是目录 ;右侧是正文 RAGFlow 知道哪些文本是重要的(标题),哪些是需要忽略的(页码、页眉)。
逻辑结构 识别出"执行摘要"是一个一级标题 ;紧随其后的三个段落是其正文内容 ;接下来的"财务表现"是另一个一级标题 RAGFlow 可以确保切块(Chunking)时,来自"执行摘要"段落的文本,会带着**"执行摘要"的上下文和元数据**。

2. DLR 和 Layout 模型的关系

在 RAGFlow 的语境中,以及整个 AI 文档处理领域:

Layout 模型是实现 DLR 任务所使用的"工具"或"模型"。

术语 含义 角色
DLR (文档布局识别) 任务/目标:识别并理解文档的结构和语义。 目的:我们想要做什么。
Layout 模型 (如 DeepDoc) 工具/技术:实现 DLR 任务的深度学习模型。 手段:我们用什么技术来做。

它们是一回事吗?

  • 在操作层面,当技术人员说"模型正在进行 Layout 检测"时,他们通常指的就是在执行 DLR 任务
  • RAGFlow 提到的 DeepDoc 就是一个执行 DLR、OCR 和 TSR 任务的视觉模型(Layout Model)

总结 RAGFlow 的数据提取任务

RAGFlow 提供的 DeepDoc 选项,实际上执行了三个相互关联的任务:

  1. OCR (Optical Character Recognition): 字符识别(将图片中的文字转化为可编辑文本)。
  2. TSR (Table Structure Recognition): 表格结构识别(识别表格的行、列和单元格关系)。
  3. DLR (Document Layout Recognition): 文档布局识别(识别标题、段落、列表、图表等文档的逻辑结构)。

这三个任务的结果共同作为输入,指导 RAGFlow 的 Chunking(切块) 引擎,确保切块是语义完整、结构准确的。

相关推荐
沃达德软件2 小时前
智慧警务实战模型与算法
大数据·人工智能·算法·数据挖掘·数据分析
Mrliu__2 小时前
Opencv(十九) : 图形轮廓特征查找
人工智能·opencv·计算机视觉
屹立芯创ELEADTECH2 小时前
CoWoS、3D IC、Chiplet混战:先进封装的“技术路线之争“到底在争什么?
人工智能·科技·制造
Philtell2 小时前
Ubuntu22.04 5080配置深度学习环境
人工智能·深度学习
Lethehong2 小时前
首发实践:在昇腾NPU上从零部署与深度评测Mistral-7B-v0.3全流程
人工智能·pytorch·python·昇腾atlas 800t·mistral-7b-v0.3
free-elcmacom2 小时前
机器学习进阶<9>基于 PCA 的图像压缩与还原
人工智能·机器学习
测试人社区—小叶子2 小时前
使用开源模型微调,构建专属的测试用例生成机器人
运维·网络·c++·人工智能·机器人·自动化·测试用例
Francek Chen2 小时前
【自然语言处理】应用01:情感分析及数据集
人工智能·pytorch·深度学习·自然语言处理
工藤学编程2 小时前
零基础学AI大模型之MultiQueryRetriever多查询检索全解析
人工智能