什么是微调?什么是RAG?两者有什么关系?
什么是微调?什么是RAG?两者有什么关系?
一、微调大模型
1.1定义
模型微调(Fine-tuning)是指在已有的大规模预训练语言模型(如GPT-3、GPT-4、BERT等)基础上,针对特定任务或领域进行的二次训练过程。预训练模型通常在大规模无标注文本数据上进行训练,以学习语言的通用表示和规律。微调则是利用针对性的小规模、有标签的数据集,调整模型参数以使其更好地适应并精准完成特定任务,如文本分类、问答、机器翻译、情感分析等。
举一个通俗的例子: 微调大模型—专业音乐家
假设有一个通用的音乐家(预训练的大模型),他学会了很多类型的音乐,比如古典乐、流行乐、爵士乐等。
现在,你希望这个音乐家专注于弹钢琴,尤其是演奏肖邦的钢琴曲(特定任务)。
然后:
- 你为他提供了大量的肖邦钢琴曲谱(特定任务数据)。
- 通过反复练习,他调整了自己的演奏风格(模型权重被优化)。
- 最终,这位音乐家成为一名肖邦钢琴曲的专家。
结果:
1.这个音乐家(模型)已经完全适应了肖邦钢琴曲的风格,如果再让他弹别的曲目,他可能需要重新调整(灾难性遗忘)。
2.这就是微调大模型:对模型进行训练,使其专注于某一特定任务。
当然了微调大模型也分为很多种类,例如:全参数微调,参数高效微调(LoRA,Prompt-Tuning等),增量微调等
如下图所示:
1.2使用
下面主要介绍两种微调方式
(1)LoRA:Llama-3-8B-Instruct QLoRA 快速微调指南
(2)llama-factory:llama-factory
二、嵌入RAG
2.1定义
RAG嵌入(Retrieval-Augmented Generation with Embeddings)又叫做检索增强生成技术,是一种结合语义检索和生成的技术。通过将文档和查询转化为高维向量(嵌入)表示,RAG利用相似度计算从知识库中检索相关内容,再将检索结果作为上下文输入生成模型生成答案。它无需微调模型,能动态扩展知识库,适用于问答系统、文档生成和实时知识更新等场景,具有灵活、高效的特点。
依旧举一个例子:RAG—百科全书+弹性音乐家
你找到了一个懂得基础音乐知识的音乐家(预训练大模型),但他对任何特定曲风的理解可能不够深入。
于是,你给他配备了一本歌谱百科全书(检索系统),当他需要演奏特定曲目时,可以随时查找相关的歌谱。
过程
- 你提问:“弹一首肖邦的《夜曲》吧!”
- 音乐家会立刻打开歌谱百科全书,查找关于《夜曲》的详细信息(检索相关知识)。
- 他根据查到的信息演奏出《夜曲》(生成答案)。
结果
1.音乐家并没有改变自己的能力(模型权重没有变),他依赖于快速查找歌谱来演奏。
2.这就是RAG:结合外部知识库,通过检索增强模型的能力。
2.2步骤
RAG又称检索增强生成技术,所以就如其名字所说,最主要的步骤就是信息检索、文本增强和文本生成
RAG的目的是通过从外部知识库检索相关信息来辅助大语言模型生成更准确、更丰富的文本内容。那我们如何理解RAG的检索、增强和生成呢?
- 检索:检索是RAG流程的第一步,从预先建立的知识库中检索与问题相关的信息。这一步的目的是为后续的生成过程提供有用的上下文信息和知识支撑。
- 增强:RAG中增强是将检索到的信息用作生成模型(即大语言模型)的上下文输入,以增强模型对特定问题的理解和回答能力。这一步的目的是将外部知识融入生成过程中,使生成的文本内容更加丰富、准确和符合用户需求。通过增强步骤,LLM模型能够充分利用外部知识库中的信息。
- 生成:生成是RAG流程的最后一步。这一步的目的是结合LLM生成符合用户需求的回答。生成器会利用检索到的信息作为上下文输入,并结合大语言模型来生成文本内容。
RAG的“检索、增强、生成”,谁增强了谁,谁生成了答案,主语很重要。是从知识库中检索到的问答对,增强了LLM的提示词(prompt),LLM拿着增强后的Prompt生成了问题答案。
2.3使用
RAG的嵌入我们也介绍两种方法
langchain-RAG:langchain-RAG
实现github自动拉取并进行分析的助手:《大模型应用开发范式》-利用RAG技术开发Github代码仓库学习助手! - 飞桨AI Studio星河社区 (baidu.com)
三、二者有什么不同?
大模型微调旨在通过调整模型的权重,使其在特定任务上表现得更加优异。通过微调,模型能够专注于特定领域的语言特征或任务需求,提升在该领域的表现。这一过程需要通过优化模型的参数来完成,通常依赖于大量的领域相关标注数据集,如分类、生成、翻译等任务的数据,以及强大的计算资源(GPU/TPU)。微调后的模型能够直接具备处理特定任务的能力,通常不依赖外部数据源,因此可以提供高质量的结果,尤其是在高质量标注数据的支持下。然而,微调也有其局限性:首先,训练需要大量的计算资源,且对数据的需求较高;其次,微调后的模型通常专注于某一任务或领域,难以应对多个任务的需求,需要针对不同任务进行不同的微调操作。此外,微调可能导致模型失去原有的通用性,因此在一些需要处理多样化任务的场景下并不适用。适合微调的大模型场景通常包括需要高性能的专业任务,如医学领域的诊断、法律文档分析等,这些领域有充足的标注数据和计算资源来支持模型微调。
嵌入式RAG(Retrieval-Augmented Generation)则通过将检索和生成模型结合起来,在生成过程中动态地获取外部知识,从而提升答案的准确性和相关性。RAG方法依赖于构建一个高效的知识库(如文档、网页或数据库),并使用嵌入模型将知识库中的文档转化为向量,这些向量能够在检索过程中与用户查询进行匹配。通过计算查询和文档的相似性,系统可以快速从知识库中检索出最相关的文档,并将这些文档作为上下文输入到生成模型中,帮助生成答案。与微调不同,RAG不需要直接调整大语言模型的权重,因此能够保持原始模型的通用性,并且容易扩展到新的领域,尤其是在知识库不断更新的情况下,只需要更新知识库本身即可。此外,由于生成模型与外部知识库协同工作,RAG能够灵活地应对不同任务,不依赖于大量的标注数据,只需在知识库中保持必要的信息,具有较高的数据隐私性。然而,RAG的性能依赖于知识库的质量和检索的准确性,如果知识库中的信息不完整或检索效率低下,可能导致生成结果不准确。此外,RAG系统需要维护检索和生成的流程,增加了系统的复杂性。嵌入式RAG特别适合用于知识密集型的场景,如问答系统、文档分析等,并且适用于那些知识库频繁更新的领域,尤其是在数据隐私要求较高的情况下,不方便直接用来微调模型的情境。
下面放一张图来进行比较:
原文地址:https://blog.csdn.net/qq_74722169/article/details/144060515
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!