这段文字介绍的是 RAGFlow 的 “标签集(Tag Sets)” 功能。

简单来说,这是一个结构化筛选机制。它允许你给上传的文件打上特定的“标签”,然后在检索时,强制系统只在带有特定标签的文件范围内进行搜索,而不是大海捞针。

这相当于给你的知识库加上了类似电商网站的“筛选器”(比如只看“品牌:Apple”且“价格:5000以上”的商品)。


1. 功能核心逻辑与实例说明

核心逻辑
  • 传统 RAG: 用户问“预算是多少?”,系统在所有文件中搜索,可能搜出 IT 部门的预算、食堂的预算、两年前的预算,结果很乱。
  • 带 Tag 的 RAG: 系统预先定义维度(如“部门”、“年份”)。检索时,限定 部门=IT年份=2024,系统在符合条件的文件里找“预算”。
场景实例:跨国公司的合同管理

假设你有一个庞大的知识库,存放了公司 10 年来所有的合同文档。

1. 标签定义(设置阶段):
管理员在 RAGFlow 后台定义两组标签:

  • Tag Key 1: 地区 (Values: 中国区, 北美区, 欧洲区)
  • Tag Key 2: 合同类型 (Values: 采购, 销售, 租赁)

2. 文件打标(上传阶段):

  • 上传《2024年北京办公室租赁协议.pdf》 -> 打标:地区=中国区合同类型=租赁
  • 上传《2023年纽约服务器采购单.pdf》 -> 打标:地区=北美区合同类型=采购

3. 用户提问(使用阶段):

  • 场景 A(无标签): 用户问“所有的租赁违约金比例是多少?”

    • 结果: RAGFlow 会把北京的、纽约的、甚至 10 年前的租赁合同混在一起回答,LLM 可能会产生幻觉或给出错误的数据拼接。
  • 场景 B(使用 Tag Sets): 用户(或 Agent)在聊天设置中勾选标签 地区=中国区

    • 结果: RAGFlow 物理屏蔽掉所有非中国区的文件。
    • LLM 回答: “根据中国区的租赁协议,违约金比例通常为年租金的 20%。”(非常精准,绝不会混入北美的数据)。

2. 功能实现链条 (Implementation Chain)

这个功能的实现链条比 TOC 简单,因为它主要涉及元数据管理(Metadata Management)数据库过滤(DB Filtering)

第一阶段:标签定义与绑定 (Configuration & Binding)
  1. Schema 定义:

    • 动作: 管理员在系统层面定义 Tag Key(标签名)和对应的可选 Values。
    • 数据结构: 类似于 {"Department": ["HR", "IT", "Sales"]}
  2. 文件入库与打标 (File Upload & Tagging):

    • 动作: 上传文件时,前端 UI 弹窗让用户选择标签。
    • 绑定: 系统将文件 ID 与选定的标签进行关联。
    • 继承: 这个标签属性会被该文件切分出来的每一个 Chunk(切片) 所继承。
  3. 向量存储 (Storage):

    • 动作: 存入向量数据库(Elasticsearch/Infinity/Milvus)。

    • 关键点: 存进去的数据不仅包含向量(Vector),还包含元数据字段(Metadata Fields)。

    • 数据形态:

      {
        "content": "租赁违约金为20%...",
        "vector": [0.12, 0.55, ...],
        "tags": {            <-- 关键字段
           "地区": "中国区",
           "合同类型": "租赁"
        }
      }
      
第二阶段:带过滤的检索 (Filtered Retrieval)
  1. 用户查询构造 (Query Construction):

    • 输入: 用户提问“违约金多少?” + 前端勾选/API指定 Filter: {"地区": "中国区"}
  2. 预过滤 (Pre-filtering) —— 性能与精度的关键

    • 动作: 在进行向量相似度计算之前,向量数据库先执行过滤操作。
    • 逻辑: SELECT * FROM chunks WHERE tags.地区 == '中国区'
    • 效果: 假如库里有 100 万个切片,只有 1 万个属于中国区,那么系统通过标签瞬间排除了 99% 的干扰项。
  3. 向量搜索 (Vector Search):

    • 动作: 仅在那剩下的 1 万个切片中,寻找与“违约金多少”语义最相似的切片。
  4. 生成回答:

    • 动作: LLM 拿到精准的切片,生成答案。

总结:Tag Sets 与 TOC 的区别

