跳到主要内容
版本:Next

RAG、微调与长上下文:知识接入方案选型

让大模型掌握新知识,常见有四种手段。它们解决的问题不同,经常被混为一谈:

方案注入的是改变的是时效性
提示工程上下文信息不改模型每次请求
长上下文上下文信息不改模型每次请求
RAG上下文信息(可检索)不改模型知识库随改随生效
微调参数化的知识/风格模型权重需重新训练

一个关键的认知:RAG 和微调不在同一个竞争维度上。RAG 解决"模型知道去哪里找",微调解决"模型如何表现"。

逐项对比​

RAG 的边界​

适合:事实频繁更新、需要溯源、知识量大到无法放进上下文、需要权限隔离的场景。

局限:引入检索链路(延迟、成本、出错面);模型对上下文的忠实性仍受提示词和模型能力影响;注入"技能"而非"知识"的效果差。

微调的边界​

适合:固定的输出风格/格式、领域术语理解、压缩常见模式以降低推理成本、小样本行为矫正。

局限:不适合注入事实性知识——参数化知识难以更新、无法溯源、训练成本高,且容易过拟合或引入幻觉。期望"微调让模型背下知识库"通常是错误方向。

长上下文的边界​

长上下文模型让"把全部文档塞进去"变得可行,但要警惕:

  • 成本线性增长:每次请求都为全量 token 付费,RAG 只为命中的片段付费。
  • 注意力稀释:上下文越长,中间内容的利用率越低,长上下文不等于长记忆。
  • 权限与更新:无法按用户隔离知识,也无法只更新增量。

经验:文档规模小(几十页内)且变化少的长上下文直接塞是合理方案;规模大、更新频繁、多用户多权限的系统,RAG 在成本与工程可控性上仍占优。两者也可组合:RAG 先召回,长上下文负责吸收召回结果。

决策路径​

知识是否有频繁更新或需要溯源?
├── 否 → 是否只是风格/格式/领域语感问题?
│ ├── 是 → 微调
│ └── 否 → 提示工程
└── 是 → 知识总量能否放进上下文窗口(且成本可接受)?
├── 是 → 长上下文直接注入
└── 否 → RAG
└── 同时存在行为/风格问题 → RAG + 微调组合

组合使用​

典型的高配方案是分层叠加:

微调(底层) :领域语言风格、输出格式、工具调用习惯
+
RAG(中层) :事实知识、实时数据、私有文档
+
提示工程(上层):单次任务的临时指令与示例

组合的次序也有讲究:先建设 RAG 通路并在其上收集真实问答数据,这些数据(含召回上下文)再成为微调的训练素材,比先微调后补检索的路径更稳。

常见误区​

  • "微调可以让模型记住知识库":事实会以扭曲、过时、不可溯源的形式残留,回答"依据是什么"时无解。
  • "有了 RAG 就不需要评测":RAG 的召回与生成是两个独立故障点,反而更需要分环节评测,见 RAG 自动化评测。
  • "RAG 失败就加微调":多数 RAG 失败源于检索质量(切片、Embedding、查询表达),先按优化策略排查链路,再考虑动模型。
  • "长上下文会取代 RAG":两者解决成本结构与权限工程的问题不同,长上下文越强,RAG 的"上下文组装"环节反而越省心,但检索与权限管理层不会消失。