速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

提示工程、微调和 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:554701

评论 1 条评论

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

统一元数据,数据湖Catalog让大数据存算分离不再是问题

华为云开发者联盟

大数据 元数据 存算分离 华为云MRS 数据湖Catalog

RTC技术干货 | 音频质量评价体系那些事

拍乐云Pano

音视频 WebRTC RTC 3A算法 音频

Uniswap v3揭开真面目NA公链(Nirvana)NAC公链表示不服

区块链第一资讯

INTERSPEECH2020 语音情感分析论文之我见

华为云开发者联盟

数据处理 模型 音频 语言情感分析 INTERSPEECH2020

有了人工智能技术,告警管理会发生什么变化?

睿象云

人工智能 事件管理

微众银行区块链开源基于Rust的Wasm合约语言框架Liquid

Patract

智能合约 rust polkadot Patract Wasm

当 ITOA 遇上 Cloud Alert,企业可以至少每年节省 3600 小时!

睿象云

智能告警

零代码实现一对一表关系和无限主子表级联保存

crudapi

API crud crudapi 主子表 多对多

Rust从0到1-所有权-概念介绍

rust 所有权

Java-技术专题-Synchronized锁的分析

洛神灬殇

Java synchronized

gorm源码阅读之callback

Geek_7nijc5

Go 语言 gorm

2021年企业需要了解的和云计算相关的6大趋势

云计算

【LeetCode】笨阶乘Java题解

Albert

算法 LeetCode 4月日更

需求分析是什么?

Simon

架构实战营

Apache Flink Meetup · 上海站,超强数据湖干货等你!

Apache Flink

flink 数据湖 iceberg

FloydHub 2020年最佳机器学习书籍之一《可解释机器学习》中文版来啦!

博文视点Broadview

ZooKeeper 会话的秘密

HelloGitHub

Java zookeeper ZooKeeper原理 zk

有道云笔记新版编辑器架构设计(下)

有道技术团队

架构 大前端

节能降耗——搭建绿色IDC能耗与管控系统

一只数据鲸鱼

物联网 数据中心 数据可视化 IDC 机房管理

一周信创舆情观察(3.22~3.28)

统小信uos

AIOps 让「事件管理」变得更加智能

睿象云

AIOPS 告警管理

答题拿奖两不误:华为云知乎金牌答题官,就是你!

华为云开发者联盟

程序员 华为云 知乎答题 答案 金牌答题官

年纪轻轻,为什么要搞中间件开发?“路怎么走,让你们自己挑”

小傅哥

Java 分布式 小傅哥 中间件 架构设计

面试官:什么是死锁?怎么排查死锁?怎么避免死锁?

小林coding

多线程 操作系统 死锁

RUOYI 框架教程 12| 若依视图解决多表查询,就是这么简单!

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

华为帐号服务学习笔记(一):什么是HMS,什么是华为帐号服务

Coding狙击

android HMS

LiteOS内核源码分析:任务栈信息

华为云开发者联盟

LiteOS 任务栈 栈指针 LOS_StackInfo LOS_Task

一文掌握GaussDB(DWS) SQL进阶技能:全文检索

华为云开发者联盟

sql 全文检索 华为云 GaussDB(DWS) 字段

阿里云:城市大脑数据智能解决方案

不脱发的程序猿

大数据 阿里云 城市大脑 数据智能解决方案 4月日更

华为帐号服务学习笔记(二):OAuth2.0协议详解

Coding狙击

android 华为 OAuth 2.0 HMS

无人驾驶平台,让IT没有难做的测试

鲸品堂

方法论 无人驾驶

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