为了让你更清楚,我把刚才解释的 TOC 和现在的 Tag Sets 做个对比:

功能 TOC (提取目录) Tag Sets (标签集)
作用对象 文档内部的结构 文档之间的分类
解决痛点 解决“断章取义”,补充上下文 解决“大海捞针”,排除无关干扰
实现方式 它是内容的补充 (把目录文字塞进 Chunk) 它是硬过滤器 (利用数据库字段做 Filter)
形象比喻 读书时,看某一页的同时,旁边放着目录大纲。 进图书馆时,只走进“历史类”书架,不看“科幻类”。

Tag Sets 的价值在于: 当你的知识库非常庞大且混杂时,它是保证回答准确性(避免张冠李戴)的最有效、成本最低的手段。

RAPTOR

这段文字介绍的是 RAPTOR (Recursive Abstractive Processing for Tree-Organized Retrieval) 功能。

简单来说,RAPTOR 是一种**“递归摘要”技术。它的目的是让 RAG 系统不仅能回答细节问题,还能回答宏观的、需要综合全篇内容**的问题。

如果把普通 RAG 比作“用放大镜找细节”,那么 RAPTOR 就是“先用无人机拍全景,再用放大镜找细节”。


1. 核心功能与实例说明

痛点:普通 RAG 的局限性

普通 RAG 是把文档切成小块(Chunk)。

  • 如果你问:“合同里第3条罚款是多少?”(细节题),普通 RAG 很强。
  • 如果你问:“这份合同主要讲了哪些风险?”(宏观概括题),普通 RAG 就傻眼了。因为它检索到的都是零散的碎片,缺乏一个“概括性”的切片来回答这个问题。
RAPTOR 的解决方案

RAPTOR 会在后台自动把这些碎片聚类,然后让 LLM 写摘要,形成一个“树状结构”。

场景实例:一家科技公司的《年度战略规划报告》

这份报告有 100 页,内容很杂,涉及财务、技术研发、市场营销等。

1. 构建 RAPTOR 树(索引阶段):

  • 底层(Level 0 - 原始切片):

    • 切片 A:“Q1 投入研发资金 500 万…”
    • 切片 B:“Q2 招聘 AI 算法工程师 10 人…”
    • 切片 C:“下半年将在华南地区开设 5 家分店…”
    • 切片 D:“建议预留 20% 预算应对原材料涨价…”
  • 中层(Level 1 - 聚类摘要):

    • 系统发现 A 和 B 都在讲技术,于是把它们聚在一起,让 LLM 写个摘要:
    • 摘要节点 1: “上半年重点在于加大 AI 研发投入,包括资金与人才。”
    • 系统发现 C 和 D 都在讲运营和风控,聚在一起写个摘要:
    • 摘要节点 2: “下半年侧重市场扩张及供应链风险控制。”
  • 顶层(Level 2 - 全局摘要):

    • 系统把“摘要节点 1”和“摘要节点 2”再聚在一起,写出最终摘要:
    • 根节点: “本年度战略核心是‘技术为先,稳步扩张’,在确保研发领先的同时控制供应链风险。”

2. 用户提问(检索阶段):

  • 用户问: “公司今年的核心战略思想是什么?”
  • 普通 RAG: 可能会检索到“招聘 10 人”这种细节,回答得很片面。
  • RAPTOR RAG: 用户的提问与顶层(根节点) 的向量最匹配。
  • 回答: “核心战略是‘技术为先,稳步扩张’…”

2. 功能实现链条 (Implementation Chain)

RAPTOR 的实现比 TOC 更复杂,它涉及到大量的数学计算(聚类)和 LLM 生成。

第一阶段:构建递归树 (Indexing & Tree Construction)
  1. 切片与向量化 (Chunking & Embedding):

    • 将文档切分成基础切片(Leaf Nodes),并计算向量。
  2. 聚类 (Clustering):

    • 算法: 使用如高斯混合模型(GMM)或 UMAP 等算法。
    • 动作: 系统计算切片之间的语义距离,把讲相似话题的切片归为一堆(Cluster)。即使这些切片在文档里相隔很远(比如第 1 页和第 50 页都提到了“成本”),也会被聚在一起。
  3. 摘要生成 (Summarization):

    • 动作: 把这一个 Cluster 里的所有文本喂给 LLM。
    • Prompt: “请总结这些片段的共同主题和要点。”
    • 产出: 生成一个新的文本块(Summary Node)。
  4. 递归循环 (Recursion):

    • 系统判断生成的摘要数量是否还很多?如果是,就对这些**“摘要”**再次进行聚类和再摘要。
    • 以此类推,直到生成一个或几个最终的根节点。
  5. 混合存储:

    • 将原始切片、第一层摘要、第二层摘要…全部存入向量数据库。
