跳到主要内容

RAG 与知识图谱的分工 — 事实放外面,语言放里面

这一章讲三件事: RAG 的两步流程到底怎么转;为什么它比「继续训练」划算; 以及全书的核心立论——常规 RAG 只装非结构化(没有固定栏目、只有正文的文字)材料不够用, 知识图谱能在一个库里同时装下文本和结构。读完你就拿到了全书的靶子。

1. 顶层全景:两步,一步查、一步写

用户提问 ──→ ① 检索:去外部知识库找相关材料 ──→ ② 生成:把材料 + 问题一起塞给 LLM


答案基于材料生成

图说:RAG(Retrieval-Augmented Generation,检索增强生成)的全部:
把「答对」的责任从模型的记忆挪到输入里。

RAG 这个名字拆开就是两步:检索(找到相关材料)加增强生成 (带着材料去写答案)。这个思路出自 2020 年的论文(Lewis 等)1

2. 主走查:同一个问题,两种问法

书里用同一个 NBA 问题演示了 RAG 的机制反转。先看不带检索的问法—— 这就是上一章说的「微调灌事实」:把「Denver Nuggets are the 2023 NBA champions」 做成训练样本喂给模型,指望它记进权重2

再看带检索的问法,这是本章的主走查3:

第 1 步 用户只输入:「Who won the 2023 NBA championship?」

第 2 步 系统在幕后拿这个问题去外部知识库检索,
捞回相关材料:"Denver Nuggets are the 2023 NBA champions
with a 4:1 victory over the Miami Heat"

第 3 步 按 prompt 模板拼装:
「Based on the provided context: {context}
Answer the following question: {question}」
填进去,连材料带问题一起发给 LLM

第 4 步 LLM 回答:"The Denver Nuggets won the 2023 NBA championship."
——答案不是从权重里「想起」的,是从眼前的材料里「读出」的

第 3 步那个模板是整套机制的接合口:{context} 是检索结果,{question} 是用户输入, 两个槽一填,发出去。用户的体验没变——他只问了问题, 检索发生在幕后,不需要用户动手4

为什么这样就减轻幻觉?因为模型的注意力(它此刻盯着输入的哪一部分)从「回忆」变成了「阅读」: 给定材料再答题,是它被微调强化过的强项;无中生有,才是上一章说的那个结构性风险。 书里补了一个大家都见过的实例:ChatGPT 的联网搜索就是 RAG—— 模型觉得需要新信息时,把关键词交给搜索引擎,拿结果当材料再作答5

3. 为什么「检索 + 阅读」比「继续训练」划算

把两条路线放在一起看,账目很清楚:

继续训练(微调)RAG
知识更新重训一轮更新数据库即可
事实可溯无法指出「这条知识在哪份材料里」答案能挂回检索到的材料
上一章的证据互相矛盾,生产环境风险大不动模型,零训练风险

生成器一侧还有个隐性好处,书里在第 2 章会展开,这里先立个牌子: 既然知识都在检索侧,模型可以换小一号的——小模型更快、更便宜, 而且它只负责「读懂材料、组织语言」,不负责「记得全世界」6

4. 核心立论:常规 RAG 只装文本,装不下「结构」

到这里为止都是常规 RAG。书的正题从这里开始——检索到的材料该怎么存?

绝大多数 RAG 实现的答案是:存非结构化文本(切好的段落), 检索时按语义(意思)相似度捞回几段。上一章的四个毛病确实被压住了大半, 但书里指出这一类实现漏掉了一整类问题。

走查:两种数据,两类问题

拿书里的例子。你有一批客户支持对话记录(非结构化), 也有产品目录和用户数据库(结构化)。用户问「我最近买的笔记本」—— 要把这句话挂到具体型号、购买日期、保修状态上, 就得让文本和结构化记录接上头7

反过来再看一个纯结构化的问题:「现在有多少任务已完成?」 这个问题在非结构化文本里没有答案可言——答案散落在所有文档里, 要靠逐篇阅读、人肉数数才能凑出来;而结构化数据里它就是一条查询8

问题类型 非结构化文本(段落) 结构化数据(记录+关系)
───────────────── ────────────────── ─────────────────
「这篇文章说什么」 ✅ 语义检索的强项 ❌ 材料里没有
「有多少个/哪些满足…」 ❌ 要读完全部再数 ✅ 一条精确查询
「A 和 B 什么关系」 ⚠️ 撞运气 ✅ 沿关系走

图说:两类数据各管一摊;RAG 想什么问题都接得住,就得两类都装。

知识图谱:一个库装两类数据

