GPT微调和嵌入哪个好,大模型微调 和嵌入有什么区别?微调(fine-tuning),嵌入(embedding)的用法!

2024-08-27 13:28

本文主要是介绍GPT微调和嵌入哪个好,大模型微调 和嵌入有什么区别?微调(fine-tuning),嵌入(embedding)的用法!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GPT擅长回答问题,但是只能回答它以前被训练过的问题,如果是没有训练过的数据,比如一些私有数据或者最新的数据该怎么办呢?

这种情况下通常有两种办法,一种是微调(fine-tuning),一种是嵌入(embedding)。

现在基于自然语言和文档进行对话的背后都是使用的基于嵌入的向量搜索。OpenAI在这方面做的很好,它的Cookbook(http://github.com/openai/openai-cookbook) 上有很多案例,最近他们对文档做了一些更新。

图片

大模型GPT微调 和嵌入有什么区别?

微调就是在大模型的数据基础上做二次训练,事先准备好一批prompt-complition(类似于问答Q&A)的数据,生成新的模型,这个模型将会包含微调后的数据。

而嵌入则是每次向GPT发送消息(prompt)的时候,把你自己数据结果带上。

王建硕老师对于微调和嵌入有过精妙的比喻:
GPT就像一个已经训练好的家政阿姨,她懂中文,会做家务,但是对你家里的情况不了解。

微调就相当于阿姨第一次到你家干活的时候,你要花一小时时间告诉她家里的情况,比如物件的摆放、哪些地方不能动,哪些地方要重点照顾。

嵌入就相当于你省去了对阿姨进行二次培训的,而是在家里贴满纸条,这样阿姨一看到纸条就知道该怎么做了。

大模型LLM嵌入和大模型微调哪个更好?

嵌入门槛低,效果也不错,修改起来容易。缺点就是反应慢,需要检索

微调门槛高,反应快,缺点就是价格高

图片

嵌入embedding的

OpenAI的Cookbook也有类似的比喻:
微调就像你通过学习准备考试,是一种长期记忆,但过了一周后考试来临,模型可能会忘记一些,或者记错它从来没有读过的事实。

嵌入就像记笔记,是一种短期记忆,当考试的时候,你把笔记带上,随时翻看笔记,对于笔记上有的内容可以得到准确的答案。

什么是 Search-Ask-RAG

也就是先在本地文档库中Search,拿到本地的数据结果,再去Ask,把搜索结果和问题一起交给GPT,这样GPT可以根据你提供的内容以及它模型中的数据,一起将结果返还给你。

必须用向量搜索RAG吗?

并非一定要基于向量的搜索,可以有多重搜索方式:

· 基于关键字搜索

· 基于图形的搜索

· 基于向量的搜索

对于技术实现的细节,OpenAI的Cookbook上也有详细的介绍。

更多细节建议参考:
https://github.com/openai/openai-cookbook/blob/main/examples/Question_answering_using_embeddings.ipynb

LLM嵌入embedding有什么限制?

嵌入的文本搜索相对于微调来说,会有输入限制

嵌入的搜索提问方式相对于微调有一个缺点就是它每次附带的文本数量是有限制的,因为除了原始的问题,它还需要带上搜索出来的问题。

就好比你有成书架的教科书可以借鉴,但每次却只能翻看其中几页笔记。

如果你想构建一个对大量文本问答的系统,OpenAI建议(Search-Ask)的方法。

文本搜索相对于微调来说,search-ask的缺点是每次带上下文,所有会有输入字数限制,但是这种对于准确问答,前面有一层精准的search,准确度来说模型更容易得到正确的答案

这两种方案,用户自有数据也都必须做成q&a形式吗?

比如我有1MB的纯文本私有数据,没有经过人工q&a处理。我想对这些数据提问,当问题不在笔记中时才用chatgpt。

A 对于嵌入的方案,数据不必做成Q&A,但是需要拆成小块,因为Ask的时候也是受最大长度限制的,所以先搜索到文本块(chunk),然后提问的时候带上搜索出来的若干块

GPT 的上下文窗口限制,你怎么能在 pdf、书籍、文档等上“训练”它呢?

你必须:

将数据压缩成数据嵌入并将其传递给提示(称为“上下文压缩”),或者使用通义千问的pdf api long text 进行提取!

如果嵌入的数据太大而无法放入上下文窗口,则需要使用矢量数据库并使用一些搜索/排名启发式方法分两部分回答查询:

\1. 找到与此矢量化用户查询相关的所有相关文档,然后

\2. 将前 n 个最接近的文档与用户查询一起传递到上下文中,并要求 ai 仅引用其上下文中的内容来回答用户问题。这称为“语义查询”

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

这篇关于GPT微调和嵌入哪个好,大模型微调 和嵌入有什么区别?微调(fine-tuning),嵌入(embedding)的用法!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111798

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

Before和BeforeClass的区别及说明

《Before和BeforeClass的区别及说明》:本文主要介绍Before和BeforeClass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Before和BeforeClass的区别一个简单的例子当运行这个测试类时总结Before和Befor

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解