回答前先去自己的资料库里检索相关内容,再把资料和问题一起交给模型作答,能让答案有据可依、也更容易更新。
大模型的知识来自训练数据,有两个天然短板:一是可能记不准,会编;二是知识停在训练截止那一刻,改不了。而有大量场景,答案其实就躺在你自己的文档里——产品手册、合同、内部制度、客服记录。RAG 的思路是:别让模型硬背,回答前先把资料找来给它看。
可以类比开卷考试:先按题目去书里定位相关段落,再带着这些段落作答。 - 离线索引:把文档切成适当大小的片段,用嵌入模型把每段转成向量,存进向量库。切片大小很关键,太碎丢上下文,太大则噪声多。 - 检索:把用户问题也转成向量,找出最相似的若干片段。实际系统常同时用关键词检索,混合两路结果更稳。 - 重排:用一个更精细的模型对候选片段重新打分,把真正相关的排到前面。 - 生成:把选中的片段和问题一起放进上下文,要求模型基于这些内容作答,并尽量给出出处。
微调是把知识「腌进」模型里,改变的是模型本身的倾向;RAG 是把知识放在模型外面,用的时候取进来。前者适合统一风格与行为,后者适合频繁变化、需要出处的知识。两者也可以叠加使用。