这个系列用于记录我的大语言模型学习过程
前言
LLM中的Embedding是一个至关重要的概念,它在大规模语言处理任务中发挥着核心作用。这篇用于介绍Embedding。
一、Embedding的基本概念
Embedding,即嵌入,是指将高维度的数据(如文本、图片、视频等)映射到低维度空间的过程。在LLM中,Embedding通常指的是将自然语言文本中的词汇、句子或更复杂的文本结构转换为固定长度的向量表示。这些向量能够捕捉文本的语义信息,使得计算机能够更好地理解和处理自然语言数据。其背后的主要想法是,相似或者相关的对象在嵌入空间中的距离应该很近。
- 语义表示: 词嵌入能够有效地表示词语的语义信息,使得相似含义的词语在向量空间中的表示更为接近,如“king”和“queen”在向量空间中的距离应该接近,因为它们都与“royalty”相关联。
- 语法关系: 词嵌入可以捕捉到词语之间的语法关系,例如在向量空间中,“man”到“woman”的向量应该大致等于“king”到“queen”的向量。
- 输入表示: 在很多自然语言处理任务中,词嵌入被用作模型的输入表示,提供了更丰富的语义信息,有助于提升模型在文本理解和生成任务中的性能。
- 降低维度:将高维稀疏的数据转换为低维稠密的向量表示,有助于减少计算复杂度,提高处理效率。
二、实现方式
这里简单展示一下怎么调用zhipu的API,智谱有封装好的SDK,直接调用即可。
from zhipuai import ZhipuAI
def zhipu_embedding(text: str):
api_key = "your api key"
client = ZhipuAI(api_key=api_key)
response = client.embeddings.create(
model="embedding-2",
input=text,
)
return response
# text = '要生成 embedding 的输入文本,字符串形式。'
text = "你好!"
response = zhipu_embedding(text=text)
print(f'response类型为:{type(response)}')
print(f'embedding类型为:{response.object}')
print(f'生成embedding的model为:{response.model}')
print(f'生成的embedding长度为:{len(response.data[0].embedding)}')
print(f'embedding(前10)为: {response.data[0].embedding[:10]}')
response为zhipuai.types.embeddings.EmbeddingsResponded类型,我们可以调用object、data、model、usage来查看response的embedding类型、embedding、embedding model及使用情况。
输出结果如下图所示。

其他更详细的API调用参考:Embeddings Model API :: Spring AI Reference
总结
LLM中的Embedding是一种将高维数据转换为低维向量表示的技术,它在自然语言处理任务中发挥着重要作用。通过捕捉文本的语义信息并降低数据维度,Embedding使得计算机能够更好地理解和处理自然语言数据。随着技术的不断进步,我们可以期待Embedding在未来发挥更加重要的作用。
154

被折叠的 条评论
为什么被折叠?



