大模型时代Embedding技术简介

news2024/11/26 8:58:30

Embeddings技术简介及其历史概要

在机器学习和自然语言处理中,embedding是指将高维度的数据(例如文字、图片、音频)映射到低维度空间的过程。embedding向量通常是一个由实数构成的向量,它将输入的数据表示成一个连续的数值空间中的点。
embedding就是一个N维的实值向量,它几乎可以用来表示任何事情,如文本、音乐、视频等。本文主要关注文本的embedding。
 

 embedding重要性在于它可以表示单词或者语句的语义。
实值向量的embedding可以表示单词的语义。embedding向量是根据单词在语言上下文中的出现模式进行学习的。
例如,如果一个单词在一些上下文中经常与另一个单词一起出现,那么这两个单词的embedding向量在向量空间中就会有相似的位置。这意味着它们有相似的含义和语义。

embedding技术的发展可以追溯到20世纪50年代和60年代的语言学研究,其中最著名的分布式语义理论认为,单词的语义可以通过它们在上下文中的分布来表示,也就是说,单词的含义可以从其周围的词语中推断出来。

在计算机科学领域,最早的embedding技术可以追溯到20世纪80年代和90年代的神经网络研究。在那个时候,人们开始尝试使用神经网络来学习单词的embedding。它可以根据单词的上下文来预测下一个单词,并且可以使用这个模型来生成单词的embedding。

自从2010年左右以来,随着深度学习技术的发展,embedding技术得到了广泛的应用和研究。在这个时期,出现了一些重要的嵌入算法,例如Word2Vec、GloVe和FastText等。这些算法可以通过训练神经网络或使用矩阵分解等技术来学习单词的embedding。这些算法被广泛用于各种自然语言处理任务中,例如文本分类、机器翻译、情感分析等。

近年来,随着深度学习和自然语言处理技术的快速发展,embedding技术得到了进一步的改进和发展。例如,BERT、ELMo和GPT等大型语言模型可以生成上下文相关的embedding,这些embedding可以捕捉单词的语义和上下文信息。

Embedding的主要价值在哪里?

如前所述,embedding向量是包含语义信息的。这意味着含义相近的单词embedding向量,在空间中有相似的位置。当然embedding也有其它优点。

例如,实值向量表示的embedding可以进行向量运算。例如,通过对embedding向量执行向量加法和减法操作,可以推断出单词之间的语义关系。例如,对于embedding向量表示的“king”和“man”,执行“queen = king - man + woman”操作可以得到一个向量表示“queen”,这个向量与实际的“queen”向量在向量空间中非常接近。

此外,实值向量embedding还可以在多个自然语言处理任务中进行共享和迁移。例如,在训练一个情感分析模型时,可以使用在句子分类任务中训练的嵌入向量,这些向量已经学习到了单词的语义和上下文信息,从而可以提高模型的准确性和泛化能力。

综上所述,实值向量embedding可以通过从大量的语言数据中学习单词的语义和上下文信息,从而能够表示单词的语义,并且可以进行向量运算和在不同自然语言处理任务中共享和迁移。

Embedding在大模型中的价值

前面说的其实都是Embedding在大模型之前的价值。大语言模型时代,大家发现embedding有了新的价值,即解决大模型的输入限制。

像 GPT-3 这样的语言模型有一个限制,即它们可以处理的输入文本量有限。这个限制通常在几千到数万个tokens之间,具体取决于模型架构和可用的硬件资源。

这意味着对于更长的文本,例如整本书或长文章,可能无法一次将所有文本输入到语言模型中。在这种情况下,文本必须被分成较小的块或“片段”,然后再由语言模型单独处理。但是,这种分段可能会导致输出的上下文连贯性和整体连贯性问题,从而降低生成文本的质量。

这时候就能体现Embedding的重要性了。首席那将单词和短语表示为高维向量,Embedding允许语言模型以紧凑高效的方式编码输入文本的上下文信息。然后,模型可以使用这些上下文信息来生成更连贯和上下文适当的输出文本,即使输入文本被分成多个片段。

此外,可以在大量文本数据上预训练Embedding,然后在小型数据集上进行微调,这有助于提高语言模型在各种自然语言处理应用程序中的准确性和效率。

如何基于Embedding让大模型解决长文本(如PDF)的输入问题?

这里用一个案例来说明如何用Embedding来让ChatGPT回答超长文本中的问题。

如前所述,大多数大语言模型都无法处理过长的文本。假设此时你有一个很长的PDF,那么,你该如何让大模型“读懂”这个PDF呢?

首先,你可以基于这个PDF来创建向量embedding,并在数据库中存储(如Pinecone)。

