认识大模型Embedding技术,加代码实战

图片

网址:https://itgogogo.cn

大家好

有朋友说想学习大模型应用开发技术,让我谈一谈。

首先大模型应用开发技术不需要我们掌握机器学习和深度学习的算法,但是要有编程思维,python 基础,然后跟着下面的步骤走,就能学得明白。

一、什么是 Embedding

Embedding (嵌入)是一个浮点数的向量(列表)。两个向量之间的距离度量它们的相关性,小的距离表示高相关性,大的距离表示低相关性。

Embedding (嵌入)也是是一种在机器学习和深度学习中广泛应用的技术,特别是自然语言处理(NLP)和其他涉及高维离散数据的领域。它指的是将原本高维且通常是离散的输入数据(如单词、短语、用户ID、商品ID等)映射到一个低维连续向量空间中的过程。这些低维向量称为嵌入(Embedding vectors)。

例如,“国王”和“王后”在嵌入向量的空间里,位置就会挨得很近;而“苹果”这个词,虽然也是个词,但因为它的意思和前两者差别较大,所以它的嵌入向量就会落在离“国王”和“王后”比较远的地方。

在这里插入图片描述

Embedding 不仅限于单词,还可以扩展到句子、文档、实体或其他类型的对象。通过训练诸如 Word2Vec、GloVe 或 BERT 等模型,可以从大规模文本数据中学习出这样的嵌入向量。这些嵌入向量可以被看作是输入数据在潜在语义空间中的表示,使得机器学习模型能够更好地理解和处理这些数据,从而改善下游任务(如文本分类、情感分析、问答系统、机器翻译等)的表现。

除了文本数据,嵌入技术也被应用于社交网络分析、推荐系统、图像识别(如位置嵌入)、图神经网络(如节点嵌入)等多种场景中,实现将复杂对象的有效编码和降维表示。

二、Embeddings 分类及对应模型

Embeddings 有许多种类别和变体,每种类型的 Embeddings 都有其特定的设计目标和应用场景,共同点在于它们都致力于将复杂而抽象的对象结构化并压缩到便于计算和比较的数值形式,以下是几种常见的 Embeddings 类型:

词嵌入

  • Word2Vec: 包括 CBOW (Continuous Bag-of-Words) 和 Skip-Gram 模型,由 Google 提出,用于学习单词之间的语义关系。
  • GloVe (Global Vectors for Word Representation): 由斯坦福大学开发,旨在结合全局统计信息和局部上下文窗口的优势来生成单词嵌入。
  • FastText: 由 Facebook AI 团队推出,不仅考虑单个单词,还考虑内部字符 n-gram,对于罕见词汇有更好的表现。
  • ELMo (Embeddings from Language Models): 利用双向 LSTM 对整个句子进行建模,产生上下文敏感的单词嵌入。

情景化话的词嵌入

  • BERT (Bidirectional Encoder Representations from Transformers): 由 Google 推出,利用Transformer架构的预训练模型,能够根据上下文提供动态的单词嵌入。
  • GPT (Generative Pre-training Transformer) 及其后续版本 GPT-2/3/4:由 OpenAI 开发,也是基于Transformer的自回归模型,同样能产出上下文相关的嵌入。
  • XLNetRoBERTa 等都是BERT之后改进或扩展的预训练模型。

句子和文档嵌入

  • Doc2Vec: 扩展了 Word2Vec,能够为整个文档生成统一的向量表示。
  • Average Word Embeddings: 将一段文本中所有单词的嵌入取平均作为整体的文本表示。
  • Transformers Sentence Embeddings: 如BERT的[CLS]标记对应的向量,或者专门针对句子级别的模型如Sentence-BERT。

实体/概念嵌入

  • Knowledge Graph Embeddings: 如 TransE、DistMult、ComplEx 等,用于将知识图谱中的实体和关系嵌入到低维向量空间中。

其他类型

  • 图像 Embeddings: 使用卷积神经网络(CNN )进行图像特征提取,得到的特征向量即为图像嵌入。
  • 音频 Embeddings: 在语音识别和声纹识别中,将声音信号转化为有意义的向量表示。
  • 用户/物品 Embeddings:在推荐系统中,将用户行为或物品属性映射到低维空间以进行协同过滤或基于内容的推荐。

还有一种图 Embeddings:是用于学习图结构的表示学习方法,将图中的节点和边映射到低维向量空间 中。通过学习图嵌入,可以将复杂的图结构转化为向量表示,以捕捉节点之间的结构和关联关系。这些方法可 以通过DeepWalk、Node2Vec、GraphSAGE等算法来实现。图嵌入在图分析、社交网络分析、推荐系统等领 域中广泛应用,用于发现社区结构、节点相似性、信息传播等图属性。

下面以 OpenAI 为例继续展开介绍

三、Embedding 在大模型中的价值

OpenAI已经产生了三代Embedding 模型,另外第一代在官方文档中已经被删除了,模型选择上,推荐使用最新的第三代。

