当前位置: 首页 > ds >正文

6 RAG知识库 和 微调 如何选择?

因为其实很多时候, 微调和 RAG 都有达同样的效果, 那我们如果区分呢?

这个其实很好理解,我可以举一个非常好理解的例子:

前提场景: 参加一场专业的数学考试, 数学能力很强的大学生 (基座GPT模型)

  1. RAG: 就是给这个大学生带一本相关的数学书,里面有各种习题和公式, 开卷考试, 如果学生悟性够高基础好,那么题也是可以做出来的
  2. 微调: 我给这个大学生,进行考前突击, 就给他讲那些他没学过的专业的数学知识, 那么这个学生学会后去考试, 闭卷开始, 也可以做出来

结论: 其实我们得分场景去考虑用哪种方法, 找到适合的方法

1. 快速决策框架

直接给一些结论 , 在选择是否微调时,有实际场景强需求的时候, 我们可以大概率直接选择

  • 动态数据 → RAG 知识库
    • 因为微调每次都要训练, 总不能每次微调一遍吧 ,成本太高了
  • 低延迟 → 微调
    • 知识库每次都要去检索一遍数据, 上下文也长,所以整体还是比较慢的
  • 需要解释为什么? (比如需要参考文章) →RAG知识库
    • 这个就很明显了, 还是RAG知识库比较好
  • 还要需要原来模型比较强的通用能力 → rag知识库
    • 因为微调可能会造成”遗忘”,这个不好控制
  • 成本:这个不好评估, 得看调用量, 但是大部分是 rag > 微调

2. 微调的优缺点

优点:

  1. 长期一致性:模型行为更加可预测和一致, 回答可以保持比较一致
  2. 低延迟:不需要实时检索,响应速度更快
  3. 知识整合能力:可以将知识深度融入模型参数中
  4. 上下文理解提升:对特定领域的理解更深入
  5. 小型化可能:某些情况下可以获得更小的专用模型

缺点:

  1. 单独的训练成本高:耗费计算资源和时间, 还要时间去整理,高质量的训练数据集
  2. 灵活性差:知识更新需要重新训练
  3. 灾难性遗忘:微调还是改变了原来的模型, 可能丢失原有的通用能力

RAG的优缺点

优点:

  1. 动态知识更新:知识库可以随时更新而无需重训练
  2. 实施门槛低,成本低:通常不需要模型训练, 现在的 rag 知识库都是可以直接搭建的
  3. 减少幻觉:通过提供参考内容减少虚假信息
  4. 保留通用能力:不影响基础模型的能力

缺点:

  1. 延迟较高:检索过程增加响应时间, 这种模式速度相对慢很多
  2. 实时计算成本:每次查询都需要检索,长期使用成本可能高
  3. 复杂推理长文章能力有限:对于需要跨文档推理的问题效果欠佳, 当输入多个长文档片段时,关键信息可能被大量不太相关的内容"稀释",模型检索的精度下降, 导致回答就效果不好
  4. 知识库管理复杂:需要维护和优化知识库

总结:

通常情况下,最简单的判断方法就是:

最佳策略是先尝试提示工程和RAG,如果效果不理想再考虑微调。许多场景下,RAG与提示工程的结合已经能够解决大部分问题,而无需进行成本较高的微调。

可以共存:

更好的的做法, 先微调一下, 再给微调的模型加RAG知识库

http://www.xdnf.cn/news/3942.html

相关文章:

  • Kubernetes(k8s)学习笔记(五)--部署Ingress实现域名访问和负载均衡
  • 排序功法入门指南【江湖算法笔记】
  • 【计算机网络】HTTP中GET和POST的区别是什么?
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.1 数据质量评估指标(完整性/一致性/准确性)
  • VSCode通过SSH连接VMware虚拟机
  • opencv的contours
  • C++入门☞关于类的一些特殊知识点
  • Hadoop 1.x设计理念解析
  • Oracle OCP认证考试考点详解083系列05
  • USB布局布线
  • 一篇撸清 Http,SSE 与 WebSocket
  • Qt中QVector的实现与简化
  • 大数据实时数仓的数据质量监控解决方案
  • Node.js和npm的关系(浅显了解)
  • 驱动开发硬核特训 · Day 27(上篇):Linux 内核子系统的特性全解析
  • jetson orin nano super AI模型部署之路(八)tensorrt C++ api介绍
  • Terraform 中的 external 数据块是什么?如何使用?
  • VirtualBox 创建虚拟机并安装 Ubuntu 系统详细指南
  • 使用 Azure DevSecOps 和 AIOps 构建可扩展且安全的多区域金融科技 SaaS 平台
  • OpenHarmony平台驱动开发(二),CLOCK
  • express 怎么搭建 WebSocket 服务器
  • 从 0 到 1:使用 Jetpack Compose 和智能自动化实现高效 Android UI 开发
  • 湖北理元理律师事务所:法律科技融合下的债务管理实践
  • 计算机组成原理:总线
  • Kotlin协程解析
  • 【运维】构建基于Python的自动化运维平台:用Flask和Celery打造高效管理工具
  • 具身系列——Double DQN算法实现CartPole游戏(强化学习)
  • 软考 系统架构设计师系列知识点之杂项集萃(53)
  • 软考 系统架构设计师系列知识点之杂项集萃(52)
  • PowerShell 备份 Windows10/11 还原计算机驱动程序SOP