接下来,假设你想问个问题“这个文档中关于xxx是如何讨论的?”。此时需要两个向量embedding了,一个是你的问题embedding,一个是之前PDF的embedding。用问题的embedding,去向量数据库中搜索PDF中与问题embedding最相似的embedding。然后,问题embedding和检索的得到的最相似的embedding一起给ChatGPT,最后让ChatGPT来回答。

当然,你也可以针对问题和检索得到的embedding做一些提示优化,来优化ChatGPT的回答。

如何生成和存储Embedding

生成Embedding的方法有很多。这里列举几个比较经典的方法和库。

  • Word2Vec。一种基于神经网络的模型,用于将单词映射到向量空间中。Word2Vec包括两种架构:CBOW (Continuous Bag-of-Words) 和 Skip-gram。CBOW 通过上下文预测中心单词,而 Skip-gram 通过中心单词预测上下文单词。这些预测任务训练出来的神经网络权重可以用作单词的嵌入。
  • GloVe。全称为 Global Vectors for Word Representation,是一种基于共现矩阵的模型。该模型使用统计方法来计算单词之间的关联性,然后通过奇异值分解(SVD)来生成嵌入。GloVe 的特点是在计算上比 Word2Vec 更快,并且可以扩展到更大的数据集。
  • FastText。是由 Facebook AI Research 开发的一种模型,它在 Word2Vec 的基础上添加了一个字符级别的 n-gram 特征。这使得 FastText 可以将未知单词的嵌入表示为已知字符级别 n-gram 特征的平均值。FastText 在处理不规则单词和罕见单词时表现出色。
  • OpenAI的Embeddings。这是OpenAI官方发布的Embeddings的API接口。目前有2代产品。目前主要是第二代模型:text-embedding-ada-002。它最长的输入是8191个tokens,输出的维度是1536。

这些方法都有各自的优点和适用场景,选择最适合特定应用程序的嵌入生成方法需要根据具体情况进行评估和测试。有人测试过,OpenAI应该是目前最好的。收费,1000个tokens只要0.0004美元,也就是1美元大约可以返回3000页的内容。获取之后直接保存就行。

目前,embedding的保存可以考虑使用向量数据库。

  • Pinecone的产品,最近刚以10亿美元的估值融资了1亿美金。Shopify, Brex, Hubspot都是它产品的用户。
  • Milvus是一个开源的向量数据库。
  • Anthropic VDB,这是Anthropic公司开发的安全性高的向量数据库,能够对向量数据进行改变、删除、替换等操作,同时保证数据库完整性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/753694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SciencePub学术 | 区块链类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 区块链类重点SCIE&EI征稿中!信息如下,录满为止: 一、期刊概况: SCI-01 【期刊简介】IF:4.0-4.5,JCR2区,中科院3区; 【检索情况】SCIE&EI双检&…

另一个流行漏洞。

Microsoft Office 和 Windows HTML 中的 CVE-2023-36884 漏洞。该漏洞由供应商公开披露,但尚未修补。Microsoft 意识到利用该漏洞的针对性攻击。据了解,RomCom 组织曾在此类攻击中使用勒索软件 Industrial Spy 和 Cuba。 可能导致什么后果? …

奇迹MU架设教程:SQL Server 2008数据库的安装教程

不管是搭建什么游戏,都是有数据库的,奇迹MU用的是SQL 数据库,根据服务器系统选择SQL server版本,我比较喜欢用Windows server 2008R2系统,所以我安装的是SQL server 2008。作为架设奇迹很重要的数据库程序,…

python中文版下载安装教程,python中文版下载官网

大家好,本文将围绕python中文版软件下载百度网盘展开说明,python中文版下载安装教程是一个很多人都想弄明白的事情,想搞清楚python中文最新版下载需要先了解以下几个事情。 1、python下载安装教程_百度知道 python下载安装教程:自…

Linux中ssh登陆慢的两种原因

useDNS配置导致登陆慢 如果ssh server的配置文件(通常是 /etc/ssh/sshd_config )中设置 useDNS yes ,可能会导致 ssh 登陆卡住几十秒。将该配置项设为 no,然后重启 ssh 服务,再次登陆就恢复正常。将useDND配置为yes会…

Effective Java笔记(7)消除过期的对象引用

当你从手工管理内存的语言(比如 C 或 C++)转换到具有垃圾回收功能的比如 Java 语言时,程序员的工作会变得更加容易,因为当你用完了对象之后,它们会被自动回收 。 当你第一次经历对象回收功能的时…

中国人民大学与加拿大女王大学金融硕士——引领你走在金融行业前沿

金融是现代经济的血脉,而金融行业高质量发展取决于金融人才。新常态下,中国经济进入新的阶段,同时也对金融人才培养提出了新的要求。针对在金融行业沉淀多年的在职人士而言,是否需要更加系统化的学习金融知识呢,中国人…

