写点什么

提示工程、微调和 RAG,你应该选择哪一种?

MyScale

  • 2024-04-22
    北京
  • 本文字数:2470 字

    阅读完需:约 8 分钟

大小:1.21M时长:07:02
提示工程、微调和 RAG,你应该选择哪一种?

自众多大型语言模型(LLM)和高级对话模型发布以来,人们已经运用了各种技术来从这些 AI 系统中提取所需的输出。其中一些方法会改变模型的行为来更好地贴近我们的期望,而另一些方法则侧重于增强我们查询 LLM 的方式,以提取更精确和更有关联的信息。

 

检索增强生成(RAG)、提示和微调等技术是应用最广泛的。在这篇文章中,我们将研究对比这些技术的优缺点。这很重要,因为本文将帮助你了解何时该使用这些技术,以及如何有效地使用它们。

提示工程

提示是与任何大型语言模型交互的最基本方式。你可以把提示看作是给模型提供的指令。当你使用提示时,你会告诉模型你希望它给你反馈什么样的信息。这种方法也被称为提示工程,有点像是学习如何提出正确的问题以获得最佳答案的方法。但你能从中获得的东西是有限的,这是因为模型只能反馈它从训练中获知的内容。



提示工程的特点是它非常简单。你不需要成为技术专家也能写好提示,这对大多数人来说都是个好消息。但由于它的效果很大程度上取决于模型的原始学习水平,所以它可能并不总能提供你需要的最新或最具体的信息。当你处理的是一般性的主题,或当你只需要一个快速答案,而不需要太多细节时,提示工程最好用。

优点:

  • 易于使用:提示易于使用,不需要高级技术技能,因此可供广大受众使用。

  • 成本效益:由于它使用预先训练好的模型,因此与微调相比,其所涉及的计算成本极低。

  • 灵活性:用户可以快速调整提示以探索各种输出,而无需重新训练模型。

缺点

  • 不一致:模型响应的质量和相关性可能因提示的措辞而有很大差异。

  • 有限的定制能力:定制模型响应的能力受限于用户制作有效提示的创造力和技巧。

  • 对模型知识的依赖:输出局限在模型在初始训练期间学到的内容上,这使得它对于高度专业化或最新的信息需求来说效果不佳。

微调

微调是指你找来一个语言模型并让它学习一些新的或特殊的东西。可以把它想象成更新手机上的应用程序以获得更好功能的方法。但在微调的情况下,应用程序(模型)需要大量新信息和时间来正确学习各种内容。对于模型来说,这有点像是重返校园。



由于微调需要大量的算力和时间,因此成本可能很高。但如果你需要语言模型很好地理解某些特定主题,那么微调就会很划算。这就像是教模型成为你所感兴趣的领域的专家一样。经过微调后,模型可以为你提供更准确、更接近你所需内容的答案。

优点:

  • 自定义:微调允许广泛的自定义,使模型能够生成针对特定领域或风格的响应。

  • 提高准确性:通过在专门的数据集上进行训练,模型可以产生更准确、更相关的响应。

  • 适应性:经过微调的模型可以更好地处理原始训练过程中未涵盖的小众主题或最新信息

缺点:

  • 成本:微调需要大量计算资源,因此比提示工程更昂贵。

  • 技术技能:这种方法需要更深入地了解机器学习和语言模型架构。

  • 数据要求:有效的微调工作需要大量且精心策划的数据集,这类数据集可能很难编译。

检索增强生成(RAG)

检索增强生成(RAG)将常见的语言模型与知识库之类的东西混合在一起。当模型需要回答问题时,它首先从知识库中查找并收集相关信息,然后根据该信息回答问题。模型会快速检查信息库,以确保它能给你最好的答案。



RAG 在你需要最新信息,或需要比模型最初学习到的内容更广泛的主题答案的情况下特别有用。在设置难度和成本方面它不算高也不算低。它很有用,因为它可以帮助语言模型给出新鲜且更详细的答案。但就像微调一样,它需要额外的工具和信息才能正常工作。

 

RAG 系统的成本、速度和响应质量严重依赖于矢量数据库,所以这种数据库成为了 RAG 系统中非常重要的一部分。

优点:

  • 动态信息:通过利用外部数据源,RAG 可以提供最新且高度相关的信息。

  • 平衡:在提示的简易性和微调的定制能力之间提供了中庸之道。

  • 上下文相关性:通过附加的上下文来增强模型的响应,从而产生更明智和更细致的输出。

缺点:

  • 复杂性:RAG 实现起来可能很复杂,需要语言模型和检索系统之间做好集成。

  • 资源密集型:虽然 RAG 的资源密集程度低于完全微调的方法,但它仍然需要相当大的计算能力。

  • 数据依赖性:输出的质量在很大程度上取决于检索到的信息的相关性和准确性

提示、微调和 RAG 对比

下面的表格完整对比了提示、微调和检索增强生成方法。此表将帮助你了解不同方法之间的差异,并决定哪种方法最适合你的需求。

特性

提示工程

微调

RAG

所需技能等级

低:需要对如何构建提示有基本的了解。

中等到高等:需要了解机器学习原理和模型架构。

中等:需要了解机器学习和信息检索系统。

成本与资源

低:使用现有模型,计算成本最低。

高:训练需要大量计算资源。

中等:需要检索系统和模型交互的资源,但需求少于微调。

可定制性

低:受到模型预训练知识和用户编写有效提示的能力的限制。

高:允许对特定域或样式进行广泛的定制。

中等:可通过外部数据源进行定制,但定制自由度取决于其质量和相关性。

数据需求

无:只利用预先训练好的模型,不需要额外的数据。

高:需要大量相关的数据集才能进行有效的微调。

