语言模型可以在参数中表现出大量通用知识,但企业制度、产品手册、项目记录和刚刚发生的信息并不一定包含在训练数据里。即使模型“听说过”,也很难说明答案具体来自哪份资料。RAG 通过在生成前检索外部知识,为模型提供当前任务所需的依据。
一条完整链路
离线阶段先处理知识:
资料 → 清洗 → 分段 → 向量化与索引 → 可检索知识库
在线回答阶段再处理问题:
用户问题 → 查询理解 → 检索 → 排序与筛选 → LLM 生成 → 引用
RAG 不是一个单独模型,而是一套系统。任何一环出现问题,都可能得到错误答案:资料本身过期,分段切断关键条件,检索没有召回,排序把无关片段放在前面,或 LLM 忽略证据继续编造。
RAG 适合什么场景
它适合知识经常更新、需要使用私有资料、答案应提供依据的任务,例如内部制度问答、产品支持、研究资料检索和合同条款查询。
如果任务只依赖用户当前提供的短文本,直接把文本放进上下文就足够;如果目标是改变模型的写作风格或形成新的基础能力,微调可能更合适;如果需要精确查询结构化数据,应优先使用数据库或 API,而不是把所有表格转成向量。
检索不等于回答
检索器的目标是找到可能相关的片段,生成器的目标是结合问题和片段形成答案。评估时必须分开看:检索结果里是否包含正确依据,最终答案是否忠实使用依据。
如果正确片段从未被检索出来,继续修改提示词没有用;如果片段正确但答案仍然出错,才应检查提示词、模型和上下文组织。
可更新与可追溯
RAG 的重要价值,是知识可以独立于模型更新。制度变化时替换文档并重建索引,不需要重新训练整个模型。回答还可以携带文档标题、章节和链接,让用户回到原始资料核对。
但“带引用”并不自动代表正确。引用可能与句子不匹配,也可能来自过期版本。系统应维护来源、版本、生效时间和访问权限,并在答案中只展示用户有权查看的内容。
理解 RAG 的第一原则,是把它视为知识供应链。模型只是最后的表达层,答案可信度首先取决于前面送来的资料是否正确、相关并且有权限使用。