一句话总纲:Embedding = 给文字 / 图片发坐标,坐标近 = 意思像,计算机靠坐标算相似度。
一、史前:独热编码 One-hot(2013 年前,最原始)
逻辑
给每个词语单独编一串超长数字,1 个数字是 1,剩下全 0。 举例:词典一共 5000 个字,苹果 =[1,0,0…0]、香蕉 =[0,1,0…0]。
缺点
- 词越多向量越长,几万词就是几万位,存储爆炸;
- 所有词语距离一模一样,苹果和香蕉、苹果和汽车距离完全相同,机器分不清语义远近;
- 没法算语义相似,只能做简单匹配。
类比:每个人单独占一栋独立大楼,没法看两个人离得远不远。
二、第一代:静态 Embedding(2013~2017,Word2Vec/GloVe/FastText,Embedding 正式诞生)
核心原理:词由身边邻居决定(语言学:词伴定词义)
谷歌 2013 年 Word2Vec 划时代:拿海量文章训练,用「看前后单词猜中间词」自学每个词的固定坐标向量。
- 苹果、梨子经常一起出现→向量挨得近;
- 国王 - 男人 + 女人≈女王(向量加减法成立)。
优点
几千词压缩成 300~768 位短向量,好存、好计算相似度,真正实现语义数字化。
致命短板:一词一向量(静态固定)
苹果(水果)、苹果(手机公司)共用同一串数字,分不清一词多义;一句话只能拆词再平均,整句话语义不准。 FastText 改良:拆分偏旁字根,能识别生僻新词,但还是静态不变向量。
类比:每个人一辈子固定一个住址,不管去哪、干什么,地址永远不变。
三、第二代:动态上下文 Embedding(2018~2021,ELMo→BERT,颠覆性升级)
ELMo(2018):同一个词,换句子就换坐标
顺着读 + 倒着读整段话,同词不同上下文 = 不同向量:
- 吃苹果 →「苹果」向量 1;
- 苹果发布会 →「苹果」向量 2,完美解决一词多义。
BERT(2018 谷歌封神,现代 Embedding 基石)
用Transformer双向阅读全文,做「完形填空」预训练,整句话、整段文字都能直接生成专属向量,从单词升级到句子 / 段落向量化。 衍生:SBERT 专门优化句子相似度,现在 RAG 早期标配。
类比:人出门换住址,在菜市场是买菜坐标、在写字楼是上班坐标,位置随环境变化。
四、第三代:大模型专用检索 Embedding(2022 至今,RAG 黄金时代,你现在在用)
随着大模型幻觉问题出现,诞生专门为文档检索优化的嵌入模型,也是咱们做文档分片、向量库用的 BGE、E5、m3e、OpenAI text-embedding 系列:
- 优化目标不再是完形填空,而是相似度匹配:刻意让同义文本向量靠近、无关文本远离;
- 支持超长段落(几千字文档直接向量化),适配递归文本分片;
- 国产 BGE-zh 系列:中文最优、本地离线跑、免费开源(你之前代码用的就是它);
- 多模态 Embedding:文字 + 图片 + 表格统一变向量,PDF 带插图也能检索(bge-visual、CLIP)。
当下落地(RAG)全链路
文档→递归字符分割 Chunk→Embedding 转向量→存入向量库; 用户提问→同一个 Embedding 转向量→向量库就近匹配召回原文→丢给大模型回答。
极简时间线总结
- One-hot:孤立编号,无语义
- Word2Vec:一词一坐标,固定不动
- BERT:一词多坐标,随上下文动态
- BGE/E5:专为文档检索而生,RAG 标配