大模型微调与RAG的选型建议

最近其实挺多文章都有在聊RAG的,但我回过头来分析发现,缺少一篇有关使用时机的文章。我本身非常喜欢RAG所代表的实践方案,但不代表所有情况下都推荐使用RAG,毕竟我们需要因地制宜,结合实际情况来进行方案选择,本文就带大家一起分析RAG的优劣势。

目录:

  • 微调与RAG介绍

  • 为什么用微调和RAG对比

  • 微调和RAG的优劣势对比

  • 技术方案分析案例

在深入研究之前,让我们揭开这两种方法的神秘面纱:

RAG: 这种方法将检索(或搜索)的能力集成到LLM文本生成中。它结合了检索系统(从大型语料库中获取相关文档片段)和LLM(使用这些片段中的信息生成答案)。本质上,RAG帮助模型“查找”外部信息以改进其响应。

微调: 这是采用预训练的LLM并在较小的特定数据集上进一步训练它以使其适应特定任务或提高其性能的过程。通过调优,我们根据数据调整模型的权重,使其更适合应用程序的独特需求。

RAG和微调都是增强基于llm的应用程序性能的强大工具,但它们处理优化过程的不同方面,这在选择一个而不是另一个时至关重要。

为什么用微调和RAG对比

开始可能有小伙伴会问我,为什么要拿微调和RAG进行对比,我自己的理解,主要是因为这个两个所代表的其实是在现实情况中对系统的调优方案,即调整模型内和调整模型外。

纵观整个算法领域,对模型内部调整,不外乎是那几种方案,特征变化带来的模型结构调整(特征可以是隐式的内部特征,也可以是输入端或输出端的显式调整),以及通过数据变化带来的内部参数更新。无论是哪种方案,都会很大程度地影响模型的预测效果,一般情况,会为以模型为中心的系统效果带来很大的影响。

模型外的调整,不外乎就是增加一些外部的组件,例如规则、检索模块等,从而让整个系统的效果带来一些变化,在全新版本大模型时代,大模型为我们提供了更灵活的输入接口,即我们可以用prompt的方式灵活指导模型输出,可以给参考材料、额外信息、提特别要求甚至是通过描述、样例的方式即可让大模型的输出符合我们预期。

而RAG的出现,一方面是因为大模型具有很强的指令生成能力,另一方面是模型内调整在现实应用情况一些局限性,从而形成了一个目前重要的应用思路,实践上最鲜明的两个特点,一个是内容批量的可控性和及时性,另一个是这种更新并不需要更新模型参数从而规避效果波动的风险。至于规则等的方案,某种程度上,其实就是RAG的一种特殊情况,例如什么情况需要触发什么回复策略的约束。

因此,我自己是认为,要去权衡RAG,不得不把他和微调进行对比,探索两者各自的优势,进一步在方案选型的时候,从感性理解到理性对比判断。

微调和RAG的优劣势对比

这里我写我的分析调研总结过程吧,然后汇总结论。

论文讨论

首先是论文层面,有一篇论文对这方面进行了讨论:“Fine-Tuning or Retrieval?,Comparing Knowledge Injection in LLMs”,这又是一篇微软的论文(怎么最近老是无意间碰到微软的论文,频率很高),这篇论文本身是从信息注入的角度来进行讨论的,从文章的实验看来,微调的效果始终比不过RAG的效果,而究其原因,作者在前文中其实有提到具体的表现,摘录一下:

  • 领域知识不足。对未接触过的内容,效果就会很差。

  • 信息过时。知识的更新只取决于训练集的截止时间。

  • 记忆力问题,对训练过程接触的知识,很大可能会忘记(说白了就是没学会),对已经学会的知识,也可能因为后续的训练而遗忘。

  • 推理失败。对已有知识,可能也会因为使用失败而让回答出现问题。

另外还发现了一篇还不错的论文,RAG vs Fine-tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture(嗯,这篇也是微软的),这里面也是做了比较多的实验和尝试,给出一些基于实验的分析,这篇更像是一篇调研报告,挺建议大家回头去精读的,我这里把比较重要的这张图摆出来。

这篇相比上面一篇,分析的维度更丰富了,有考虑成本等问题,但论文的分析还是有一定局限性,很多情况其实不会考虑到现实情况的很多问题,例如,数据数量和质量问题,实际业务需求等。

汇总结论

这里我分几个方面来进行对比吧。

首先是知识层面,这个应该是RAG使用者最关心的。

  • RAG对知识的更新时间和经济成本更低。不需要训练,只需要更新数据库即可。

  • RAG对知识的掌控力会更强,相比微调更不用担心学不到或者是遗忘的问题。

  • 但是如果模型强缺乏某个领域的知识,足量数据的微调才能让模型对该领域有基本的概念,如果不具备领域知识基础,RAG仍旧无法正确回答。

然后是具体任务效果的问题。

  • RAG相比微调能更容易获得更好的效果,突出的是稳定性、可解释性。

  • (有点经验之谈了)对任务模式比较简单的任务,微调能触碰到更高的上限,但是对训练、数据等方面的要求会更苛刻。

  • 幻觉方面,RAG从各种实测来看,短板基本都在检索模块,只要检索不出大问题,整体效果还是RAG比较有优势的。

