Appearance
5.5 RAG·实战案例集
把前四节的招式(进阶检索、向量库、评估防幻觉、文档处理)落到三个真实场景。每个案例给:场景 → 架构 → 关键决策 → 落地步骤。
案例一:企业知识库客服
场景:电商/SaaS 客服,回答退款、会员、使用等政策性问题。要求准、可溯源、不能编。
架构
政策文档/FAQ ─建库─▶ 按结构分块 + 加上下文 → 百炼Embedding → pgvector
│
用户问题 → 查询改写(5.1) → 向量检索 + BM25(Hybrid) → Rerank → top3
→ "无依据不答+强制引用"Prompt → DeepSeek → 带[来源]的回答
→ 忠实度校验(5.3) 不过则兜底转人工关键决策
- 分块按 FAQ 的"一问一答"或政策的条目切,天然是完整意思单元
- 必须强制引用 + 无依据不答(客服编答案是事故)
- 检索不到 → 不硬答,回"这个问题我帮您转人工"
- 建评估集(真实客服历史问题),每次改动跑回归
落地步骤
- 收集 FAQ/政策 → 按条目分块、加上下文(5.4)→ 入 pgvector(5.2)
- 检索加查询改写 + Hybrid + Rerank(5.1)
- 生成用强制引用 Prompt(5.3)
- 加忠实度 Guardrail + 转人工兜底
- 用历史问题建评估集,盯 Recall@k 和忠实度 PASS 率
案例二:代码库问答
场景:新人问"支付逻辑在哪""怎么加一个接口",让 AI 基于本仓库代码回答。
架构
代码仓库 ─建库─▶ 按函数/类/文件切块 + 元数据(路径/语言/符号名)
→ Embedding → 向量库
查询 → 检索(代码+注释+文档混合) → 拼上文件路径 → DeepSeek 解释/定位关键决策
- 分块按代码结构切(函数、类、文件),别按固定字符数从函数中间切断
- 元数据带上文件路径、函数名、语言——回答能精确指到
src/pay/refund.ts:42 - README、注释、设计文档也一起入库("为什么这么写"往往在文档里)
- 大改动场景,结合 4.x Claude Code + MCP 直接读真实文件,比纯 RAG 更准(RAG 适合"定位/概览",精确改代码交给能读文件的 Agent)
落地步骤
- 遍历仓库,按文件/函数切块(可借助语法解析),带路径元数据入库
- 检索时把代码块和相关文档一起召回
- Prompt 里要求"指出具体文件和行号,不确定就说去看哪个文件"
- 增量更新:CI 里代码变更后只重嵌入改动的文件
案例三:合同 / 长文档助手
场景:法务/业务问"这份合同的违约责任是什么""付款周期多长",文档是几十页带条款编号和表格的 PDF。
架构
长文档PDF ─建库─▶ 抽取(文字PDF直抽/扫描件OCR) → 清洗页眉页脚
→ 父文档分块(小块检索/大块返回, 5.1) + 页码元数据 → 向量库
查询 → 小块精准检索 → 取回所属大块(完整条款) → DeepSeek → 引用条款号+页码关键决策
- 父文档检索最关键:用小块(单条条款)检索保精准,返回整节给模型保上下文
- 表格转 Markdown 再入库(付款周期、金额常在表里,5.4)
- 元数据带页码 + 条款号,回答可溯源到"第 8 条,第 5 页"
- 扫描件合同走多模态 OCR;注意 OCR 可能错字,关键数字让模型标注"建议人工核对原文"
落地步骤
- 抽取 + 清洗 + 父文档分块 + 表格转 Markdown
- 入库带页码/条款号元数据
- 检索用小块、返回父块;Prompt 要求引用条款号和页码
- 关键结论提示用户"以原件为准",降低法律风险
三个案例的共性与避坑
| 维度 | 经验 |
|---|---|
| 分块 | 都按内容自然结构切(FAQ条目/函数/合同条款),不是定长 |
| 引用 | 都要可溯源(来源/路径行号/页码条款号),既防幻觉又建立信任 |
| 评估 | 都要建评估集跑回归,别凭感觉 |
| 边界 | 都要处理**"检索不到"**:老实说没有 / 转人工 / 提示看原文,绝不硬编 |
| 选型 | RAG 擅长"基于资料回答";要精确操作(改代码、调真实数据)该上 MCP/Agent |
⚠️ 最常见的失败不是模型不行,而是:分块乱切、没加引用、没评估、检索不到时硬编。把这四点做好,RAG 的体验就上一个台阶。
📌 关键结论
- 知识库客服:结构化分块 + Hybrid + 强制引用 + 检索不到转人工 + 回归评估
- 代码库问答:按函数/文件切、带路径行号元数据;精确改代码交给能读文件的 Agent
- 合同长文档:父文档检索 + 表格转 Markdown + 页码条款号引用 + 提示以原件为准
- 四条通用铁律:按结构分块、强制可溯源引用、建评估集、处理好"检索不到"