RAG 检索增强生成

RAG 检索增强生成:构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答,以架构、轨迹与故障重放完成工程验收。

学习目标

  • 能解释“RAG 检索增强生成”如何构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答
  • 能区分RAG、embedding、chunk、召回、重排,并标出控制权、状态和副作用边界
  • 能冻结输入与版本,沿以下证据定位首个分叉:文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言
  • 能注入“检索命中高相似但过期片段,生成器混入参数记忆并伪造了不存在的引用”,完成阻断、恢复、复位和同输入重放

来源、课程身份与适用边界

“RAG 检索增强生成”以Anthropic 公开全文《Building effective agents》建立工程总纲,并用RAG 原始论文核对本章机制。

这不是一本名为《AI Agent 开发实战》的官方出版物,也不存在官方十四章目录。平台把公开工程文章、官方开发文档和原始论文重组为 14 个工程单元;下列 112 个节点是站内课程地图。正文、代码、图表、实验与练习均为独立教学重写,模型、API、协议或安全边界变化时必须重新验证。

本单元的八个工程坐标

  • RAG 检索增强生成:这是“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的第 1 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 闭卷凭记忆瞎说,不如开卷先翻资料再答:这是“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的第 2 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 为什么要 RAG:把「闭卷」改成「开卷」:这是“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的第 3 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • Embedding 与向量:把「意思」变成一串数字:这是“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的第 4 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • Chunk 切分:长文档先切小块,再各自向量化:这是“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的第 5 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 检索 + 拼接生成:找到相关段落,拼进提示让模型照着答:这是“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的第 6 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 动手一:拖一拖块大小和重叠,看文档怎么被切:这是“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的第 7 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 动手二:换个查询,看检索按「意思」命中哪几个:这是“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的第 8 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。

术语与运行合同

本页不变量是:回答中的可验证事实必须由当前授权语料支持,引用能定位到稳定文档版本和片段。任何“成功”结论都要保存文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言;模型自评、最终措辞和单次 demo 都不能替代环境事实。

工程机制与反证实验

切块决定可检索单位

块过小丢上下文,过大稀释相关性并浪费 token;参数应按文档结构评测。

动手验证:改变块大小和重叠,比较证据完整率与冗余。

向量召回不是事实判定

相似度高的片段可能过期、越权或答非所问,需要过滤和重排。

动手验证:混入高相似旧版本,确认版本过滤先于生成。

检索和生成分开测

答案错可能来自没召回,也可能来自有证据却没使用,单一总分无法定位。

动手验证:分别计算 recall@k、引用精度和答案正确率。

引用必须可定位

展示文档名不够,应保存版本、片段和字符或段落范围。

动手验证:更新文档后验证旧回答仍能指向历史版本。

从架构到故障重放

分步1 / 3

1. 架构复杂度实验

在“RAG 检索增强生成”中切换简单基线、受控工作流和自主循环,先判断“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”是否真的需要更高自主性,再比较延迟、成本、可观测性与风险。

Architecture decision laboratory

RAG 检索增强生成

构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答

复杂度档位

不变量:回答中的可验证事实必须由当前授权语料支持,引用能定位到稳定文档版本和片段

受控工作流:只激活能够由收益证明的阶段1解析切块2建立索引3召回重排4带证据生成5引用验收蓝色表示当前方案承担的责任;虚线阶段仍留在系统边界外。关键证据:文档版本、chun…
自主性46
延迟52
成本48
可观测78

最小可运行切片

const queryVector = await embed(query);
const candidates = await index.search(queryVector, { tenantId, k: 20 });
const filtered = candidates.filter(isCurrentAndAuthorized);
const passages = await rerank(query, filtered, 5);
const answer = await generateGrounded(query, passages);
assertEveryClaimHasCitation(answer, passages);
return answer;

切片只表达“构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答”的核心合同。生产实现还要补齐持久化、超时、密钥隔离、结构化日志、幂等和批量评测;如果不能重新取得文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言,代码跑通也不能证明机制正确。

练习与答案

练习

问题 1:最小证明。 怎样用正常、边界和单故障三类样本证明“回答中的可验证事实必须由当前授权语料支持,引用能定位到稳定文档版本和片段”?

问题 2:节点覆盖。 RAG 检索增强生成、闭卷凭记忆瞎说,不如开卷先翻资料再答、为什么要 RAG:把「闭卷」改成「开卷」、Embedding 与向量:把「意思」变成一串数字、Chunk 切分:长文档先切小块,再各自向量化、检索 + 拼接生成:找到相关段落,拼进提示让模型照着答、动手一:拖一拖块大小和重叠,看文档怎么被切、动手二:换个查询,看检索按「意思」命中哪几个如何从目录词变成工程证据?

问题 3:恢复验收。 怎样证明“检索命中高相似但过期片段,生成器混入参数记忆并伪造了不存在的引用”已经修复?

本章回顾

  • “RAG 检索增强生成”解决的是构建解析、切块、索引、检索、重排、生成和引用闭环,并分开评估检索与回答。
  • 核心不变量是回答中的可验证事实必须由当前授权语料支持,引用能定位到稳定文档版本和片段。
  • 首要反例是检索命中高相似但过期片段,生成器混入参数记忆并伪造了不存在的引用。
  • 最小证据包包含文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言。

名词解释

本章出现的专业名词,用大白话再讲一遍。

RAG

检索外部语料并将相关证据提供给生成模型的方法。在“RAG 检索增强生成”中必须能按以下证据重新定位:文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言。

embedding

把文本映射为可比较的向量表示。在“RAG 检索增强生成”中必须能按以下证据重新定位:文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言。

chunk

从原文切出的可索引片段。在“RAG 检索增强生成”中必须能按以下证据重新定位:文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言。

召回

从索引取得候选相关片段的过程。在“RAG 检索增强生成”中必须能按以下证据重新定位:文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言。

重排

用更精细模型或规则重新排序候选。在“RAG 检索增强生成”中必须能按以下证据重新定位:文档版本、chunk_id、切块参数、查询、召回集、重排分数、引用、答案与事实断言。

阅读导航

← 规划与任务分解 · 上下文工程与压缩 →

讨论

评论区加载中…