RAG 链路、指标与故障定位
把“回答不好”拆成可观察、可度量、可优化的工程问题。
最小链路
text
文档 → 解析 → 切分 → embedding → 向量库
问题 → embedding → 召回 → 过滤/重排 → prompt → 生成 → 引用答案离线链路负责把知识变成可检索记录;在线链路负责从问题找到证据并约束生成。向量数据库主要承担向量存储、相似搜索和元数据过滤。
召回的到底是什么
默认情况下,召回单元是写入数据库的 chunk 记录。top_k=5 表示最多返回 5 个候选 chunk,而不是返回 5 篇完整文档。每个 chunk 通常包含:
text
id + text + embedding + metadata如果一个章节被存成一个 chunk,召回时会返回整个章节;如果章节被切成 5 个 chunk,查询可能只返回其中相关的 1~3 个。应用也可以通过 parent_id、document_id 把命中的小 chunk 扩展为父章节或文档的一部分,但这属于上下文组装策略。
完整解释见 第 3 课:从文档到答案。
术语速查
| 术语 | 紧凑定义 | 先观察什么 |
|---|---|---|
| Embedding | 把文本映射为可比较的数值向量。 | 任务域相似文本是否靠近。 |
| Top-k | 一次召回的候选数量。 | k 增大后 Recall@k 是否提升。 |
| ANN | 以少量精度换取更低查询成本的近似最近邻搜索。 | 召回率、延迟、内存。 |
| Reranker | 对初召回候选做更精细的相关性排序。 | 重排后前几条是否更相关。 |
| Groundedness | 答案中的关键断言是否能被检索证据支持。 | 断言与引用的对应关系。 |
故障定位顺序
- **没找到:**检查文档解析、切分、embedding 和过滤条件。
- **找到了但排位低:**检查 top-k、距离度量、索引参数和 reranker。
- **证据相关但答错:**检查上下文组装、提示词、模型和引用约束。
- **偶发变慢:**拆分 embedding、向量搜索、重排、生成各阶段延迟。