中等:需要访问相关的外部数据库或信息源。

升级频率

低:跟随底层模型一起升级。

变量:取决于何时使用新数据重新训练模型。

高:可以纳入最新的信息。

质量

可变:高度依赖于用户编写提示的技巧。

高:针对特定数据集进行定制,从而获得更相关、更准确的响应。

高:利用上下文相关的外部信息增强响应。

用例

一般问答、常用主题、教育目的。

专业应用、特定行业需求、定制任务。

需要最新信息的情况以及涉及上下文的复杂查询。

实现难度

低:利用现有工具和界面直接实现。

高:需要深入的设置和训练过程。

中等:需要将语言模型与检索系统相结合。

上表分解了提示、微调和 RAG 三种方法的要点。它应该可以帮助你了解每种方法最适合哪种情况。希望这张表可以帮助你为下一个任务选择正确的工具。

RAG:增强 AI 应用程序的最佳选择

RAG 是一种独特的方法,它将传统语言模型的强大功能与外部知识库的精确度结合在了一起。这种方法有很多优势,因而脱颖而出。在特定情况下,相比单独使用提示或微调方法,RAG 的优势特别突出。

 

首先,RAG 通过实时检索外部数据来确保其所提供的信息是最新并且高度相关的。这对于需要最新信息的应用程序来说非常重要,与新闻相关的查询或快速发展的领域就是典型例子。

 

其次,RAG 在可定制性和资源需求方面提供了一种平衡的方法。与需要大量计算能力的完全微调方法不同,RAG 允许更灵活、更节省资源的操作,让更多用户和开发人员可以轻松使用它。



最后,RAG 的混合特性弥补了 LLM 的广泛生成能力与知识库中可用的特定详细信息之间的差距。在它的帮助下,模型不仅会产生相关且详细的输出,而且还具有丰富的上下文。

 

优化、可扩展且经济高效的矢量数据库解决方案可以极大地增强 RAG 应用程序的性能和功能。这就是为什么你需要 MyScale,这是一个基于 SQL 的矢量数据库,它可以与主要的 AI 框架和语言模型平台(如 OpenAI、Langchain、Langchain JS/TS 和 LlamaIndex)顺利集成。使用 MyScale 后,RAG 可以变得更快、更准确,这对于寻求最佳结果的用户来说非常有用。

小结

总之,你应该选择提示工程、微调还是检索增强生成方法将取决于你项目的具体要求、可用资源和期望的结果。每种方法都有其独特的优势和局限性。提示是易用且经济高效的,但提供的定制能力较少。微调以更高的成本和复杂性提供充分的可定制性。RAG 实现了某种平衡,提供最新且与特定领域相关的信息,复杂度适中。

 

原文链接:https://myscale.com/blog/prompt-engineering-vs-finetuning-vs-rag/

2024-04-22 16:554737

评论 1 条评论

发布
用户头像
写的蛮好,翻译的也很地道
2024-08-21 09:28 · 江苏
回复
没有更多了
发现更多内容

尝试 Promise A+

Jeannette

回顾我两个月面试阿里,携程,小红书,美团,网易等等(Java岗)

热爱java的分享家

Java 架构 面试 程序人生 经验分享

回顾“低代码”历史发展,是技术进步了还是倒退了?

优秀

低代码

恒源云(GPUSHARE)_训练一个专门捣乱的模型

恒源云

人工智能 深度学习 算力

分布式软时钟有多重要?|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

跨端分布式计算技术初探|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

字节跳动如何系统性治理 iOS 稳定性问题

字节跳动终端技术

ios 字节跳动 APM APP稳定性

2021年26家大厂Java面试题整理了360道(分布式+微服务+高并发)

热爱java的分享家

Java 架构 面试 程序人生 经验分享

硬科技起飞,这家成立仅三年的AI研究院已颇具国际风范

硬科技星球

广发证券携手HarmonyOS打造智慧金融服务|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

JS函数的this

Jeannette

CSS布局(五)之圣杯布局和双飞翼布局

Augus

CSS 11月日更

阿里蚂蚁花呗团队面试题:spring+分布式+jvm+session+redis

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

应急响应入门之Linux分析排查

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

SAP ERP classification 和 SAP Cloud for Customer 的同步

汪子熙

中间件 SAP ERP C4C 11月日更

SAP 公有云和私有云解决方案概述

汪子熙

公有云 云平台 SAP 11月日更 公有云私有云

Javascript的内存管理

Jeannette

TDengine在理想汽车物联网业务场景的落地实践

TDengine

tdengine 时序数据库

【Pandas学习笔记01】强大的分析结构化数据的工具集

恒生LIGHT云社区

Python 大数据 数据分析 pandas

两个小时手写了个Zookeeper分布式服务注册中心

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

Python代码阅读(第63篇):数字奇偶性

Felix

Python 编程 Code 阅读代码 Python初学者

元宇宙最缺的是内容,而云计算能帮上忙

百度开发者中心

云计算 元宇宙

JS柯里化和反柯里化

Jeannette

async/await 优雅永不过时

CRMEB

先到先得!Alibaba甩出第四次更新的JDK源码高级笔记(终极版)

热爱java的分享家

Java 源码 jdk 面试 经验分享

一周信创舆情观察(11.15~11.21)

统小信uos

行业分析| 大势所趋:元宇宙

anyRTC开发者

音视频 视频通话 虚拟现实 元宇宙

HarmonyOS低代码开发介绍|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

微信 ClickHouse 实时数仓的最佳实践

科技热闻

闭包与内存泄露

Jeannette

架构实战营 模块五

felix

#架构实战营

提示工程、微调和 RAG,你应该选择哪一种?_生成式 AI_InfoQ精选文章