第三块来聊成本了,现实应用很难避开成本的问题。

  • 训练角度,RAG的成本就是更新数据库,但是微调就需要大量的显卡、时间资源。

  • 推理角度,考虑到RAG本身需要检索,而且检索层为了确保检索准确,还需要很多额外工作,所以推理的耗时会比微调多,但具体多多少,就要看检索模块的复杂程度了,如果这里面还需要额外调大模型,那成本就会多很多,如果只是小模型之类的,那这个增加可以说是忽略不计。微调后的大模型直接使用,和原本模型的耗时一致。

  • 系统拓展角度。随着项目的发展,大模型训练不一定能支撑多任务,而拿着大模型训好几个,对部署而言并不方便。

上面的内容所体现出来的,更多是RAG的优势,看起来似乎微调就没有什么好处了。但事实并非如此,RAG还是有很多不适用的环境的。

  • RAG依赖知识库。如果不具备构造知识库的条件,那RAG无从谈起,例如没有具体的业务数据,或者是机器不支持支撑检索之类的。

  • 业务需求并非对知识依赖。例如某些业务的话术生成,更多是对语言风格的约束,此时要么通过prompt解决,要么就是构造业务数据来进行训练即可,根本没有构造RAG的必要。

  • 依赖实时信息而非固有信息。直接举例,对话摘要应该是大模型具有的比较强的能力,这种任务更多是依赖收到的对话记录,而非一些固有存储好的内容,此时通过工程手段直接把信息获取导入到模型即可,不需要把对应内容入库了。如果对对话摘要的内容不满意,则应该是通过prompt和微调来解决。当然有人可能会说通过few-shot的方式,可以用RAG,这个当然是可以的,但就不是必须了。

  • 指令不生效或者领域知识完全不具备。这个不多解释了,大模型此处是短板,那即使是RAG,把答案摆在面前,也解决不了问题。

  • 内容会受到检索结果局限。有些创造性的任务,本身是想通过大模型获取新的灵感,然而检索结果给到大模型后,大模型往往容易受到限制,这个限制在有些时候是好事,但并非所有时候。

技术方案分析案例

借助两个比较典型的案例,大家应该能体会这两者的区别了。

产品百科问答

电商场景下,客服都要具备一个能力,就是产品百科问答,用户会需要咨询某些商品的属性等细节消息,这是一个很具体的场景了。然而实际我们需要面对的,除了这个功能本身,还需要解决一个问题,即商品信息是需要更新和变化的,例如新商品上架、价格优惠修改等,这个信息是需要快速反映在问答系统中的,此时我们RAG非常有必要性。

  • 商品信息的更新,不定期且频繁,这种更新通过微调来做,敏捷度不足,风险也比较高。

  • 知识如果是结构化,本身用于微调训练并不方便,需要转化,但是数据库存储则比较方便。

  • 商品型号很多很接近,容易混淆,大模型很容易出现“张冠李戴”现象。

日常工作工具

写周报、灵感、工作日志、修改一份材料、查错查重、话术推荐、会议纪要之类的,类似这些问题,我们更多的日常使用方式就是prompt+大模型完成,我们做起来非常自然,可能顶多会根据自己的需求加一些例子,但往往不会优先考虑RAG。

  • 对固有信息要求不高,甚至没有需求。

  • 供给检索的数据,如果不是因为产品本身的信息收集,一般情况下很难获取,对RAG而言可以说是无米之炊了。

  • 类似灵感的任务,案例反而可能限制模型发挥。

  • 要求的更多是指令的执行能力,这个如果不具备,很可能就要考虑通过微调来整了。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现大模型RAG(Retrieval Augmented Generation)主要包括**数据准备阶段和应用阶段**两个关键环节。具体步骤如下: 1. **数据准备阶段**: - **数据提取**:首先需要确定并提取适用于特定领域的私域数据,这些数据可以是PDF文件、数据库内容或其他形式的私有知识库。 - **文本分割**:将提取出的文档进行分块处理,以便于后续的处理和检索。 - **向量化**:对分割后的文本块进行向量化操作,即将文本转换为机器能够高效处理的数值表示形式。 - **数据入库**:处理好的数据需要构建索引并存入向量数据库中,为接下来的检索任务做准备。 2. **应用阶段**: - **用户提问**:当用户提出问题时,同样需要将这个查询向量化。 - **数据检索**:利用向量数据库的检索能力,找出与用户提问相似度最高的k个文档片段。 - **注入Prompt**:将检索到的结果结合用户的原始提问,按照一定的Prompt模板组装成一个完整的输入提示给大语言模型。 - **LLM生成答案**:大语言模型根据提供的Prompt生成最终的回答。 此外,还需要考虑如何优化数据的准备过程,比如选择适合的向量化技术(如使用词嵌入模型)以及如何设计高效的检索算法来快速准确地从大量数据中找到相关信息。同时,在应用阶段,需要精心设计Prompt模板,以便大模型能更好地理解问题和检索到的信息,从而给出更准确的回答。 值得一提的是,RAG架构的优势在于它结合了大模型的强大语言理解和生成能力以及向量检索系统的高效信息获取能力,使得大模型能够在专业场景或行业细分领域中提供更加精准和丰富的回答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值