独立课程
在这里学习完整课程并检验你的理解。
RAG Formation 的 16 节课程内容已完成。本页包含完整课程内容、本地参考资料和可直接在浏览器中完成的即时练习。
本课的具体收获
你会比较两种来源窗口配置,并得出一个有边界、由证据支持的分块假设。
观看讲解视频
1 · 最小的实用模型
- 文本块/窗口:一段有明确边界的来源文本。处理得当时,它会把事实、标题和文档身份放在一起;处理不当时,它们就会被拆开。
- 重叠:跨过边界、重复到下一个窗口中的文本。它可以挽救跨越边界的事实,但重叠过多,最终只会得到近似重复的证据。
- 分块大小是一个真实的设计选择,不是统一规格:Qdrant 和 Meilisearch 都以约 500 token 为单位建立索引,而 LightRAG 有意采用约 1200 token——更大的窗口能让它的实体抽取 LLM 在每次调用中获得更多上下文,也就是调用次数更少、成本更低,代价是实体边界更粗糙。不存在唯一“正确”的窗口大小;正确的大小取决于这个索引是用来做什么的。
- 证据与身份共现:本课使用的指标——一个来源窗口是否同时包含预期文档编号和所有必需事实词?
- 有边界的结论:来源窗口结果只能给出一个分块假设,不能更多。它不能证明线上索引检索或回答得更好。
主要阅读:LlamaIndex《句子窗口检索》。留意检索到的窗口如何恢复事实周围的局部上下文,同时保持来源身份可追踪。
2 · 运行一次受控的来源窗口实验
离线工具 chunk_lab.py 只读取两样东西:合成 Markdown 语料和 eval_set.yaml。它不会连接 Docker、读取密钥、调用 API,也不会重建索引。
cd demo
python3 chunk_lab.py --question q24 --profile chunk --output-dir reports/lesson-06-chunk-profile
python3 chunk_lab.py --question q24 --profile graph --output-dir reports/lesson-06-graph-profile
--profile chunk 和 --profile graph 是预设值,不是随意的数字——它们分别对应第 1 节里 Qdrant/Meilisearch 约 500 token、LightRAG 约 1200 token 的真实窗口大小,换算成了字符数。两种档位下重叠都固定为 200 个字符:唯一改变的是窗口大小。然后比较以下报告文件:
reports/lesson-06-chunk-profile/lesson-06-q24-chunks.md
reports/lesson-06-graph-profile/lesson-06-q24-chunks.md
这里的指标很简单:有多少个窗口、占多大比例,同时包含预期编号和每个 must_include 事实词。更高的数字可以支持分块假设,但它不是检索准确率。别指望 graph 档位的比例几乎必然更好看——足够大的窗口本来就能装下整份文档,这正是你该在结论里点明的权衡,而不是当成一场胜利。
3 · 检查三种问题形态
完成 q24 后,对 q30 和 q52 运行同样的实验。这三道题分别呈现不同的失败形态:版本修订查找、跨两个文档的答案,以及事实恢复目标。
| 问题 | 形态 | 预期来源 | 必需事实 | 检查内容 |
|---|---|---|---|---|
| q24 | 版本修订查找 | PR-QA-MRD-009 | 45 | V4 身份是否仍然与变更后的期限绑定? |
| q30 | 多跳 | PR-QA-MRD-001 + PR-QA-MRD-009 | 90 jours | 哪份来源携带事实,第二份来源是否仍然缺失? |
| q52 | 事实查找 | PR-EXM-MRD-014 | 8 heures | RTO 事实是否仍然与连续性计划身份绑定? |
4 · 记录改动前后的证据
| 问题 | 配置 | 共现数量 / 比例 | 观察到的边界影响 | 回归或成本 | 有边界的结论 |
|---|---|---|---|---|---|
| q24 | chunk 档位(约 500 token) | _____ | _____ | _____ | _____ |
| q24 | graph 档位(约 1200 token) | _____ | _____ | _____ | _____ |
| q30 或 q52 | 选择一组受控对比 | _____ | _____ | _____ | _____ |
填写这个句式:“用 ___ 档位(___ 个字符、重叠 ___ 个字符)时,___ / ___ 个窗口把必需事实和来源身份放在了一起。这支持 ___ 这个假设,但不能证明线上检索质量,也不代表窗口越大越好。下一步,我会权衡这一点和 LightRAG 真实的抽取成本,再重新建立索引,运行检索评估。”
5 · 检索练习
案例 A:窗口中出现了截止期限,却没有文档编号。哪个修复真正针对这个风险?
案例 B:增大重叠后,相邻窗口几乎重复了同一段文字。你应该在记录中写下什么风险?
案例 C:从 chunk 档位切换到 graph 档位后,代理指标上升了。诚实的下一步是什么?
企业场景连接
SOP 答案的质量往往取决于标题、版本、日期和例外是否一起出现。因此,分块是引用和合规质量的一部分,不是可以设置一次就忘记的导入细节。
6 · 交付物与下一步
- 保存受控 q24 对比产生的两份报告。
- 填写 q24 以及 q30 或 q52 其中一道题的证据表。
- 写下一条有边界的结论、一个回归风险,以及接下来要运行的重新索引加检索检查。
下一步:第 7 课将讲元数据、过滤器和访问边界。保留这份记录——它能帮助你判断检索问题是否其实发生在搜索后端之前。
如果报告、代理指标、边界影响,或者接下来要在线运行什么还有疑问,尽管问我。 这门课我就是你的老师。