RAG 是什么?它和微调(Fine-tuning)怎么选?

#RAG#Agent#面试八股

RAG 是什么?它和微调(Fine-tuning)怎么选?

RAG(Retrieval-Augmented Generation,检索增强生成)= 先检索资料,再让模型基于资料回答。 它解决的是"模型不知道你的私有数据/最新数据"这个问题,而且不需要训练。

1. 一条最小链路

离线:文档 → 切块(chunk) → 向量化(embedding) → 向量库
在线:问题 → 向量化 → 相似度检索 top-k → 拼进 Prompt → LLM 生成

四个环节各有坑:

环节常见问题
切块切太碎丢上下文,切太大稀释相关性(常见 300~800 token + 重叠 10%~20%)
向量化中英文混排、领域术语,通用 embedding 效果差
检索只看向量会漏关键词命中,常配 BM25 做混合检索 + rerank
生成检索结果塞太多导致"中间遗忘",需要重排与截断

2. RAG vs 微调

维度RAG微调
知识更新改文档即可,分钟级要重训,小时级起
成本向量库 + 检索开销训练算力 + 标注数据
可解释性能给出处不能,容易一本正经胡说
擅长事实问答、私有知识风格、格式、任务模式
不擅长需要推理/改写的复杂任务频繁变化的知识

经验判断:要"知道什么"用 RAG,要"会怎么做"用微调;两者可以叠加(微调出格式,RAG 补事实)。

3. 效果差的三个根因

  1. 检索没召回:先看 top-k 里有没有正确文档——没有的话,改生成模型毫无意义;
  2. 召回了但没被用:上下文太长、位置太靠中间,模型忽略;要重排并精简;
  3. 召回了错内容:分块把一句话切断、或不同版本文档混在一起,需要去重与版本过滤。

4. 评估怎么做

至少要三个指标:

  • 召回率:正确片段是否进了 top-k(人工标注 50~100 条评估集即可);
  • 忠实度:回答里的每句话能否在检索结果里找到依据(可用模型自评 + 抽检);
  • 有用性:是否真正回答了问题(人工评分)。

没有评估集的 RAG 项目,调参全靠感觉,最后一定原地打转。

小结

RAG 的工程重点不在"接个向量库",而在切块策略、混合检索、上下文编排、评估闭环这四件事。 先保证"检索得到",再谈"生成得好"。

笔记加载中…