之所以需要 RAG,是因为大语言模型本身存在一些局限性。
- 时效性 模型的训练是基于截至某一时间点之前的数据集完成的。这意味着在该时间点之后发生的任何事件、新发现、新趋势或数据更新都不会反映在模型的知识库中。例如,我的训练数据在 2025 年底截止,之后发生的事情我都无法了解。另外,大型模型的训练涉及巨大的计算资源和时间。这导致频繁更新模型以包括最新信息是不现实的,尤其是在资源有限的情况下。
- 专业领域深度 虽然大模型的训练数据集非常庞大,但仍可能无法涵盖所有领域的知识或特定领域的深度信息。例如,某些专业的医学、法律或技术问题可能只在特定的文献中被详细讨论,而这些文献可能未被包括在模型的训练数据中。另外,对于一些私有数据集,也是没有被包含在训练数据中的。当我们问的问题的答案没有包含在大模型的训练数据集中时,这时候大模型在回答问题时便会出现幻觉,答案也就缺乏可信度。
- 幻觉问题 LLM可能会”自信地编造”错误信息,大模型有时会生成看起来很合理、但实际上完全错误的内容。例如,大模型可能在没有证据的情况下声称某个事件发生了,或者提供不准确的信息。
通俗类比: “像一个想象力过剩的学生,考试时编造不存在的历史事件”;“医生AI误诊时,会用专业术语详细解释错误治疗方案”;
- 数据隐私风险 大模型的训练数据可能包含敏感信息,如个人隐私、商业机密等。如果这些数据被泄露,将对个人和组织造成严重的后果。
- 可解释性 大模型的决策过程往往是黑箱的,缺乏透明度。这使得用户难以理解模型的输出结果,从而降低了模型的可信度和可用性。
2.2 RAG如何解决这些问题?
核心思想:让LLM”开卷考试”而非”闭卷考试”
1 | 传统LLM(闭卷考试): |
| 问题 | RAG的解决方案 | 效果 |
|---|---|---|
| 时效性 | 实时检索外部知识库,支持动态更新 | 实时性 |
| 领域专业性不足 | 引入领域特定知识库(如医疗/法律) | 专业化 |
| 幻觉(Hallucination) | 基于检索内容生成,错误率降低 | 减少幻觉 |
| 数据隐私风险 | 本地化部署知识库,避免敏感数据泄露 | 隐私保护 |
| 可解释性 | 增加透明度,便于用户理解 | 可追溯 |
2.3 技术选型:RAG vs. 微调
我们可以从两个维度来理解这些技术的区别。如下图 所示,横轴代表“LLM 优化”,即对模型本身进行多大程度的修改。从左到右,优化的程度越来越深,其中提示工程和 RAG 完全不改变模型权重,而微调则直接修改模型参数。纵轴代表“上下文优化”,是对输入给模型的信息进行多大程度的增强。从下到上,增强的程度越来越高,其中提示工程只是优化提问方式,而 RAG 则通过引入外部知识库,极大地丰富了上下文信息。
基于此,我们的选择路径就清晰了:
- 先尝试提示工程:通过精心设计提示词来引导模型,适用于任务简单、模型已有相关知识的场景。
- 再选择 RAG:如果模型缺乏特定或实时知识而无法回答,则使用 RAG,通过外挂知识库为其提供上下文信息。
- 最后考虑微调:当目标是改变模型“如何做”(行为/风格/格式)而不是“知道什么”(知识)时,微调是最终且最合适的选择。例如,让模型学会严格遵循某种独特的输出格式、模仿特定人物的对话风格,或者将极其复杂的指令“蒸馏”进模型权重中。
2.4 既然这些场景这么好,为什么有些企业还是宁愿用传统搜索而不是 RAG?
下面简单对比一下二者:
| 维度 | 传统搜索(搜索框) | RAG(检索+生成) |
|---|---|---|
| 用户目标 | 找到文档/页面/附件 | 直接得到可读答案/总结/对比结论 |
| 延迟与成本 | 极低、易扩展 | 更高(检索+LLM 推理) |
| 可控性/可审计 | 强:给原文链接 | 弱一些:可能误解/总结偏差,需要引用与评测 |
| 风险 | 低(主要是召回排序) | 更高(幻觉、引用错误、越权泄露) |
| 数据治理 | 相对成熟(ACL、字段过滤) | 更复杂(检索过滤+上下文脱敏+日志) |
| 适用场景 | 编号/标题/关键词检索、找模板、找制度原文 | 客服解答、技术排障、制度解读、跨文档总结对比 |
| 最佳实践 | ES/BM25 + 权限过滤 | 混合检索 + 重排 + 引用溯源 + 权限过滤 + 评测闭环 |