了解Embeddings

了解Embeddings


什么是Embeddings

Embeddings(嵌入)在自然语言处理(NLP)中起着至关重要的作用,它们的主要目的是将高维、离散的文本数据(如单词或短语)转换为低维、连续的向量表示。这些向量不仅编码了词本身的含义,还捕捉到了词语之间的语义和句法关系。通过embeddings,原本难以直接处理的文本数据可以被机器学习模型理解和操作。

它就是将「不可计算」「非结构化」的词转化为「可计算」「结构化」的向量。


为什么需要将词或句子转换成Embeddings

保留语义信息:词嵌入能以一种量化的方式捕获词汇间的语义相似性,例如,“国王”与“王后”的嵌入可能会非常接近。

简化模型输入:将每个词映射到一个固定维度的向量,使得深度学习模型可以直接处理数值型的数据,而非原始的文本字符串。

便于计算和优化:连续向量形式的嵌入比原始的离散标签更适合用于神经网络等模型的数学运算,比如距离度量、加权求和以及线性变换等。

下游任务泛化能力:经过训练得到的高质量词嵌入往往能够很好地迁移到各种下游NLP任务中,如情感分析、问答系统、机器翻译等,无需重新从零开始学习词汇的含义。

 

Embeddings在OpenApi中的使用

示例请求(使用 curl)

curl https: //api.openai.com/v1/embeddings \
-H "Authorization: Bearer $OPENAI API KEY" \
-H "Content-Type:application/json"  \
-d '{
	"input": "The food was delicious and the waiter...",
	"model ": "ext - embedding - ada - 002 ",
	"encoding_format": "float"
}'

 

响应示例

 

嵌入对象结构

嵌入对象表示由嵌入端点返回的嵌入向量,
index(integer):  该嵌入在嵌入列表中的索引位置。
embedding(array):  嵌入向量,是一个浮点数列表。向量长度取决于所使用的模型,在嵌入指南中有具体说明,
object(string):  对象类型,始终为“embedding"。

 

Openapi Embeddings 模型

 

演示

import os
from openai import OpenAI

client = OpenAI(
    # This is the default and can be omitted
    api_key=os.environ.get("OPENAI API KEY"),
    base_url=os.environ.get("OPENAI API BASE"),
)

r = client.embeddings.create(
    model="text-embedding-ada-002",
    input="你好",
)

# 获取embedding
r.data[0].embedding
# 打印长度
len(r.data[0].embedding)

应用

  • 搜索(通过与查询字符串的相关性对结果进行排序)
  • 聚类(根据相似性将文本字符串分组)
  • 推荐(推荐具有相关文本字符串的项目)
  • 异常检测(识别与其他项关联度较低的离群点)
  • 多样性测量(分析相似性分布)
  • 分类(根据最相似标签对文本字符串进行分类)

end...

posted @   王竹笙  阅读(41)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示