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

相关文章

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

关于@RequestParam的主要用法详解

《关于@RequestParam的主要用法详解》:本文主要介绍关于@RequestParam的主要用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 基本用法2. 默认值3. 可选参数4. 绑定到对象5. 绑定到集合或数组6. 绑定到 Map7. 处理复杂类

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程