参考资料
一个问题穿过 RAG 系统
RAG Formation 的课程内容已完成;这份资料可用于自主学习和练习。
核心路径
HTTP 请求 → 路由 → 服务 → 检索 → 组装上下文 → 引用 → 生成 → 响应
调用地图
| 阶段 | 文件 / 函数 | 职责 |
|---|---|---|
| 1. HTTP 入口 | routes/qa.pyask_question() | 接收 `QuestionRequest` 并将其传递给 QA 服务。 |
| 2. 编排 | qa_service.pyanswer_question_internal() | 检查输入,解析服务和配置,并协调请求。 |
| 3. 检索 | search.py | 搜索 Qdrant 片段、Qdrant 摘要、Meilisearch 和 LightRAG。 |
| 4. 上下文 | utils.pybuild_context() | 在各渠道之间分配预算,并保留最终到达模型的项目。 |
| 5. 引用 | utils.pysources_from_items() | 根据在上下文组装后仍然存活的证据构建来源列表。 |
| 6. 提示词 | utils.pybuild_prompt() | 告诉模型使用上下文、引用来源,并拒绝没有证据支持的答案。 |
| 7. 生成 | qa_service.pycompletion.generate() | 根据问题和组装后的上下文生成最终答案。 |
| 8. 响应 | models.pyAnswerResponse | 返回答案、来源和诊断统计。 |
调试时检查什么
- 生成前:检查 `/api/v1/search` 和 `context_items_included`。
- 引用时:将 `sources` 与实际进入上下文的项目进行比较。
- 生成后:将答案同时与证据和预期答案进行比较。
- 延迟方面:检查全部四个检索调用,尤其是 LightRAG,以及最后的完成调用。
调试时不要只看最终答案。先检查检索结果、实际进入上下文的项目和引用来源,再检查生成的答案。