跳转至

24 RAG:从文档到可验证答案

难度:中级|前置:LLM、数据库|目标:理解完整检索链路和评测,不把向量库当魔法

RAG 解决什么

Retrieval-Augmented Generation:

用户问题
→ 检索相关资料
→ 把资料放入上下文
→ 模型基于资料回答并引用

它适合知识经常更新、需要私有资料或需要引用证据的场景。

索引链路

原始文档
→ 解析与清洗
→ 切分 Chunk
→ 添加 Metadata
→ Embedding
→ 向量/关键词索引

Metadata 可能包括:

  • tenant_id;
  • 文档类型;
  • 设备型号;
  • 版本;
  • 时间;
  • 权限范围;
  • 来源 URL。

查询链路

问题理解
→ 权限过滤
→ 混合召回
→ 重排
→ 上下文组装
→ 生成
→ 引用

权限过滤必须在检索阶段执行,不能先把其他租户文档给模型,再要求模型不要泄露。

切分

切得太小:

  • 语义不完整;
  • 缺少上下文。

切得太大:

  • 噪声多;
  • 召回不精准;
  • Token 成本高。

按标题、段落、表格和语义边界切分通常比固定字符数更合理。

混合检索

  • 向量检索:适合语义相近;
  • 关键词/BM25:适合型号、错误码、专有词;
  • Metadata Filter:限制租户、型号和版本;
  • Reranker:对候选结果重新排序。

工业错误码 E-1042 往往更依赖关键词,而不是纯向量相似度。

评测分两层

检索

  • 正确资料是否进入 Top K;
  • 排名;
  • 无关内容比例;
  • 权限过滤正确性。

生成

  • 是否基于证据;
  • 引用是否对应;
  • 是否完整;
  • 没有资料时是否拒绝编造。

生成效果差,不一定是 Prompt 问题,可能是检索根本没找到正确资料。

自测

  1. RAG 为什么不能消除所有幻觉?
  2. 错误码检索为什么适合混合搜索?
  3. 权限过滤应该在检索前还是生成后?
  4. 如何区分检索失败和生成失败?

完成标准

  • 能画出索引和查询两条链路
  • 能解释 Chunk 大小取舍
  • 能设计 Metadata
  • 能分别定义检索和生成指标

下一单元:Workflow 与 Agent 边界