为什么要 RAG:模型的知识是「焊死」的
模型权重里的知识(参数化记忆)有两个毛病:会过时、改不动(要重训)。RAG = 参数化记忆 + 非参数化记忆(一个可检索的外部向量索引),用检索到的文档喂给生成。好处:换索引就能更新知识、不用重训;让生成更具体、更符合事实,降低幻觉——注意是降低不是消除(检索错了照样胡说)。
检索有两条路:稀疏检索(BM25 / TF-IDF,关键词匹配)和稠密检索(学到的向量嵌入,语义匹配,能匹配「说法不同但意思一样」)。还有个常见误区要破:想让模型记住新知识就去微调? 实验证据相反——无监督微调难教会 LLM 新事实,注入知识时 RAG 一致优于微调。
RAG 的工程现实:切块、丢中间、和它的七个坑
RAG 不是接上向量库就完事。Chunking(切块)决定检索粒度:块太大稀释语义、可能超嵌入模型上下文被截断;太小丢上下文。没有万能尺寸,得按你的查询实测。还有个反直觉现象:Lost-in-the-Middle——LLM 用长上下文呈 U 型:相关信息放开头或结尾表现最好,放中间会显著掉(可掉 30% 以上)。所以检索结果怎么排序、放在哪,很重要。
RAG 出错可以系统编目——七大失败点:缺内容 / 没召回到 / 没进上下文 / 没抽取出 / 格式错 / 颗粒度不当 / 不完整。评估也别拍脑袋:RAGAS 用「参考无关」指标(不需人工标注)——Faithfulness(答案有多少能被检索到的上下文支撑)+ Answer Relevancy。记忆方面:agent 记忆分两层——短期(线程内对话历史,随会话)+ 长期(跨会话持久化,常用向量检索调取)。
自测 · 学完检查一下
想真正动手做题、记进度、攒连胜?到互动课里练。
RAG 相比直接用模型自带知识,核心优势是什么?
答案:知识可检索更新、不用重训,且让回答更符合事实、降低(非消除)幻觉
RAG = 参数化 + 非参数化记忆,换索引即更新、降幻觉但不消除(检索错照样胡说)。
「Lost-in-the-Middle」说的是什么现象?
答案:LLM 用长上下文呈 U 型,信息放中间最容易被忽略
U 型曲线——开头、结尾表现好,中间显著下降,所以检索结果的排序位置很关键。
判断对错:「想让 LLM 掌握一批新事实知识,微调通常比 RAG 更靠谱。」
答案:错误
实验证据相反——注入新事实 RAG 一致优于无监督微调;微调更适合改风格 / 格式,而非灌事实。