阶段二:RAG + 评估体系
第 4-5 周 | 核心目标:SBTI 人格深度分析(RAG + 付费功能)
⚠️ v5 变更:GraphRAG 移至综合项目阶段。本阶段专注纯向量 RAG + Hybrid Search + Reranker,跑通基线。向量数据库复用 pgvector(MemMachine 已部署)。为后续 Fine-tuning 和 GraphRAG 升级打基础。
📊 可观测性提醒:本阶段所有 LLM 调用都应接上 Langfuse trace(阶段四会详细讲,但从现在开始埋点)
Step 1:本阶段资料
| 资料类型 | 具体资料 | 用途 | |----------|---------|------| | 视频课程 | 吴恩达 DeepLearning.AI RAG 短课 | 2-3 小时建立 RAG 演进全景图 | | 文章 | 《Advanced RAG Pipeline Complete Guide 2025》by Youngju | 实操导向,覆盖 chunking/hybrid/rerank | | 文章 | HyDE(Hypothetical Document Embedding)论文/博客 | Query 优化:先生成假设性文档再检索 | | 文章 | Step-back Prompting(Google DeepMind) | Query 优化:后退到更高层次问题再检索 | | 文档 | RAGAS 官方文档和 GitHub | 评估框架核心指标 | | 文档 | LlamaIndex RAG 文档 | 理论参考,不用框架 | | 工具 | DeepEval(Confident AI) | pytest 兼容的评估框架 | | 实践 | MemMachine 现有 RAG 管线(pgvector) | RAG 实验场,向量数据库直接复用 |
Step 2:本阶段心智模型
心智模型 1:RAG 演进驱动力模型
- 核心思想:每个 RAG 阶段都是为了解决前一阶段的痛点。Naive RAG(检索差)→ Advanced RAG(加 chunking/hybrid/rerank)→ Modular RAG(可插拔组件)→ Agentic RAG(Agent 自主决策检索策略)
- 关键变量:检索精度 = chunking 质量 × hybrid search × reranker 精度(乘积关系,任何一环薄弱都拖后腿)
- 应用场景:企业知识库问答、文档检索、人格理论库检索
- 局限性:RAG 只能回答"已有知识"的问题,不能做推理创造
- 相关资料:吴恩达 RAG 短课、LlamaIndex RAG 文档
心智模型 2:RAGAS 四指标评估模型
- 核心思想:评估 RAG 不能只看"回答好不好",要拆开看检索和生成两个环节
- 关键变量:Faithfulness ≥ 0.85(不幻觉)、Answer Relevancy ≥ 0.90(答到点上)、Context Precision ≥ 0.80(检索精准)、Context Recall ≥ 0.75(检索全面)
- 应用场景:任何 RAG 系统的上线前验证和上线后监控
- 局限性:LLM-as-Judge 有位置偏见和自我偏好;需要 golden dataset 才能跑
- 相关资料:RAGAS 官方文档
Step 3:本阶段分歧点
分歧 1:向量搜索 vs BM25 谁更重要?
- A 方(向量派):语义检索是未来,BM25 是 legacy
- B 方(混合派):BM25 在精确匹配(产品名、专有名词)上远超向量搜索
- 实践倾向:SBTI 人格理论包含大量专有术语(如"外倾直觉"),Hybrid Search + RRF 是标配
- 为什么重要:纯向量搜索会漏掉精确匹配的结果,纯 BM25 不懂语义
分歧 2:LLM-as-Judge 可信吗?
- A 方(认可派):GPT-4o 级别的模型当裁判已经足够可靠,成本低
- B 方(怀疑派):LLM 有位置偏见、长度偏见、自我偏好,不能作为唯一裁判
- 实践倾向:LLM-as-Judge 适合快速迭代评估,但 SBTI 深度报告的质量需要人工抽检
- 为什么重要:如果裁判本身不可信,所有评估结果都是幻觉
Step 4:实操项目(SBTI 人格深度分析)
项目背景:SBTI 小程序已有基础人格测试功能,需要增加"深度分析报告"作为付费功能。用户看完基础结果后,看激励视频解锁深度报告。
技术方案:用 RAG 检索 16 型人格理论库,生成个性化深度报告,包含人格优势分析、职业建议、人际关系指南、成长方向。
向量数据库:复用 MemMachine 已部署的 pgvector(零额外运维成本,已熟悉)。不引入新向量库,把精力花在 RAG 管线设计上。
- [ ] 收集整理 16 型人格理论资料,构建知识库
- [ ] 实现语义分块,针对人格理论文档特点设计分块策略
- [ ] 加上 BM25 混合搜索,用 RRF 合并排序
- [ ] 接入 BGE Reranker,对比 rerank 前后的检索精度
- [ ] 用 LlamaIndex 跑通一次 RAG pipeline,和自建 pgvector 管线对比,了解它封装了什么
- [ ] 实现 Query Rewriting(含 HyDE),根据用户测试结果生成最优检索 query
- [ ] 构建 50 条 golden QA pairs(覆盖 16 种人格类型 × 常见问题类型)
- [ ] 用 RAGAS 跑基线评估,记录四个核心指标
- [ ] 逐项优化,每次改动后重新跑评估,量化提升
- [ ] 写一键评估脚本,输出完整评估报告
- [ ] 对接 SBTI 小程序后端,实现深度报告生成接口
- [ ] 实现热门人格类型缓存策略(降低重复请求成本)
Step 4.5:💬 AI 教练对话(做任务时用)
Prompt 1:理解问题(开始 RAG 设计时)
我要给 SBTI 小程序做"人格深度分析"功能,用 RAG 检索 16 型人格理论库生成报告。
请帮我分析:
1. 人格理论文档的分块策略应该怎么设计?(术语密集、概念关联强)
2. 语义分块 vs 固定长度分块,哪个更适合这个场景?
3. chunk size 和 overlap 怎么设?
不要直接给方案,引导我根据数据特点做决策。
Prompt 2:评估体系设计(构建 golden dataset 时)
我要构建 50 条 golden QA pairs 来评估 SBTI 人格分析的 RAG 质量。
请帮我设计:
1. golden QA 应该覆盖哪些类型的问题?(人格优势、职业建议、关系指南等)
2. 每种人格类型至少需要多少条 QA?
3. 怎么保证标注质量?
Prompt 3:Debug(检索效果不理想时)
SBTI 人格分析的 RAG 检索结果不理想,top-5 里只有 2 条相关。
RAGAS 评估:Faithfulness 0.72(目标 0.85),Context Recall 0.61(目标 0.75)。
请帮我诊断:
1. 是 chunking 问题?检索问题?还是 query 问题?
2. 应该先优化 Faithfulness 还是 Context Recall?为什么?
3. 给我排查步骤,从最可能的原因开始
不要直接给代码,只做诊断。
Prompt 4:模型提取(完成项目后)
我刚完成了 SBTI 人格深度分析的 RAG 系统。
请帮我归纳:
1. 什么场景下 BM25 比向量搜索好?什么场景相反?
2. RAGAS 四个指标之间的关系是什么?优化一个会影响其他吗?
3. 如果只能选一个指标做日常监控,选哪个?为什么?
让我先总结,你再补充。
Step 5:关 AI 自测
关闭所有资料和 AI,纯靠记忆回答。
- RAG 演进的每个阶段解决了什么问题?SBTI 人格分析适合哪一阶段?
- 检索精度 = chunking × hybrid × rerank,为什么说它们是乘积关系而不是加法?
- RAGAS 的 Faithfulness 和 Context Precision 有什么区别?什么情况下一个高一个低?
- 如果 Context Recall 从 0.61 提升到 0.75,Faithfulness 可能会怎么变?为什么?
评分:每题 25 分,≥80 分通过。
Step 6:费曼输出 + 信心校准
一句话版本:用 1 句话说清楚"为什么 RAG + 评估体系是 SBTI 深度分析的基础"。 三分钟版本:给不懂技术的产品经理讲清楚 RAG 怎么让 SBTI 报告更个性化、更准确。
信心自评:___/10 分 我最可能在什么地方翻车?
工程化要求
- [ ] 检索质量评估(Golden dataset + RAGAS 四指标,每次优化后跑评估量化提升)
- [ ] 缓存策略(热门人格类型缓存,减少重复 LLM 调用)
- [ ] 生成超时控制(报告生成不超过 10s,超时返回精简版)
- [ ] 日志记录(检索 query → 检索结果 → 生成 prompt → 输出报告)
- [ ] 成本追踪(每次报告生成的 token 消耗)
验证指标
| 指标 | 目标值 | 测量方式 | |------|--------|----------| | 深度报告解锁率 | > 30% | 小程序埋点统计 | | 用户分享率 | > 10% | 小程序埋点统计 | | RAGAS Faithfulness | ≥ 0.85 | 自动评估脚本 | | RAGAS Answer Relevancy | ≥ 0.90 | 自动评估脚本 | | 单次报告生成成本 | < ¥0.5 | token 消耗追踪 |