第二阶段:多粒度检索 (Tree-Traversed Retrieval)
  1. 查询向量化: 用户的问题被转化为向量。

  2. 全层级匹配 (Collapsed Search):

    • RAGFlow 会在所有层级(原始细节 + 中层摘要 + 高层概括)中同时进行搜索。
  3. 命中策略:

    • 如果问细节(“招多少人?”),向量会命中底层切片
    • 如果问概括(“战略是什么?”),向量会命中高层摘要节点
  4. 生成回答: LLM 基于命中的节点生成答案。


3. RAPTOR vs TOC (目录增强) 的区别

这两个功能都在解决长文档理解问题,但思路不同:

特性 TOC (提取目录) RAPTOR (递归摘要)
依赖基础 依赖文档物理结构 (章节标题、排版) 依赖内容语义相似度 (话题聚类)
生成内容 不创造新内容,只是把目录贴进切片 创造新内容 (LLM 写出了原文档没有的总结段落)
适用场景 规章制度、操作手册 (结构严谨) 研报、论文、散乱的会议记录 (需要提炼观点)
跨度能力 只能联系上下文附近的切片 能联系第1页和第100页的相似观点

总结:
RAPTOR 是 RAGFlow 中最高级的理解功能之一。它让机器像人类专家一样,先读厚(展开细节),再读薄(提炼总结),从而能够回答“What is this about? (这是关于什么的)”这种宏观问题。

Construct knowledge graph

这段文字介绍的是 RAGFlow 的 知识图谱(Knowledge Graph / GraphRAG) 构建功能。

简单来说,这是 RAG 技术的一个进阶形态。普通的 RAG 是基于“相似度”找内容,而知识图谱是基于**“关联性”找内容。它将文档中的实体(人、地、事、物)** 提取出来,并建立关系网络

如果把普通 RAG 比作在图书馆里按关键词搜索书名,那么知识图谱就是侦探墙上的红线图,把看似无关的线索串联起来。


1. 核心功能与实例说明

痛点:普通 RAG 的“推理盲区”

普通 RAG 擅长回答直接的问题,但很难处理**“多跳推理(Multi-hop Reasoning)”**。

场景实例:供应链风险分析

假设你的知识库里有三份互不相关的文档:

  • 文档 A(产品设计): “我们的最新手机型号 Phone-X 使用了 Z-100 芯片。”
  • 文档 B(采购清单):Z-100 芯片Alpha 科技公司 独家供应。”
  • 文档 C (财经新闻):Alpha 科技公司 所在的地区刚刚发生了严重的地震,工厂停摆。”
用户的提问:“地震会影响我们的手机出货吗?”

1. 普通 RAG(无图谱):

  • 检索过程: 用户问的是“地震”和“手机”。

  • 结果:

    • 系统搜“地震”,找到了文档 C。
    • 系统搜“手机”,找到了文档 A。
    • 但是,系统看不出文档 A 和文档 C 之间有任何联系(因为它们没有共同的关键词)。
  • LLM 回答: “根据文档,Alpha 公司发生了地震。但我不知道这跟我们的手机有什么关系。”

2. 开启知识图谱的 RAGFlow:

  • 索引阶段: 系统已经抽取出了实体和关系:

    • (Phone-X) --[使用]--> (Z-100 芯片)
    • (Z-100 芯片) --[供应商]--> (Alpha 科技)
    • (Alpha 科技) --[状态]--> (受地震影响)
  • 检索过程:

    • 系统找到起点实体“地震”和终点实体“手机”。
    • 系统在图谱中沿着“路径”行走:手机 -> 芯片 -> 供应商 -> 地震。
  • LLM 回答:会有严重影响。 因为我们的 Phone-X 使用 Z-100 芯片,而该芯片的独家供应商 Alpha 科技正受到地震影响,可能导致断供。”

价值点: 发现了“隐性”的逻辑链条,实现了像人类一样的逻辑推理。