书里给出的答案是知识图谱:用节点表示概念和实体(人、公司、合同), 用关系把节点连起来,节点和关系都能带属性(键值对)9

它的关键性质不是「能画成图」,而是一个库里同时放两种形态的信息: 一篇文章的正文(非结构化,还能带语义向量)和「某人是某公司 CEO、 某员工从某日起入职、某任务状态是已完成」这类记录(结构化),直接相连10

书里用一张图演示了这种混合存储:文章节点通过「提到(MENTIONS)」连到公司节点, 公司节点用「HAS_CEO」连到人,人用「EMPLOYEE」「ASSIGNED_TO」连到任务—— 同一个数据库里,「Sam Altman 是 OpenAI 的 CEO」和一篇关于新模型的文章并存11

这一混合带来两个别处拿不到的能力,是全书的立足点12:

  1. 精确操作:过滤、计数、聚合在结构化部分上是普通查询;
  2. 互相挂接:文本里提到的实体可以链到图上的节点—— 检索到结构化结果时能带出源文段落,读到段落时能跳到结构记录。

判断(我们的,不是书里的): 「GraphRAG」这个词听起来像一个新架构, 实际的增量只有一层——把 RAG 的知识库从「一堆段落」换成「段落+实体+关系」。 第 03-04 章讲怎么检索段落,第 05 章讲怎么查结构,第 07 章讲怎么把文本变成结构, 第 08-10 章讲微软把这条路走到的最远形态。全书的分量都在「怎么建、怎么查、怎么验」上, 而不在「要不要」上。 如果错,会错在: 如果有人把 GraphRAG 理解成必须整体替换现有 RAG 系统, 那就高估了它的侵入性——书里的方案是增量式的:先有非结构化层,再逐步长出结构。

5. 边界与局限

  • 本章只立论,不给证据。 「知识图谱适合大多数 RAG 应用」是作者的立场表述9, 它的支撑在后面章节的工程演示里,本章没有对比实验数据;
  • 「图数据库 vs 向量库(专门存这些数串、按距离查的数据库)」不是本章的战场。书里选择图数据库承载知识图谱, 但前面也说过任何有向量检索能力的库都行——工具选择在第 12 章展开;
  • RAG 不消灭幻觉,只压低。书里第一章开头就写了「显著减少但不会完全消除」13;
  • 书里承认 LLM 还有别的毛病(偏见、提示注入、输出不稳定),本书一概不处理14

6. 可带走的

  1. RAG = 先检索、再带材料生成,本质是把「答对」的责任从权重挪到输入;
  2. prompt 模板两个槽:{context} 装检索结果,{question} 装用户输入,检索在幕后自动发生;
  3. ChatGPT 的联网搜索就是 RAG 的公开可见形态;
  4. 非结构化文本答不了过滤/计数/聚合,这类问题需要结构化数据;
  5. 知识图谱 = 节点 + 关系 + 属性,关键性质是一个库同时装文本和记录,而且两者相连;
  6. GraphRAG 的增量是「知识库的形态」,不是推翻 RAG;
  7. 读了本章,你应该能向别人解释:为什么企业 RAG 迟早撞上「我们有多少份…」这类问题。

7. 原文地图

主题原书章原文位置
RAG 定义、两阶段1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:320(搜「Retrieval-augmented generation」) · text/10-ch01-1-improving-llm-accuracy.txt:329(搜「two main stages」)
Lewis 2020 出处1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:325(搜「Lewis et al」)
微调样本(Denver Nuggets)1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:297(搜「NBA」)
RAG 走查四步1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:369(搜「Provided context」) · text/10-ch01-1-improving-llm-accuracy.txt:396(搜「Based on the provided context」)
检索在幕后1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:407(搜「Behind the scenes」)
ChatGPT 联网搜索即 RAG1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:414(搜「mainstream popularity」) · text/10-ch01-1-improving-llm-accuracy.txt:433(搜「Web Search」)
「我们主张知识图谱适合」1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:439(搜「we argue that knowledge」)
节点+关系定义1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:441(搜「nodes to represent」)
一个库装两类数据1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:470(搜「highly versatile」)
客服例:文本挂记录1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:27(搜「customer support」)
过滤计数聚合需要结构1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:490(搜「filtering, counting」)
文本↔结构互相挂接1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:496(搜「explicit connections」)
RAG「显著减少但不消灭」幻觉1 Improving LLM accuracytext/10-ch01-1-improving-llm-accuracy.txt:18(搜「significantly reduce」)
小模型也够用(第 2 章展开)2 Vector similarity search and hybrid searchtext/11-ch02-2-vector-similarity-search-and-hybrid-search.txt:111(搜「as large」)