Python自动化之win32利器pywin32

文章目录 前言一、GUI1.1 获取、关闭窗口1.2 窗口截图1.3 创建窗口 二、文件、目录2.1 查找2.2 创建2.3 复制/移动2.4 删除2.5 读取/写入 三、服务3.1 查找3.2 安装 四、案例4.1 自动发送微信消息4.2 Excel 操作4.3 监控文件夹 参考 前言 PyWin32 是一个Python库,用…

【vue】路由的搭建以及嵌套路由

目的:学习搭建vue2项目基础的vue路由和嵌套路由 1.npm 安装 router npm install vue-router3.6.52.src下新建文件夹router文件夹以及文件index.js index.js import Vue from vue import VueRouter from "vue-router" import Home from ../views/Home.…

【Linux】- 组管理和权限管理

组管理和权限管理 1.1 Linux 组基本介绍1.2 权限的基本介绍 1.1 Linux 组基本介绍 在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件 有所有者、所在组、其它组的概念。 所有者所在组其它组改变用户所在的组 文件/目录 所有者 一般为文…

关于Windows 11 docker desktop 运行doris 容器时vm.max_map_count=2000000的设置问题

需要一个简单的测试环境,于是准备用docker启动一个1fe 1be的简单玩一下 如果be容器启动后再去修改 /etc/sysctl.conf sysctl -w vm.max_map_count2000000 这个参数是没用的,be仍然会启动失败 这时可以打开cmd wsl --list C:\Users\pc>wsl --list …

Docker基础——初识Docker

Docker架构 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。 Docker 客户端(Client) : Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。Docker 主机(Host…

MMDeploy部署YOLOX-x模型

环境搭建 本文初始环境为PyTorch 2.0.0、Python 3.8(ubuntu20.04)、Cuda 11.8 OpenMMLab基础环境 首先安装OpenMMLab基础环境,以下代码均在命令窗口下输入 pip install openmim mim install mmcv-full mim install "mmengine0.7.2"git clone https://…

太阳能供电户外视频远程监控4G无线物联网工业路由器ZR3000

太阳能供电技术常被应用于环保节能的项目中,太阳能具备节能环保、寿命长、性能稳定、维护成本低等特点,被各行各业采纳使用。大多数太阳能应用于户外,存在监控点距离较远、取电困难、宽带光纤布线成本高、环境恶劣等问题,现场还有…

ansible使用playbook剧本

目录 一、执行配置文件 1、修改hosts文件 2、编写yml脚本 3、语法检查[rootansible ~] ansible-playbook --syntax-check ansible.yml 4、预测试 5、执行命令 一、执行配置文件 Playbook配置文件使用YAML语法,具有简介明了,结构清晰等特点。Playbo…

对OpenAI重拳出击!美国政府出手「开源」ChatGPT,Altman惊慌连发3推

FTC突然对OpenAI展开调查,Altman连发3推澄清。FTC对阵OpenAI的大戏正缓缓拉开帷幕。 重磅!美国联邦贸易委员会的调查说来就来! 调查对象不是别人,正是风头正旺的OpenAI。 一封长达20页的调查要求书直接给了Sam Altman当头棒喝。…

【并发编程的艺术读书笔记】从内存图来理解java是如何执行多线程的

从内存图来理解java是如何执行多线程的 一、内存图简介 众所周知,java类中的成员变量会保存到方法区、java运行时的方法会存入栈中,随之方法中的局部变量也是存储在栈中的,引用类型(new出来的对象)存储在堆内存中。下…

【C++/嵌入式笔试面试八股】二、24.TCP三次握手四次挥手 | TCP可靠性

TCP三次握手四次挥手 64.TCP头部中有哪些信息?❤️ TCP数据报格式(左图) UDP数据报格式也放这(右图),不具体解释了。 结合三次握手四次挥手来看 端口: 区分应用层的不同应用进程 扩展:应用程序的端口号和应用程序所在主机的 IP 地址统称为 socket(套接字),IP:端口…

Linux - 安装nacos 2.1.0

安装包下载 网址为 https://github.com/alibaba/nacos/tags 点击访问 本人选择的nacos版本为2.1.0 与之对应的spring代码版本为 <spring.boot.version>2.3.12.RELEASE</spring.boot.version> <spring.cloud.version>Hoxton.SR12</spring.cloud.version…

运输层(TCP运输协议相关)

运输层 1. 运输层概述2. 端口号3. 运输层复用和分用4. 应用层常见协议使用的运输层熟知端口号5. TCP协议对比UDP协议6. TCP的流量控制7. TCP的拥塞控制7.1 慢开始算法、拥塞避免算法7.2 快重传算法7.3 快恢复算法 8. TCP超时重传时间的选择8.1 超时重传时间计算 9. TCP可靠传输…