2. 功能实现链条 (Implementation Chain)

构建知识图谱的过程比普通索引要慢,因为它需要 LLM 进行深度的语义分析。

第一阶段:图谱构建 (Graph Construction / Indexing)
  1. 实体与关系提取 (Extraction):

    • 输入: 原始文档切片。

    • 动作: 系统调用 LLM,Prompt 是这样的:“请阅读这段文字,提取出所有的实体(人物、公司、产品、地点)以及它们之间的关系,输出为三元组格式。”

    • 产出: 三元组列表,例如:

      • ("Phone-X", "contains", "Z-100 Chip")
      • ("Alpha Tech", "located_in", "Region A")
  2. 实体对齐与融合 (Resolution):

    • 痛点: 文档里有的写“Alpha Tech”,有的写“Alpha科技公司”。
    • 动作: 算法会将这些指代同一事物的名词合并为一个节点 ID,避免图谱分裂。
  3. 社区发现 (Community Detection) —— GraphRAG 的高级特性

    • 动作: 算法(如 Leiden 算法)会分析图谱,找出联系紧密的“小圈子”。比如把所有关于“芯片制造”的实体聚成一个社区。
    • 生成摘要: LLM 为这个社区写一段总结。这有助于回答宏观问题(比如“整个芯片供应链状况如何?”)。
  4. 存储 (Storage):

    • 将节点(Nodes)、边(Edges)和社区摘要存入图数据库(或支持图结构的存储引擎)。
第二阶段:图检索 (Graph Retrieval)
  1. 关键词提取与实体映射:

    • 输入: 用户问“地震影响手机吗?”
    • 动作: 提取关键词“地震”、“手机”,并在图数据库中找到对应的节点。
  2. 子图遍历 (Subgraph Traversal):

    • 动作: 从“手机”节点出发,向外走 1步、2步(K-hop),看看能不能走到“地震”相关的节点。
    • 获取路径: 找到了路径 Phone-X -> Z-100 -> Alpha Tech -> Earthquake
  3. 上下文注入:

    • 系统不仅把文档原文拿出来,还把这条路径上的关系描述转换成自然语言,作为上下文喂给 LLM。
  4. 生成回答:

    • LLM 根据关系路径生成具有逻辑性的答案。

3. 三种高级功能的横向对比

到现在为止,你已经了解了 RAGFlow 的三个大招,我们来总结一下它们的区别:

功能 核心机制 形象比喻 最强适用场景
TOC (目录增强) 结构化 地图 (不仅看内容,还看你在书的第几章) 规章制度、操作手册、长篇法律文书。
RAPTOR (递归摘要) 分层概括 金字塔 (先看塔尖的总结,再看塔底的细节) 研报分析、论文综述、回答“这篇文章讲了什么”。
Knowledge Graph (知识图谱) 网状关联 侦探连线板 (A认识B,B认识C,所以A可能认识C) 刑侦调查、供应链分析、复杂金融股权穿透。

构建知识图谱是目前 RAG 领域最前沿、最强大的功能之一,它让 AI 从单纯的“复读机”变成了具备初步逻辑能力的“分析师”。

检索测试(Retrieval Test)

这段文字介绍的是 RAGFlow 的 “检索测试(Retrieval Test)” 功能。

简单来说,这是一个 “调试器”“演练场”。它允许管理员在不消耗 LLM(大模型)Token、不生成最终回答的情况下,单纯测试系统的“查找能力”

如果说 RAG 是“先找资料,再写答案”,那么这个功能就是让你只测试“找资料”这一步准不准


1. 核心功能与实例说明

痛点:为什么需要这个功能?

很多时候 RAG 回答得不好,不是 LLM(如 GPT-4)笨,而是检索(Recall) 这一步拉胯——根本没找到正确的文件切片。
如果你直接去对话界面测试,你不知道是没找到资料,还是资料找到了但 LLM 没理解。检索测试就是为了隔离变量,排查问题。

场景实例:企业 IT 帮助台

假设你在 RAGFlow 里上传了一份《公司 VPN 连接故障排除手册》,里面有一句话:“如果错误代码是 809,请检查防火墙设置。”

