Embedding 模型

张开发
2026/4/11 20:56:36 15 分钟阅读

分享文章

Embedding 模型
一、一句话先定性Embedding 模型是一个“翻译官”它把人类语言一段文字翻译成计算机能听懂的语言——一串固定长度的数字列表也就是向量。比如用户问“红烧肉怎么做”翻译后得到[0.23, -0.41, 0.07, 0.52, ...]共 1536 个数字向量里的每一个数字可以理解为模型在“语义空间”里给这段文字打的一个“坐标”。语义相似的文本它们的坐标会离得很近。二、核心概念什么是“固定长度”不管是 10 个字的短句还是 500 字的长文Embedding 模型输出向量的数字个数是固定不变的。比如模型输出向量维度text-embedding-3-small1536个数字text-embedding-3-large3072个数字bge-large-zh1024个数字为什么必须固定因为下游任务检索、分类、聚类需要用一个统一格式来比较两段文字的相似度。如果两段文字转出来的向量长度不一样就没法直接计算“它们有多像”。三、具体原理以 text-embedding-3-small 为例它是怎么把文字变成 1536 个数字的整个过程分三个步骤我们一步步拆开看。 第 1 步分词Tokenization—— 把句子切成小块模型首先把输入文本拆成更小的单元叫做token。一个 token 可以是一个单词、一个汉字或者一个子词比如“unbelievable”可能被切成 “un” “believe” “able”。例子输入文本猫喜欢吃鱼经过分词后可能被切成[猫, 喜欢, 吃, 鱼]四个 token具体切法取决于模型的分词器。每个 token 都有一个唯一的索引编号方便后续查找。这就像每个词都有一个“身份证号”但此时这些身份证号只是代号还不包含语义信息。 第 2 步查表取初始向量Embedding Lookup—— 给每个 token 配一个“初始草稿”每个 token 在模型内部都有一个初始向量通常存在一个叫Embedding 矩阵的表里。这个初始向量是模型在预训练过程中逐渐学出来的不是随便给的。例子模型可能给猫这个 token 的初始向量是[0.12, -0.35, 0.78, ...]1536 个数字给喜欢的初始向量是[0.45, 0.21, -0.14, ...]给吃的初始向量是[0.33, -0.08, 0.56, ...]给鱼的初始向量是[0.27, -0.44, 0.69, ...]注意此时这只是一个“草稿”还没有结合整句话的上下文。 第 3 步通过 Transformer 网络“互相看”—— 根据上下文调整每个向量这是最核心的一步。模型会把这些 token 的初始向量一起送入一个深度神经网络通常是 Transformer 架构让每个 token“看到”其他所有 token然后根据整句话的语境重新调整自己的向量。Transformer 的两个关键机制自注意力机制Self-Attention让每个 token 的向量在更新时参考句子中其他 token 的信息。比如猫这个词在猫喜欢吃鱼和猫是一种动物这两句话中经过注意力机制调整后得到的最终向量会有所不同因为它在不同语境下扮演的角色不同。多头注意力Multi-Head Attention模型会从多个不同角度比如语法角度、语义角度、上下文距离角度等同时学习 token 之间的关系然后把多个角度的信息融合起来让向量表达更丰富。经过若干层 Transformer 处理后模型会得到每个 token 的最终向量。然后为了得到一个代表整个句子的单一向量常见做法是取所有 token 向量的平均值或者提取一个特殊标记[CLS]CLS 是 “classification” 的缩写在 BERT 类模型中被用来聚合整个序列的信息对应的最终向量作为整个句子的代表。最终输出1536 个数字就是整句话的语义向量。用一句话概括分词 → 查初始向量 → Transformer 让它们“互相看”调整 → 输出固定长度向量。四、其他主流模型的横向对比模型参数量向量维度最大输入长度特点text-embedding-3-small未公开15368192 tokensOpenAI 性价比款性能高成本低text-embedding-3-large未公开30728192 tokens精度最高维度最大可降维使用bge-large-zh3.26 亿1024512 tokens中文特化基于 BERT-like 架构中文检索榜 C-MTEB 表现优异all-MiniLM-L6-v22270 万384512 tokens超轻量适合本地 CPU 部署速度快bge-large-zh 的工作原理和 text-embedding-3-small 类似但有一个显著差异bge-large-zh 使用 BERT 风格的特殊[CLS]标记的最终输出来代表整个句子而不是对 token 向量取平均。这个[CLS]标记被专门训练成能聚合整个序列的语义信息。五、一个物理类比帮助你记忆想象一个 1536 维的高维空间虽然我们无法直观想象但数学上可以理解每一段文字都被映射成这个空间里的一个点语义相似的文字它们的点在空间里靠得很近语义不同的文字它们的点离得很远计算两个点的距离比如用余弦相似度就能得到两段文字的语义相似度余弦相似度的值在 -1 到 1 之间接近 1→ 方向几乎相同 → 语义高度相似接近 0→ 方向正交 → 语义基本无关接近 -1→ 方向相反 → 语义相反这就是 Embedding 模型的全部秘密把语义翻译成坐标把语义相似性翻译成坐标距离。六、一句话总结Embedding 模型 把任意文本变成固定长度向量的翻译器它先用“注意力机制”捕捉每个词在句子中的语境关系再压缩成固定数量的数字坐标让计算机可以用数学距离来比较语义相似性。就像给你一座城市的每个地方都标上经纬度坐标想找离你最近的地方算坐标距离就行。Embedding 做的就是“给文字标坐标”这件事。

更多文章