版本模型每美元页数MTEB评估的性能最大输入分词器(编码)数据来源截止至
第三代text-embedding-3-small62,50062.3%8191cl100k_base2021年9月
第三代text-embedding-3-large9,61564.6%8191cl100k_base2021年9月
第二代text-embedding-ada-00212,50061.0%8191cl100k_base2021年9月
第一代-davinci--001、 -ada--001、 -babbage--001 -curie--001 等以 -001 结尾的模型--2046GPT-2/GPT-32020年 8 月

补充:Token的概念

模型通过将文本分解为令牌(Token)来理解和处理文本。Token 可以是单词,也可以是字符块。例如,单词“hamburger”被分解成标记“ham”、“bur”和“ger”,而很短且常见的单词像“pear”是一个 Token。许多 Token 以空格开头,例如“ hello”和“ bye”。

OpenAI 的 GPT 大模型的不足

1、训练的数据是存在截止时间的,无法获取最新信息

2、无法访问企业/个人的内部知识库

3、输入的 Token 数限制

Embedding 增强GPT的能力的过程

针对上面的问题, OpenAI 发布过这样一篇文档,说明如何使用两步搜索来增强GPT的能力:

搜索: 搜索内部的知识库,检索相关文本。

请求: 将检索到的文本内容部分发送给GPT大模型,并向其提出问题。

具体的操作步骤如下:

1、准备搜索数据(仅一次)

1)搜集数据:获取需要的数据,公开数据或者私有的数据

2)切块:将文档切分成短小的

3)嵌入:通过OpenAI API对切块的数据进行 Embedding 结果,

4)存储:存储 Embedding 结果,对于大型数据集的Embedding 结果,可以使用向量数据库进行保存。

2、搜索(每次查询一次) 给定用户问题,从OpenAI API生成查询的embeddings 使用embeddings,按照与查询相关性对文本部分进行排序

距离函数推荐使用:余弦相似性,

3、提问(每次查询一次)

将问题和最相关的部分插入到发送给GPT的消息中返回GPT的答案

Embedding 共有哪些作用

  • 搜索(其中结果按与查询字符串的相关性进行排名)
  • 聚类(其中文本字符串按相似性分组)
  • 建议(建议包含相关文本字符串的项目)
  • 异常检测(识别出相关性很小的离群值)
  • 多样性测量(分析相似性分布)
  • 分类(其中文本字符串按其最相似的标签分类)

四、实战-从数据集中获取 Embeddings

快速验证你的 OPENAI_API_KEY 是否有效!

在这里插入图片描述

加载数据集

准备:

1、OpenAI 的 API_KEY。

2、设置环境变量或者代码中初始化时传入。

// 默认OPENAI_BASE_URL=https://api.openai.com/v1,当使用代理时需要注意修改!

export OPENAI_BASE_URL=https://api.openai.com/v1

export OPENAI_API_KEY=sk-xxxxxx

安装所有依赖

# 安装所有依赖
!pip install openai tiktoken transformers plotly matplotlib scikit-learn torch torchvision scipy pandas

# openai 是 OpenAI 的 SDK
# Python做数据处理的时候,pandas,numpy库。pandas 提供了 DataFrame 数据结构,方便进行数据的读取、处理、分析等操作。
# tiktoken:使用tiktoken计数令牌。

导入相关库

# 导入相关库
import pandas as pd
import tiktoken

实现基础方法

在这里插入图片描述

设置全局变量:选择模型、编码方式

# 设置全局变量:选择模型、编码器
embedding_model = "text-embedding-3-small"
embedding_encoding = "cl100k_base"
# text-embedding-3-small 模型支持的输入最大 Token 数是8191,嵌入维度 1536。第三代模型中允许开发人员权衡使用嵌入的性能和成本,而降低嵌入维度。
max_tokens = 8000

设置要筛选的评论数量为1000

# 设置要筛选的评论数量为1000
top_n = 1000
 对DataFrame进行排序,基于"Time"列,然后选取最后的2000条评论。
 # 这个假设是,我们认为最近的评论可能更相关,因此我们将对它们进行初始筛选。
 df = df.sort_values("Time").tail(top_n * 2) 
 # 丢弃"Time"列,因为我们在这个分析中不再需要它。
 df.drop("Time", axis=1, inplace=True)
 # 从'embedding_encoding'获取编码
 encoding = tiktoken.get_encoding(embedding_encoding)

# 计算每条评论的token数量。我们通过使用encoding.encode方法获取每条评论的token数,然后把结果存储在新的'n_tokens'列中。
df["n_tokens"] = df.combined.apply(lambda x: len(encoding.encode(x)))

# 如果评论的token数量超过最大允许的token数量,我们将忽略(删除)该评论。
# 我们使用.tail方法获取token数量在允许范围内的最后top_n(1000)条评论。
df = df[df.n_tokens <= max_tokens].tail(top_n)

# 打印出剩余评论的数量。
len(df)

获取Embeddings并保存

在这里插入图片描述

生成的.csv内容如下:

图片

小结

我们认识了 **Embedding (嵌入)**是一个浮点数的向量(列表),两个向量之间的距离度量它们的相关性,小的距离表示高相关性,大的距离表示低相关性。知道了 Embedding 共有:词、句子、文档、图像等分类。还分析了 Embedding 在大模型中的价值。最后是 Embedding 的实战部分:从数据集中获取 Embedding 结果,并保存为 csv 文件。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值