数据截至 (上游 commit b6b6c4de9715)
进阶召回 — RAPTOR、GraphRAG 与查询分解
30 秒导读: 第 03 章的混合检索(向量 + BM25 + 重排)是「把问句和一堆平铺 chunk 逐个比相似度」。 但有三类问题,平铺 chunk 天生接不住:问「这份年报整体讲了啥」——答案不在任何单个 chunk 里; 问「A 的老板的老板是谁」——要沿关系跳好几步;问「对比 X 和 Y 在成本和性能上的差异」——一个问句里 塞了多个子意图。本章讲 RAGFlow 为这三类分别造的三件结构化召回武器,外加两个「顺藤摸瓜」的辅助召回。
本章是第 03 章 混合检索与融合重排 的进阶篇。通用的打分、融合、重排不再重复
(见第 03 章的 Dealer.retrieval / rerank);这里只讲「结构化 / 多跳」召回策略本身。
1. 第 03 章接不住的三类问题(本章要补的洞)
先说清楚为什么还要有这一章。第 03 章的检索单元是「一段一段平铺的原文 chunk」,召回的本质是 「问句向量 vs chunk 向量的近邻 + 关键词命中」。这套办法有三个结构性盲区:
| 盲区(接不住的问题) | 白话例子 | 为什么平铺 chunk 接不住 |
|---|---|---|
| 跨段主旨型 | 「这份报 告整体结论是什么?」 | 主旨是若干段落合起来才浮现的,任何单个 chunk 都只讲局部 |
| 多跳关系型 | 「张三所在公司的竞争对手有谁?」 | 答案要沿实体关系跳 2~3 步,而相似度只看「和问句像不像」 |
| 复合多意图型 | 「对比 A、B 在价格和续航上的优劣」 | 一个问句里几个子问题,单轮检索会被主意图带偏、漏掉次意图 |
RAGFlow 的三件进阶武器,正好一一对应;再加两个结构辅助召回:
进阶召回全景(在第 03 章通用检索之上叠加)
┌─────────────────────── 写入侧(入库时预先构建结构) ───────────────────────┐
│ │
│ RAPTOR 建树 GraphRAG 建图 │
│ 把 chunk 自底向上聚类 从 chunk 抽实 体/关系 → 社区发现 → 社区摘要 │
│ 逐层 LLM 摘要 摘要节点也当成 chunk 入库 │
│ │ │ │
└────────┼────────────────────────┼────────────────────────────────────────┘
│ 摘要 chunk │ 实体/关系/社区报告 chunk
▼ (raptor_kwd) ▼ (knowledge_graph_kwd)
┌───────────────────────── 同一个索引库 ──────────────────────────┐
│ 原文 chunk + RAPTOR 摘要 chunk + 图谱 chunk │
└───────────────────────────────────────────────────────────────┘
▲ ▲ ▲
┌────────┼────────────────────────┼────────────────────────┼──────────┐
│ │ │ │ │
│ ① RAPTOR 召回 ② GraphRAG 召回(KGSearch) ③ 查询分解 │
│ (透明:摘要就是普通 query_rewrite→实体/关系/ research 递归拆 │
│ chunk,被通用检索 类型召回→n-hop 扩展→ 子问题,逐层检索 │
│ 顺带捞回) 社区报告 汇总 │
│ │
│ ④ 结构辅助:retrieval_by_toc(按目录补章节) / retrieval_by_children │
│ (子块命中→回捞父块) │
└── 读取侧(检索时) ─────────────────────────────────────────────────┘
怎么读这张图: 上半是「入库时」预先造好的结 构(树 / 图),它们产出的摘要节点都当普通 chunk 存进同一个 索引;下半是「检索时」三种策略如何用上这些结构。关键设计:RAPTOR 摘要对检索侧透明——它就是多了一批 更「宏观」的 chunk,通用检索会自然捞到;而 GraphRAG 和查询分解则是独立的召回入口,产出后拼接进结果。
三种主武器 + 两种辅助,一句话各自定位:
| 手段 | 解决哪个盲区 | 核心动作 | 代价 |
|---|---|---|---|
| RAPTOR 层次摘要 | 跨段主旨型 | 入库时聚类 + 逐层摘要,摘要入库 | 入库慢、多花 LLM 摘要 token |
| GraphRAG 图谱召回 | 多跳关系型 | 建图 + 按实体/关系/社区召回 + n-hop | 建图极贵(逐 chunk 抽取 + 社区摘要) |
| 树状查询分解 | 复合多意图型 | 递归拆子问题、逐层检索汇总 | 检索时多轮 LLM,延迟高 |
| retrieval_by_toc | 章节完整性 | 命中后按文档目录补齐相关章节 | 一次额外 LLM 选章 |
| retrieval_by_children | 上下文完整性 | 子块命中 → 回捞父块 | 无(纯索引查) |