跳到主要内容
术语表

检索增强生成(RAG)

定义

检索增强生成是一种技术:从一批数据里检索出段落,作为上下文交给语言模型,让回答依据这些数据,而不只依据模型训练时学到的东西。

又称
RAG、检索增强回答
擅长
答案就在某一段里的查找
不擅长
证据分散在整本书里的问题

它怎样工作​

流程是:把资料切成碎片,做 embedding,把问题也做 embedding,取得分最高的碎片,再根据它们生成回答。

这非常适合查找。「这份合同的退款期限是多久?」答案就在某一段里,检索能找到那一段。

它在哪里失灵​

当问题不再是查找时,它会以一种具体而可预测的方式变差:

  • 证据分散在整份文档里。 作者在哪里改变了立场? 没有哪个碎片包含这个变化;它只有跨章节才看得出来。检索返回的是和问题最相似的碎片,这和「合起来能回答问题的碎片」不是一回事。
  • 缺席。 这篇论文明确没有主张什么? 没有东西可以 embedding。搜索不存在的东西,返回的只会是存在的东西。
  • 资料之间的分歧。 检索追求的是和问题相似,所以它很可能返回五段意见一致的话、一段异议都没有——而五段一致的话汇成的顺滑摘要,读起来就和共识一模一样。
  • 结构。 切块毁掉了让一本书能被导航的东西。一堆段落大小的碎片没有章节,没有论证顺序,没有「前面」和「后面」。
作者在哪里改变了立场?
第 1 章
第 4 章
第 7 章
第 11 章
被检索到——与问题最相似 真正需要——从没给模型看过
回答流畅、笃定,引用了第 1 章和第 7 章——对第 4 章和第 11 章只字未提。回答里没有任何地方说明漏掉了什么。

问题需要的是第 4 章和第 11 章。检索返回的是看起来最像问题的内容——而回答里看不出它从没见过什么。

令人不安的是,这些失败没有一个会自己报出来。检索漏了和检索中了,产出的回答一样笃定,回答里也没有任何地方说明有三段相关的文字从没给模型看过。

检索质量可以改进——关键词加语义的混合匹配、重排、更大的重叠窗口——这些都有帮助。但都改变不了一个事实:模型是在一份它没有选择、你也看不到的样本上作答。

MindMax 怎样处理​

不把检索当默认做法。一份文档如果装得进写明的阅读预算,就把全文放进上下文,完全不检索——见全文优先。不跑 embedding,不建向量库,打开文件夹和向它提问之间也没有建索引的等待。

对确实太大的材料,先用结构,再谈相似度:先读章节地图,再把和问题相关的章节完整读完——就像人使用目录那样——而不是抽取几个得分高的碎片。找某一句特定的话被当作查找,用关键词搜索来做,因为精确的字眼正是相似度会模糊掉的东西。

这就是常说的无向量 RAG:由模型通过对结构的推理来决定读什么,而不是由一个相似度分数替它决定。

底下依然有搜索,因为一千份文档永远装不进上下文窗口。变化在于:搜索负责定位要读什么,而不是替代阅读;它产出的每条说法,都带着一句你一点就能核对的引文。

你加入的文档最先读;文件夹其余部分只在问题需要时才搜索。

常见问题

为什么 RAG 在长文档里会漏信息?

因为它只凭和问题最相似的碎片作答。当证据分散在各章、本身是一种缺席,或者是资料之间的分歧时,真正要紧的碎片往往并不是最相似的那些——而回答里看不出它们被漏掉了。

上下文窗口已经这么大了,还需要 RAG 吗?

对大批资料,需要:几千份文档装不进任何窗口。对一篇论文或一份报告,常常不需要——一份装得进合理阅读预算的文档可以直接整篇读,这样就彻底没有检索遗漏。

MindMax 用 RAG 吗?

不把它当默认做法。装得进阅读预算的文档整篇读;更长的按章节地图导航、一节一节地读。搜索用来定位要读的文档和章节,每条说法都带着一句对照原文核对过的引文。