Footnotes

  1. 出处:「1 Improving LLM accuracy」第 325 段(text/10-ch01-1-improving-llm-accuracy.txt:325,搜「Lewis et al」)。即 RAG 的原始论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》,书末参考文献表列为 2021 年、arXiv:2005.11401(出处:「references」第 16 段,text/22-fm-references.txt:16,搜「Knowledge-Intensive」)。

  2. 出处:「1 Improving LLM accuracy」第 297 段(text/10-ch01-1-improving-llm-accuracy.txt:297,搜「NBA」)与第 305 段(text/10-ch01-1-improving-llm-accuracy.txt:305,搜「question–answer」)。图 1.9:输入提示问 2023 年 NBA 总冠军,期望输出是 Denver Nuggets;理论是模型把这个事实纳入它的语言表示。

  3. 出处:「1 Improving LLM accuracy」第 369 段(text/10-ch01-1-improving-llm-accuracy.txt:369,搜「Provided context」)。图 1.11:提供的上下文写明 Denver Nuggets 以 4:1 击败 Miami Heat;用户问题与生成答案同图。

  4. 出处:「1 Improving LLM accuracy」第 407 段(text/10-ch01-1-improving-llm-accuracy.txt:407,搜「Behind the scenes」)。原文:检索过程完全自动,除原始问题外不需要用户额外输入。

  5. 出处:「1 Improving LLM accuracy」第 414 段(text/10-ch01-1-improving-llm-accuracy.txt:414,搜「mainstream popularity」)与第 433 段(text/10-ch01-1-improving-llm-accuracy.txt:433,搜「Web Search」)。原文:模型决定需要补充信息时,把「2023 NBA championship winner」这样的关键词交给 Web Search,再基于检索结果作答;具体实现未公开。

  6. 出处:「2 Vector similarity search and hybrid search」第 111 段(text/11-ch02-2-vector-similarity-search-and-hybrid-search.txt:111,搜「as large」)。原文:RAG 相对微调的好处之一是模型不必那么大,因为检索器已经找到了相关信息。

  7. 出处:「1 Improving LLM accuracy」第 27 段(text/10-ch01-1-improving-llm-accuracy.txt:27,搜「customer support」)。原文:客户支持对话是非结构化文本,产品目录/用户数据库是结构化的;桥接意味着把「我最近买的笔记本」连到具体型号、购买日期、保修状态。

  8. 出处:「1 Improving LLM accuracy」第 490 段(text/10-ch01-1-improving-llm-accuracy.txt:490,搜「filtering, counting」)。原文:没有结构化数据,这类查询就需要穷举式的文本解析与推断,计算昂贵且常常不精确。

  9. 出处:「1 Improving LLM accuracy」第 439 段(text/10-ch01-1-improving-llm-accuracy.txt:439,搜「we argue that knowledge」)与第 441 段(text/10-ch01-1-improving-llm-accuracy.txt:441,搜「nodes to represent」)。原文:虽然数据库选项很多,作者主张知识图谱与图数据库特别适合大多数 RAG 应用;知识图谱是用节点表示概念与实体、用关系连接它们的数据结构。 2

  10. 出处:「1 Improving LLM accuracy」第 470 段(text/10-ch01-1-improving-llm-accuracy.txt:470,搜「highly versatile」)。原文:知识图谱既能存结构化信息(员工详情、任务状态、公司层级),也能存非结构化信息(文章正文)。

  11. 出处:「1 Improving LLM accuracy」第 476 段(text/10-ch01-1-improving-llm-accuracy.txt:476,搜「Sam Altman」)。图 1.14 及其解说:文章节点 MENTIONS 公司,HAS_CEO 连 Sam Altman,EMPLOYEE/ASSIGNED_TO 连任务,同一个数据库。

  12. 出处:「1 Improving LLM accuracy」第 490 段(text/10-ch01-1-improving-llm-accuracy.txt:490,搜「filtering, counting」)与第 496 段(text/10-ch01-1-improving-llm-accuracy.txt:496,搜「explicit connections」)。原文:结构化支持精确过滤/计数/聚合;非结构与结构化数据间的显式连接解锁「文本实体链到图节点」「结构化结果带源文段落」等检索策略。

  13. 出处:「1 Improving LLM accuracy」第 18 段(text/10-ch01-1-improving-llm-accuracy.txt:18,搜「significantly reduce」)。原文:运行时从可信来源取数,RAG 能显著减少(尽管不能完全消除)幻觉。

  14. 出处:「1 Improving LLM accuracy」第 233 段(text/10-ch01-1-improving-llm-accuracy.txt:233,搜「other limitations」)。