前言
随着 AI 应用的持续火热,许多并不了解 AI 技术的人可能会被众多专业术语搞得一头雾水。相信大家经常会听到「嵌入(embedding)」和「向量(Vector)」这几个词。那么,这些术语到底是什么意思呢?在与我的产品经理交流时,我发现他对这些概念仍然处于似懂非懂的状态。本文将深入探讨这些概念,帮助大家更好地理解它们在 AI 应用中的重要性。
什么是 Embedding 和 向量?
Embedding
Embedding 是一种将高维数据(如文本、图像等)映射到低维空间的技术。具体来说,embedding 是将文本嵌入到向量空间中,用向量来表示文本的含义。通过这种方式,我们可以将复杂的文本数据转换为固定长度的向量,使其更易于处理和分析。
向量
向量是一种表示有大小和方向的量的工具。如果把向量想象成一支箭头,那箭头的长度代表了大小,箭头的指向就代表了方向。在大模型中,向量的元素表示单词的语法角色、语义特性以及与其他单词的关联程度,因此可以使用多维度的向量
来表示不同语境下的文本
。我们通过向量嵌入模型(Embedding)将文本创建一个多维的向量数组,将所有维度的数据装在一起。
向量在大模型中的应用
在大模型中,向量的应用非常广泛。以下是一个简单的示例,展示了如何使用向量嵌入模型将文本转换为向量:
js 代码解读复制代码const apple = await ollamaEmbeddings.embedQuery('苹果');
// 利用 ollamaEmbeddings - llama3 的向量模型,对 ’苹果‘ 进行向量化。得到一个 4096 的高维向量
(4096) [-0.07958430796861649, 0.6035313010215759, 0.03968646004796028,
-0.08149561285972595, 0.1804697960615158, -0.4402042031288147, -0.12610526382923126,
-0.37151840329170227, 0.4065650403499603, -0.6496384739875793, -0.8483172655105591,
1.2612190246582031, 0.510674774646759, -1.1137826442718506, -0.7686999440193176,
1.8895138502120972, -0.489030122756958, -0.3428537845611572, 0.05110445246100426,
0.9295482635498047, -0.2418692708015442, 0.5137919783592224, -