当前位置: 首页 > news >正文

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 的两个关键机制

  1. 自注意力机制(Self-Attention)
    让每个 token 的向量在更新时,参考句子中其他 token 的信息。比如"猫"这个词在"猫喜欢吃鱼""猫是一种动物"这两句话中,经过注意力机制调整后,得到的最终向量会有所不同,因为它在不同语境下扮演的角色不同。

  2. 多头注意力(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 做的就是“给文字标坐标”这件事。

http://www.cnnetsun.cn/news/1789284.html

相关文章:

  • 进程与线程的核心区别:一篇看懂,告别混淆
  • 3个实用技巧让WE Learn学习效率提升300%:自动答题助手实战指南
  • 广告生成工作流平替工具
  • OpenClaw vs 同类产品:2026年AI智能体工具深度对比与选型指南
  • 自主可控嵌入式系统工控主板怎么选?国产芯片与操作系统适配要点
  • VideoDownloadHelper:轻松下载网页视频的Chrome扩展工具
  • 宝塔SSL证书 一个网站绑定多个域名SSL证书出错误的解决办法
  • 编程已死,键盘长草!Claude Code之父对谈Kaparthy,全程爆金句
  • 当 AI 拥有了“手”和“脚”:Tool Use 能力的技术演进
  • TVA如何重塑3C产品质量检测新范式(1)
  • 从误报率47%到99.2%精准识别,PHP静态分析AI模型调优全过程,仅限内部团队流出
  • 基于springboot音乐推荐系统_731w447o_c035
  • 椭圆曲线L函数偏差、Sha群2-扭与Grothendieck-Teichmüller幂零作用的可证边界研究(世毫九实验室原创理论)
  • AI时代新型的项目管理应该是什么样的?追
  • 如何在浏览器中准确按双换行符分割网页选中文本以统计段落数
  • 【2026年华为暑期实习(开发方向)-4月8日-第二题- 大模型性能优化】(题目+思路+JavaC++Python解析+在线测试)
  • 如何绕过iOS 15-16激活锁:AppleRa1n图形化工具完整指南
  • 支付宝/微信支付沙箱调试崩溃实录(2024最新避坑图谱):银行级风控拦截、幂等失效、异步通知丢失全解密
  • BiliDownloader:B站视频下载工具的技术突破与场景化实践
  • PowerToys MeasureTool:让屏幕测量变得如此简单,设计师必备的免费神器
  • 详细剖析:业务架构图、前端架构图、系统架构图、部署架构图、系统序列图、它们之间的区别与联系
  • JavaScript中骨架屏Skeleton在异步数据加载中应用
  • 如何在Navicat中连接MySQL_基础连接与参数配置
  • CSS如何实现悬停显示隐藏菜单_利用transition延迟效果
  • 简单免费的终极解决方案:猫抓浏览器插件帮你轻松获取网页视频和音频资源
  • 如何快速开始使用Modern UI for WPF:5分钟搭建现代风格应用
  • 质量度量:哪些指标真正有意义?
  • cmake之旅(1)
  • Teal实战指南:如何构建大型类型安全Lua项目
  • 如何快速掌握gh_mirrors/sc/screencasts中的D3.js数据可视化