独立课程
在这里学习完整课程并检验你的理解。
RAG Formation 的 16 节课程内容已完成。本页包含完整课程内容、本地参考资料和可直接在浏览器中完成的即时练习。
本课的具体收获
你会为一个多跳答案画出证据存活图,并提出一条有边界、站得住脚的上下文预算建议。
观看讲解视频
1 · 核心技能
选择 q30 或 q63,从检索找到的来源开始,一路跟踪到上下文组装,直到最终的提示词预算。
- 上下文组装:把后端结果转换成回答模型实际读取的文本。在这套系统里,这一步分四路通道运行——摘要、向量、全文和图谱——
build_context()会用最大最小公平算法,在一份以字符计量的预算中为每个有内容的通道分配份额。它会尽可能整条丢弃检索结果,报告哪些证据留了下来,并避免某一路被饿到零而另一路还有富余。摘要、向量和全文的每个结果最多 1,200 个字符;图谱上下文最多 6,000 个字符;合并后的max_context_chars默认是 32,000 个字符(可配置范围为 1,000–50,000)。 - 分块大小与上下文预算:前面关于索引的发现是另一件事:统一索引器对 Qdrant/Meilisearch/摘要使用 500 token 分块,对 LightRAG 使用 1,200 token 分块。这些是建索引时的 token 大小,不是回答模型使用的字符预算。把 500 改成 800 需要重新建索引;它本身不会改变
build_context()的回答上下文上限。 - 证据预算:你能负担的上下文上限,由字符数、token 数、延迟或成本决定。
- 来源存活:格式化和截断完成后,答案真正需要的证据是否仍然保留。描述旧做法的那段代码注释说得很直白:以前是固定顺序拼接,“决定谁能进上下文的是位置,不是相关性”——图谱这一块总是排在最后,所以永远是第一个被挤掉的。
- 这跟第 5 到 8 课走的不是同一条路:那几课用的
--mode retrieval调用的是/api/v1/search,没有任何融合,只是纯拼接。这一课用的--mode answer调用的是/api/v1/qa,才有真正按通道公平分配预算的逻辑。第 8 课学到的“没有融合”,不要搬到这一课来用——它在这里不适用。
2 · 运行证据闭环
cd demo
python3 eval.py run --mode answer --workspace meridian_demo --category multi_hop --tag lesson-09-context
对每个来源,去看逐题报告里的这几个字段,不要靠猜测已经渲染好的答案:
results[].answer.stats.context_chars_by_index——每个通道(summary/vector/fulltext/graph)真正进入提示词的字符数。results[].answer.stats.max_context_chars——配置的合并字符预算;当前 API 默认是32000,不要把它和建索引时的 chunk size 混为一谈。results[].answer.stats.context_items_included和.context_items_dropped——后者只有真被丢弃的内容才会出现;被丢弃的条目会按通道分别列出。results[].answer.stats.context_hard_truncated——正常应该不存在,或者是 false;一旦是 true,说明公平分配的兜底逻辑不得不从字符串中间硬切,而这本该是设计上永远不会发生的情况。results[].answer.sources和.source_hit.all——真正存活下来的引用,以及它们是否覆盖了所有预期来源。
如果来源在生成前被截断,模型就永远看不到它——检索阶段找到它并不算完成任务。多跳问题尤其要先看 context_chars_by_index.graph,再看 graph 有没有出现在 context_items_dropped 里——这能告诉你连接两个事实的证据到底有没有活着进入提示词,别急着断定是模型对已有证据推理得不好。
3 · 决策工作表
| 基线证据 | 一个假设/改动 | 指标 | 回归检查 | 有边界的结论 |
|---|---|---|---|---|
| _____ | _____ | _____ | _____ | _____ |
4 · 检索练习
问题:检索找到了你预期的所有来源,但其中一份在生成开始前被截断。实际失败发生在哪里?
企业场景连接
模型从未看到的证据,系统就无法引用。这正是可靠检索如何悄悄变成不完整答案,甚至变成幻觉的地方。
5 · 交付物与下一步
- 保存命令输出或汇总报告。
- 填写决策工作表。
- 写下一个失败案例,以及下一步要检查的内容。
交付物是一张多跳答案的证据存活图,以及一条有边界、可辩护的上下文预算建议。
下一步:第 10 课将讲如何让提示词只依据证据回答。
如果对证据、指标、失败案例或下一步实验有疑问,尽管继续问我。 这门课我就是你的老师。