管理员进行调试:

  1. 第一次测试(效果差):

    • 输入问题: “报错 809 怎么办?”

    • 参数设置: 纯向量检索(Vector only),相似度阈值 0.5。

    • 测试结果:

      • 排名第一: “公司 VPN 账号申请流程…” (匹配度 0.6,错误
      • 排名第二: “如何修改 VPN 密码…” (匹配度 0.55,错误
    • 分析: 向量模型可能对数字“809”不敏感,导致没找到关键切片。

  2. 调整参数(优化):

    • 动作: 管理员调整设置,开启 混合检索(Hybrid Search),增加关键词权重,并开启 重排序模型(Rerank Model)
  3. 第二次测试(效果好):

    • 再次点击“测试”:

    • 测试结果:

      • 排名第一: “…如果错误代码是 809,请检查防火墙…” (匹配度 0.92,正确!
      • 排名第二: “常见错误代码列表…” (匹配度 0.85)
    • 结论: 这个参数配置是有效的。现在可以放心地把这个配置应用到正式的聊天机器人中了。


2. 功能实现链条 (Implementation Chain)

这个过程截断了 RAG 的后半部分(生成),只运行前半部分(检索)。

步骤一:参数配置 (Configuration)
  • 输入: 测试问题(Query)。

  • 变量控制: 用户在界面上调整各种“旋钮”:

    • 相似度阈值 (Similarity Threshold): 低于这个分数的切片不要。
    • Top-K: 只看前几名(比如前 10 个)。
    • 检索模式: 关键词搜索?向量搜索?还是混合搜索?
    • 重排序 (Rerank): 是否启用 BGE-Reranker 等模型进行精排?
步骤二:执行检索 (Execution)
  • 动作: 系统根据配置,向数据库(Elasticsearch/Infinity)发送查询请求。

  • 逻辑:

    1. Recall(粗排): 先捞出 100 个相关的切片。
    2. Fusion(加权): 如果是混合检索,将向量分数和关键词分数按比例合并。
步骤三:重排序 (Reranking) —— 如果有启用
  • 动作: 系统将捞出来的 Top-N 个切片和用户的问题,一起送给专门的 Rerank 模型
  • 计算: Rerank 模型不生成文字,只负责打分,它会精准地判断“这个切片是否真的能回答这个问题”。
  • 结果: 切片顺序发生剧烈变化,最相关的被顶到最前面。
步骤四:结果可视化 (Visualization)
  • 输出: 直接在网页上展示原始切片内容

  • 关键指标展示:

    • 相关度得分 (Score): 让你知道它为什么排在第一。
    • 来源文件: 让你知道是哪个文件里的内容。
    • 高亮: 标出匹配的关键词。
  • 终止: 流程到此结束,不调用 Chat Model(如 GPT/DeepSeek)生成回答。


3. 为什么这个功能对开发者至关重要?

这就好比做菜。

  • 普通的聊天界面 是“把菜端给客人吃”。如果客人说难吃,你不知道是盐放多了(检索错了)还是火候没到(LLM 写得不好)。
  • 检索测试 是厨师在厨房里尝配料。你尝了一口汤底(检索结果),发现太淡了,于是你加盐(调整参数),直到汤底完美,再开始煮面(生成回答)。

总结:
“检索测试”是 RAGFlow 提供的一个白盒可视化工具,用于验证和优化知识库的命中率。只有在这里能稳定搜到正确的内容,后续的 AI 回答才可能是正确的。

Google Drive

这段文字介绍的是 RAGFlow 的 “数据源集成(Data Source Integration)” 功能中的一种:Google Drive 连接器

简单来说,这是一个自动化“进货”通道。它允许 RAGFlow 直接连接到你的 Google Drive 网盘,自动把里面的文件拉取过来变成知识库,而不需要你先把文件下载到本地,再手动上传到 RAGFlow。

如果把 RAGFlow 比作一个图书馆,手动上传是管理员一箱箱搬书,而“添加 Google Drive”就是建立了一条从出版社(Google Drive)直通图书馆的传送带


1. 核心功能与实例说明

痛点:手动维护的噩梦

如果没有这个功能,当你的团队在 Google Drive 上更新了《2024产品报价单》后,你必须:

  1. 去 Google Drive 下载新文件。
  2. 去 RAGFlow 删除旧文件。
  3. 在 RAGFlow 上传新文件并等待解析。
    这非常繁琐,且容易导致知识库信息滞后。
场景实例:跨国团队的协作文档

假设一个跨国团队使用 Google Drive 存储所有的技术文档和会议记录。

1. 配置连接:
管理员在 RAGFlow 后台输入 Google Drive 的 API 凭证,并授权 RAGFlow 访问公司网盘中的 “Technical Docs” 文件夹。

2. 自动化同步:

  • 周一上午: 工程师在 Google Drive 的“Technical Docs”文件夹里上传了一份新的 PDF 《API v2.0 变更说明》。
  • 后台动作: RAGFlow 的定时任务检测到了这个新文件,自动将其下载并解析入库。

3. 用户提问:

  • 周一下午: 某员工问 RAGFlow:“v2.0 的 API 有什么变化?”
  • 回答: RAGFlow 已经学习了那份新文档,准确回答了变更点。

价值点: 实现了知识库的“准实时”更新,打通了办公软件与 AI 之间的最后一公里。


2. 功能实现链条 (Implementation Chain)

这个功能的实现属于 ETL(Extract, Transform, Load) 流程中的 Extract(提取) 环节。

步骤一:OAuth 认证与授权 (Authentication)

这是建立信任的第一步。

  • 输入: 用户在 Google Cloud Console 申请的 Client IDClient Secret

  • 动作:

    1. RAGFlow 引导用户跳转到 Google 的登录页面。
    2. 用户点击“允许 RAGFlow 访问我的文件”。
    3. Google 返回一个 Access Token(访问令牌)Refresh Token(刷新令牌) 给 RAGFlow。
  • 结果: RAGFlow 拿到了网盘的“钥匙”,保存起来。

步骤二:文件扫描与过滤 (Crawling & Filtering)
  • 动作: RAGFlow 使用“钥匙”(Token)调用 Google Drive API (files.list)。

  • 逻辑:

    • 它会遍历指定的文件夹结构。
    • 它会根据预设过滤文件(比如只抓 PDF 和 Docx,忽略图片或临时文件)。
    • 它会比对文件的 修改时间Hash 值,判断哪些是新文件,哪些是旧文件。
步骤三:流式下载 (Streaming Download)
  • 动作: 对于需要入库的文件,RAGFlow 调用下载接口 (files.get with alt=media)。
  • 传输: 文件以二进制流的形式,直接从 Google 的服务器传输到 RAGFlow 的服务器内存或临时存储中。
  • 转换(特殊处理): 如果文件是 Google Docs(在线文档)格式,API 会在下载过程中自动将其转换为标准的 Docx 或 PDF 格式,因为 RAGFlow 解析不了 Google 专有的在线格式。
步骤四:接入解析流水线 (Ingestion Pipeline)
  • 动作: 文件一旦下载完成,就无缝衔接到了 RAGFlow 的标准处理流程中。

    • 解析: 提取文本。
    • 切片: 变成 Chunk。
    • 索引: 存入向量数据库。
步骤五:周期性同步 (Cron Sync)
  • 机制: RAGFlow 会运行一个后台定时任务(比如每小时一次)。
  • 动作: 重复步骤二。如果发现 Google Drive 里的文件被删除了,RAGFlow 也会同步删除知识库里对应的切片,保持数据一致性。

总结

“Add Google Drive” 功能主要解决的是 数据孤岛 问题。

环节 动作 解释
连接 握手 通过 OAuth 协议拿到访问权限。
获取 搬运 通过 API 自动下载文件,并处理 Google Docs 格式转换。
处理 入库 喂给 RAGFlow 的解析器(Parser)进行消化。
维护 保鲜 定时检查更新,确保 AI 知道的不是过时信息。

Start Chat

这段文字介绍的是 RAGFlow 的核心交互功能:“开启对话(Start Chat)”

如果说之前的“解析”、“入库”、“检索测试”都是在厨房里的备菜和试味,那么“开启对话”就是正式把菜端上桌,让客人(用户)享用

这是 RAGFlow 的运行时(Runtime)环境,它将知识库、检索配置、大模型(LLM)和对话历史记忆整合在一起,提供最终的问答服务。


1. 核心功能与实例说明

核心逻辑

它不仅仅是“搜索+回答”,它还包含了对话管理(Conversation Management)。它能记住你刚才说了什么,能引用原文,能处理连续追问。

场景实例:智能售后助手

假设你搭建了一个“家电售后助手”,知识库里有《空调维修手册》和《洗衣机说明书》。

第一轮对话(基于检索):

  • 用户: “空调显示 E4 错误码是什么意思?”

  • 系统动作:

    1. 检索知识库,找到《空调维修手册》第 10 页:“E4 代表室外机异常”。
    2. LLM 组织语言。
  • RAGFlow 回答: “根据维修手册,E4 错误码通常表示室外机异常。请检查室外机是否积尘或风扇是否堵转。[引用源:空调维修手册.pdf]

    • (注:这里会高亮显示引用来源,点击可跳到原文位置)

第二轮对话(基于记忆 + 检索):

  • 用户: “那应该怎么清洗呢?”(用户省略了主语“室外机”)

  • 系统动作:

    1. 查询理解(Query Rewrite): 系统结合上一轮对话,把“怎么清洗”重写为“怎么清洗空调室外机”。
    2. 再次检索知识库,找到清洗步骤。
  • RAGFlow 回答: “清洗室外机请遵循以下步骤:1. 切断电源;2. 使用高压水枪冲洗散热片…”

价值点: 提供了端到端的、具备上下文记忆的、有据可查的智能问答体验。


2. 功能实现链条 (Implementation Chain)

当你在对话框里按下“发送”键时,后台发生了一连串复杂的连锁反应。这是一个完整的 RAG 推理流水线。

步骤一:查询预处理 (Query Pre-processing)
  • 输入: 用户发送“那怎么清洗?”

  • 历史回溯: 系统提取最近的 N 轮对话历史。

  • 查询重写 (Query Rewriting): 为了防止检索失败,系统会先调用一次 LLM,让它补全问题。

    • Prompt: “根据历史‘E4代表室外机异常’,请补全‘那怎么清洗?’的主语。”
    • Result: “怎么清洗空调室外机?” -> 生成了新的搜索词
步骤二:检索与召回 (Retrieval)
  • 动作: 使用新生成的搜索词,去向量数据库(Vector DB)和全文索引(Elasticsearch)中查找。
  • 配置生效: 这一步会应用你之前在“检索测试”中调整好的参数(比如混合检索权重、Top-K、Rerank 模型)。
  • 结果: 拿到了 5-10 个最相关的文本切片(Chunks)。
步骤三:提示词组装 (Prompt Assembly)
  • 动作: 系统像拼积木一样构建最终发给 LLM 的指令。

  • 模板结构:

    [System Instruction]
    你是一个乐于助人的家电专家。请基于以下背景信息回答问题。
    
    [Context / Retrieved Chunks]
    1. 《空调维修手册》片段:...清洗室外机需切断电源...
    2. 《常见问题》片段:...室外机可以用软毛刷...
    
    [User Question]
    那怎么清洗?(或者重写后的问题)
    
步骤四:LLM 生成与流式输出 (LLM Generation & Streaming)
  • 动作: 将巨大的 Prompt 发送给 Chat Model(如 GPT-4, DeepSeek-V3)。
  • 流式传输 (SSE): LLM 每生成一个字,RAGFlow 就立刻推送到前端展示,让用户感觉响应很快,不用等整段话生成完。
步骤五:引用标注 (Citation Marking)
  • 动作: RAGFlow 知道刚才喂给 LLM 的切片 ID。
  • 后处理: 在回答下方,系统列出刚才用到的切片来源(文件名、页码、匹配度),生成可点击的链接。

总结:Start Chat 与 Retrieval Test 的区别

这是很多新手容易混淆的地方:

特性 Retrieval Test (检索测试) Start Chat (开启对话)
核心目的 调试检索准确率 服务最终用户
涉及组件 仅数据库 + 排序模型 数据库 + 排序模型 + 大语言模型 (LLM) + 记忆模块
消耗成本 低(不消耗 LLM Token) 高(消耗 LLM Token 用于生成回答)
输出形式 原始的文本切片列表 通顺的、经过润色的自然语言回答
上下文 无(单次查询) 有(支持多轮对话)

“Start Chat” 是 RAGFlow 所有后台配置工作的最终呈现形式

Deep Research

这段文字介绍的是 RAGFlow 的 “深度研究(Deep Research)” 功能。

简单来说,这是一个自主智能体(Autonomous Agent) 工作流。它不再满足于回答简单的“是什么”问题,而是模仿人类研究员,去解决复杂的、开放式的、需要多步查找和综合分析的课题。

如果说“标准 RAG”是图书馆管理员(你问一本书,他给你找出来),那么“深度研究”就是博士生(你给他一个课题,他去读几十篇文献,整理笔记,最后写出一篇论文给你)。


1. 核心功能与实例说明

痛点:标准 RAG 的无力感

标准 RAG 是“一次性”的:搜一次 -> 答一次。
如果你问:“请分析 2024 年东南亚电动车市场的竞争格局及未来趋势。”

  • 标准 RAG: 可能只找到一篇讲特斯拉在泰国的新闻,然后回答:“特斯拉在泰国卖得不错。”(信息极度碎片化、不完整)。
  • 它无法主动去查比亚迪在印尼的情况、越南 VinFast 的政策、以及充电桩的覆盖率。
场景实例:投资分析报告

用户指令: “帮我写一份关于‘人形机器人产业’的深度研究报告,重点关注核心零部件的供应链。”

RAGFlow Deep Research 的工作流程:

  1. 任务拆解(Brainstorming):

    • 系统(Agent)思考:要回答这个问题,我不能只搜一个词。我需要查:

      • 子任务 A: 人形机器人现在的市场规模?
      • 子任务 B: 核心零部件有哪些(减速器、伺服电机、传感器)?
      • 子任务 C: 谁是这些零部件的龙头企业?
      • 子任务 D: 最近的技术突破是什么?
  2. 多轮迭代执行(Execution Loop):

    • 第一轮: 搜索“人形机器人 市场规模 2024”。阅读搜索结果,提取数据。
    • 第二轮: 发现搜索结果里提到了“谐波减速器”是关键。于是自主发起新搜索:“谐波减速器 龙头企业 市场份额”。
    • 第三轮: 发现有一家公司“绿的谐波”很关键,继续深挖这家公司的财报或新闻。
  3. 长文写作(Synthesis):

    • 系统将上述查到的几十条零散信息汇总。
    • 生成一篇结构清晰的 Markdown 长文,包含“行业概览”、“产业链分析”、“风险提示”等章节。

价值点: 从“回答问题”进化到了“生产知识”,能够处理极其复杂的任务,输出万字长文。


2. 功能实现链条 (Implementation Chain)

这是一个典型的 Agentic RAG(代理式 RAG) 架构。

阶段一:规划 (Planning)
  • 输入: 用户的宏大课题。

  • 动作: 规划器 LLM(Planner)分析意图,生成一个思维链(Chain of Thought)任务队列(Task Queue)

    • Output: ["Search market size", "Identify key components", "Analyze competitors"]
阶段二:执行与工具调用 (Tool Execution Loop) —— 核心循环

系统会依次处理任务队列,并在必要时动态添加新任务。

  1. 查询生成: LLM 将自然语言任务转化为搜索引擎(如 Google/Bing)或内部知识库能理解的关键词

  2. 检索/搜索: 调用搜索工具获取网页列表。

  3. 深度阅读(Scraping & Reading):

    • 这也是“Deep Research”名字的由来。它不仅仅看搜索结果的摘要,而是爬取网页全文
    • 使用 LLM 阅读整篇长文,提取与课题相关的笔记(Notes)
  4. 反思(Reflection):

    • LLM 检查手头的笔记:“关于减速器的资料够了吗?”
    • 决策: “不够,还缺伺服电机的信息。” -> 新增一个搜索任务放入队列。
阶段三:综合与写作 (Synthesis & Reporting)
  • 输入: 经过多轮循环后积累的大量结构化笔记
  • 动作: 写作 LLM(Writer)根据笔记,按照逻辑框架(大纲)进行撰写。
  • 输出: 一份包含引用的深度报告。

3. Deep Research 与其他功能的层级关系

为了让你对 RAGFlow 的能力有全景认知,我们可以这样排序:

  1. Add Google Drive: 只是搬运工(把书搬进图书馆)。
  2. TOC / Graph / Raptor:图书管理员的内功(把书整理好,方便查找)。
  3. Retrieval Test:调试工具(检查管理员找书准不准)。
  4. Start Chat:前台服务(用户问一句,管理员答一句)。
  5. Deep Research:顶级研究员(用户给个课题,他自己去反复翻书、上网、思考、总结,最后交出一篇论文)。

Deep Research 是 RAGFlow 作为一个 Agent 编排平台能力的集中体现。 它不再被动等待检索,而是主动出击获取信息。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