6 RAG知识库 和 微调 如何选择?
因为其实很多时候, 微调和 RAG 都有达同样的效果, 那我们如果区分呢?
这个其实很好理解,我可以举一个非常好理解的例子:
前提场景: 参加一场专业的数学考试, 数学能力很强的大学生 (基座GPT模型)
- RAG: 就是给这个大学生带一本相关的数学书,里面有各种习题和公式, 开卷考试, 如果学生悟性够高基础好,那么题也是可以做出来的
- 微调: 我给这个大学生,进行考前突击, 就给他讲那些他没学过的专业的数学知识, 那么这个学生学会后去考试, 闭卷开始, 也可以做出来
结论: 其实我们得分场景去考虑用哪种方法, 找到适合的方法
1. 快速决策框架
直接给一些结论 , 在选择是否微调时,有实际场景强需求的时候, 我们可以大概率直接选择
- 动态数据 → RAG 知识库
- 因为微调每次都要训练, 总不能每次微调一遍吧 ,成本太高了
- 低延迟 → 微调
- 知识库每次都要去检索一遍数据, 上下文也长,所以整体还是比较慢的
- 需要解释为什么? (比如需要参考文章) →RAG知识库
- 这个就很明显了, 还是RAG知识库比较好
- 还要需要原来模型比较强的通用能力 → rag知识库
- 因为微调可能会造成”遗忘”,这个不好控制
- 成本:这个不好评估, 得看调用量, 但是大部分是 rag > 微调
2. 微调的优缺点
优点:
- 长期一致性:模型行为更加可预测和一致, 回答可以保持比较一致
- 低延迟:不需要实时检索,响应速度更快
- 知识整合能力:可以将知识深度融入模型参数中
- 上下文理解提升:对特定领域的理解更深入
- 小型化可能:某些情况下可以获得更小的专用模型
缺点:
- 单独的训练成本高:耗费计算资源和时间, 还要时间去整理,高质量的训练数据集
- 灵活性差:知识更新需要重新训练
- 灾难性遗忘:微调还是改变了原来的模型, 可能丢失原有的通用能力
RAG的优缺点
优点:
- 动态知识更新:知识库可以随时更新而无需重训练
- 实施门槛低,成本低:通常不需要模型训练, 现在的 rag 知识库都是可以直接搭建的
- 减少幻觉:通过提供参考内容减少虚假信息
- 保留通用能力:不影响基础模型的能力
缺点:
- 延迟较高:检索过程增加响应时间, 这种模式速度相对慢很多
- 实时计算成本:每次查询都需要检索,长期使用成本可能高
- 复杂推理长文章能力有限:对于需要跨文档推理的问题效果欠佳, 当输入多个长文档片段时,关键信息可能被大量不太相关的内容"稀释",模型检索的精度下降, 导致回答就效果不好
- 知识库管理复杂:需要维护和优化知识库
总结:
通常情况下,最简单的判断方法就是:
最佳策略是先尝试提示工程和RAG,如果效果不理想再考虑微调。许多场景下,RAG与提示工程的结合已经能够解决大部分问题,而无需进行成本较高的微调。
可以共存:
更好的的做法, 先微调一下, 再给微调的模型加RAG知识库