RAGFlow 2
Schema 定义:管理员在系统层面定义 Tag Key(标签名)和对应的可选 Values。类似于。文件入库与打标 (File Upload & Tagging):上传文件时,前端 UI 弹窗让用户选择标签。系统将文件 ID 与选定的标签进行关联。这个标签属性会被该文件切分出来的每一个 Chunk(切片)所继承。向量存储 (Storage):存入向量数据库(Elasticsearch/Infin
这段文字介绍的是 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)
-
Schema 定义:
- 动作: 管理员在系统层面定义 Tag Key(标签名)和对应的可选 Values。
- 数据结构: 类似于
{"Department": ["HR", "IT", "Sales"]}。
-
文件入库与打标 (File Upload & Tagging):
- 动作: 上传文件时,前端 UI 弹窗让用户选择标签。
- 绑定: 系统将文件 ID 与选定的标签进行关联。
- 继承: 这个标签属性会被该文件切分出来的每一个 Chunk(切片) 所继承。
-
向量存储 (Storage):
-
动作: 存入向量数据库(Elasticsearch/Infinity/Milvus)。
-
关键点: 存进去的数据不仅包含向量(Vector),还包含元数据字段(Metadata Fields)。
-
数据形态:
{ "content": "租赁违约金为20%...", "vector": [0.12, 0.55, ...], "tags": { <-- 关键字段 "地区": "中国区", "合同类型": "租赁" } }
-
第二阶段:带过滤的检索 (Filtered Retrieval)
-
用户查询构造 (Query Construction):
- 输入: 用户提问“违约金多少?” + 前端勾选/API指定
Filter: {"地区": "中国区"}。
- 输入: 用户提问“违约金多少?” + 前端勾选/API指定
-
预过滤 (Pre-filtering) —— 性能与精度的关键:
- 动作: 在进行向量相似度计算之前,向量数据库先执行过滤操作。
- 逻辑:
SELECT * FROM chunks WHERE tags.地区 == '中国区'。 - 效果: 假如库里有 100 万个切片,只有 1 万个属于中国区,那么系统通过标签瞬间排除了 99% 的干扰项。
-
向量搜索 (Vector Search):
- 动作: 仅在那剩下的 1 万个切片中,寻找与“违约金多少”语义最相似的切片。
-
生成回答:
- 动作: 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)
-
切片与向量化 (Chunking & Embedding):
- 将文档切分成基础切片(Leaf Nodes),并计算向量。
-
聚类 (Clustering):
- 算法: 使用如高斯混合模型(GMM)或 UMAP 等算法。
- 动作: 系统计算切片之间的语义距离,把讲相似话题的切片归为一堆(Cluster)。即使这些切片在文档里相隔很远(比如第 1 页和第 50 页都提到了“成本”),也会被聚在一起。
-
摘要生成 (Summarization):
- 动作: 把这一个 Cluster 里的所有文本喂给 LLM。
- Prompt: “请总结这些片段的共同主题和要点。”
- 产出: 生成一个新的文本块(Summary Node)。
-
递归循环 (Recursion):
- 系统判断生成的摘要数量是否还很多?如果是,就对这些**“摘要”**再次进行聚类和再摘要。
- 以此类推,直到生成一个或几个最终的根节点。
-
混合存储:
- 将原始切片、第一层摘要、第二层摘要…全部存入向量数据库。
第二阶段:多粒度检索 (Tree-Traversed Retrieval)
-
查询向量化: 用户的问题被转化为向量。
-
全层级匹配 (Collapsed Search):
- RAGFlow 会在所有层级(原始细节 + 中层摘要 + 高层概括)中同时进行搜索。
-
命中策略:
- 如果问细节(“招多少人?”),向量会命中底层切片。
- 如果问概括(“战略是什么?”),向量会命中高层摘要节点。
-
生成回答: 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)
-
实体与关系提取 (Extraction):
-
输入: 原始文档切片。
-
动作: 系统调用 LLM,Prompt 是这样的:“请阅读这段文字,提取出所有的实体(人物、公司、产品、地点)以及它们之间的关系,输出为三元组格式。”
-
产出: 三元组列表,例如:
("Phone-X", "contains", "Z-100 Chip")("Alpha Tech", "located_in", "Region A")
-
-
实体对齐与融合 (Resolution):
- 痛点: 文档里有的写“Alpha Tech”,有的写“Alpha科技公司”。
- 动作: 算法会将这些指代同一事物的名词合并为一个节点 ID,避免图谱分裂。
-
社区发现 (Community Detection) —— GraphRAG 的高级特性:
- 动作: 算法(如 Leiden 算法)会分析图谱,找出联系紧密的“小圈子”。比如把所有关于“芯片制造”的实体聚成一个社区。
- 生成摘要: LLM 为这个社区写一段总结。这有助于回答宏观问题(比如“整个芯片供应链状况如何?”)。
-
存储 (Storage):
- 将节点(Nodes)、边(Edges)和社区摘要存入图数据库(或支持图结构的存储引擎)。
第二阶段:图检索 (Graph Retrieval)
-
关键词提取与实体映射:
- 输入: 用户问“地震影响手机吗?”
- 动作: 提取关键词“地震”、“手机”,并在图数据库中找到对应的节点。
-
子图遍历 (Subgraph Traversal):
- 动作: 从“手机”节点出发,向外走 1步、2步(K-hop),看看能不能走到“地震”相关的节点。
- 获取路径: 找到了路径
Phone-X -> Z-100 -> Alpha Tech -> Earthquake。
-
上下文注入:
- 系统不仅把文档原文拿出来,还把这条路径上的关系描述转换成自然语言,作为上下文喂给 LLM。
-
生成回答:
- 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,请检查防火墙设置。”
管理员进行调试:
-
第一次测试(效果差):
-
输入问题: “报错 809 怎么办?”
-
参数设置: 纯向量检索(Vector only),相似度阈值 0.5。
-
测试结果:
- 排名第一: “公司 VPN 账号申请流程…” (匹配度 0.6,错误)
- 排名第二: “如何修改 VPN 密码…” (匹配度 0.55,错误)
-
分析: 向量模型可能对数字“809”不敏感,导致没找到关键切片。
-
-
调整参数(优化):
- 动作: 管理员调整设置,开启 混合检索(Hybrid Search),增加关键词权重,并开启 重排序模型(Rerank Model)。
-
第二次测试(效果好):
-
再次点击“测试”:
-
测试结果:
- 排名第一: “…如果错误代码是 809,请检查防火墙…” (匹配度 0.92,正确!)
- 排名第二: “常见错误代码列表…” (匹配度 0.85)
-
结论: 这个参数配置是有效的。现在可以放心地把这个配置应用到正式的聊天机器人中了。
-
2. 功能实现链条 (Implementation Chain)
这个过程截断了 RAG 的后半部分(生成),只运行前半部分(检索)。
步骤一:参数配置 (Configuration)
-
输入: 测试问题(Query)。
-
变量控制: 用户在界面上调整各种“旋钮”:
- 相似度阈值 (Similarity Threshold): 低于这个分数的切片不要。
- Top-K: 只看前几名(比如前 10 个)。
- 检索模式: 关键词搜索?向量搜索?还是混合搜索?
- 重排序 (Rerank): 是否启用 BGE-Reranker 等模型进行精排?
步骤二:执行检索 (Execution)
-
动作: 系统根据配置,向数据库(Elasticsearch/Infinity)发送查询请求。
-
逻辑:
- Recall(粗排): 先捞出 100 个相关的切片。
- 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产品报价单》后,你必须:
- 去 Google Drive 下载新文件。
- 去 RAGFlow 删除旧文件。
- 在 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 ID和Client Secret。 -
动作:
- RAGFlow 引导用户跳转到 Google 的登录页面。
- 用户点击“允许 RAGFlow 访问我的文件”。
- Google 返回一个 Access Token(访问令牌) 和 Refresh Token(刷新令牌) 给 RAGFlow。
-
结果: RAGFlow 拿到了网盘的“钥匙”,保存起来。
步骤二:文件扫描与过滤 (Crawling & Filtering)
-
动作: RAGFlow 使用“钥匙”(Token)调用 Google Drive API (
files.list)。 -
逻辑:
- 它会遍历指定的文件夹结构。
- 它会根据预设过滤文件(比如只抓 PDF 和 Docx,忽略图片或临时文件)。
- 它会比对文件的 修改时间 或 Hash 值,判断哪些是新文件,哪些是旧文件。
步骤三:流式下载 (Streaming Download)
- 动作: 对于需要入库的文件,RAGFlow 调用下载接口 (
files.getwithalt=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 错误码是什么意思?”
-
系统动作:
- 检索知识库,找到《空调维修手册》第 10 页:“E4 代表室外机异常”。
- LLM 组织语言。
-
RAGFlow 回答: “根据维修手册,E4 错误码通常表示室外机异常。请检查室外机是否积尘或风扇是否堵转。[引用源:空调维修手册.pdf]”
- (注:这里会高亮显示引用来源,点击可跳到原文位置)
第二轮对话(基于记忆 + 检索):
-
用户: “那应该怎么清洗呢?”(用户省略了主语“室外机”)
-
系统动作:
- 查询理解(Query Rewrite): 系统结合上一轮对话,把“怎么清洗”重写为“怎么清洗空调室外机”。
- 再次检索知识库,找到清洗步骤。
-
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 的工作流程:
-
任务拆解(Brainstorming):
-
系统(Agent)思考:要回答这个问题,我不能只搜一个词。我需要查:
- 子任务 A: 人形机器人现在的市场规模?
- 子任务 B: 核心零部件有哪些(减速器、伺服电机、传感器)?
- 子任务 C: 谁是这些零部件的龙头企业?
- 子任务 D: 最近的技术突破是什么?
-
-
多轮迭代执行(Execution Loop):
- 第一轮: 搜索“人形机器人 市场规模 2024”。阅读搜索结果,提取数据。
- 第二轮: 发现搜索结果里提到了“谐波减速器”是关键。于是自主发起新搜索:“谐波减速器 龙头企业 市场份额”。
- 第三轮: 发现有一家公司“绿的谐波”很关键,继续深挖这家公司的财报或新闻。
-
长文写作(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"]
- Output:
阶段二:执行与工具调用 (Tool Execution Loop) —— 核心循环
系统会依次处理任务队列,并在必要时动态添加新任务。
-
查询生成: LLM 将自然语言任务转化为搜索引擎(如 Google/Bing)或内部知识库能理解的关键词。
-
检索/搜索: 调用搜索工具获取网页列表。
-
深度阅读(Scraping & Reading):
- 这也是“Deep Research”名字的由来。它不仅仅看搜索结果的摘要,而是爬取网页全文。
- 使用 LLM 阅读整篇长文,提取与课题相关的笔记(Notes)。
-
反思(Reflection):
- LLM 检查手头的笔记:“关于减速器的资料够了吗?”
- 决策: “不够,还缺伺服电机的信息。” -> 新增一个搜索任务放入队列。
阶段三:综合与写作 (Synthesis & Reporting)
- 输入: 经过多轮循环后积累的大量结构化笔记。
- 动作: 写作 LLM(Writer)根据笔记,按照逻辑框架(大纲)进行撰写。
- 输出: 一份包含引用的深度报告。
3. Deep Research 与其他功能的层级关系
为了让你对 RAGFlow 的能力有全景认知,我们可以这样排序:
- Add Google Drive: 只是搬运工(把书搬进图书馆)。
- TOC / Graph / Raptor: 是图书管理员的内功(把书整理好,方便查找)。
- Retrieval Test: 是调试工具(检查管理员找书准不准)。
- Start Chat: 是前台服务(用户问一句,管理员答一句)。
- Deep Research: 是顶级研究员(用户给个课题,他自己去反复翻书、上网、思考、总结,最后交出一篇论文)。
Deep Research 是 RAGFlow 作为一个 Agent 编排平台能力的集中体现。 它不再被动等待检索,而是主动出击获取信息。
更多推荐
所有评论(0)