RAG(检索增强生成)

RAG(Retrieval-Augmented Generation)把“检索”和“生成”结合起来:先从外部知识库找资料,再让 LLM 基于资料回答。

为什么需要 RAG

LLM 的常见问题:

RAG 的价值:

基本架构

用户问题
  -> 查询改写(可选)
  -> 向量检索 / 关键词检索 / 混合检索
  -> rerank(可选)
  -> 拼接上下文
  -> LLM 生成答案
  -> 引用和事实校验

最小 RAG 流程

  1. 收集文档。
  2. 切分成 chunk。
  3. 生成 embedding。
  4. 写入向量索引。
  5. 对用户问题做检索。
  6. 把 top-k 结果放进 prompt。
  7. 要求模型仅依据上下文回答并给引用。
  8. 评估检索和生成质量。

RAG 组件

组件 作用 常见问题
文档解析 读取 PDF、网页、Markdown、表格 表格、图片、页眉页脚噪声
chunking 将文档切成可检索片段 太大噪声多,太小缺上下文
embedding 把 chunk 转成向量 领域术语、中文、代码符号
检索 找相关 chunk 召回不足、排序差
rerank 重新排序候选结果 成本和延迟增加
prompt 约束模型基于资料回答 幻觉、引用错位
eval 衡量效果 没有标注集、只凭主观判断

什么时候不该用 RAG

场景 更好的方案
只是要求固定输出格式 Prompt 或结构化输出
需要模型学习稳定风格 微调
需要执行外部动作 Agent 工具调用
文档质量很差且无人维护 先治理数据
答案必须来自结构化数据库 SQL/工具查询,必要时再由 LLM 解释

常见失败

检索不到

原因可能是:

解决:

检索到了但答错

原因可能是:

解决:

答案没有引用

解决:

推荐学习顺序

  1. Embedding 与向量检索
  2. 从零实现 RAG
  3. RAG 评估
  4. Prompt 与上下文工程

参考资料