表示学习与向量直觉
本节目标
你将从 one-hot 的局限出发,理解“训练目标塑造向量空间”;区分静态词向量、上下文 token 表示、句子/文档向量与多模态向量;最后明确 Embedding 能做候选召回,却不能独立证明事实或授权。
为什么 one-hot 不够
假设词表有 个词,one-hot 为每个词分配一个长度为 的向量,其中只有一个位置是 1。不同词的点积都是 0:
所以“猫”和“狗”与“猫”和“数据库”在这种表示中同样不相似。向量还很稀疏,词表越大,存储与第一层参数越多。
Embedding 学习一个映射:
其中 往往远小于 one-hot 维度,且每一维通常都是非零浮点数。更重要的是,训练让某种关系在几何中可用:共享上下文、配对文本、类别、用户行为或图文对应等。
“靠近”的真正含义是:
在特定训练数据、训练目标、编码指令和相似度规则下,模型倾向把这两个输入放近。
它不是客观同义、事实一致或回答支持度的概率。
训练目标怎样塑造空间
上下文预测
word2vec 的核心直觉是:出现在相似上下文中的词,表示也可能相近。训练可以用中心词预测周围词,或用上下文预测中心词。最终得到每个词类型的静态向量。
对比学习
给模型正例对和负例,让正例更近、负例更远。正例可能是 query—相关 passage、同义句或图像—描述。负例如何选择非常重要:太容易的负例教不到细粒度边界;错误负例会把真实相关项推远。
蒸馏、分类与多任务
模型也可从更强模型分数蒸馏,或同时优化分类、聚类、检索等任务。多任务覆盖更广,但不保证你的领域术语、语言和查询分布被充分表示。
因此,不能只问“这个 embedding 模型多大”,还要问“它为了什么关系训练、模型卡要求怎样输入”。
四种常见层级
静态词向量
一个词类型只有一个向量。“苹果”无论指水果还是公司都相同,无法随上下文消歧。word2vec 适合建立直觉,但现代检索常用上下文模型。
上下文 token 表示
Transformer 中同一个 token 会因周围文本不同而得到不同隐藏状态。它解决部分多义问题,但一个序列会产生多个 token vectors,不自动等于高质量句向量。
句子或文档向量
需要把变长序列汇聚为一个固定向量,方法可能是特殊 token、mean pooling 或专门训练的 pooling。Sentence-BERT 原论文用孪生/三元组网络训练可高效比较的句子表示,说明“从任意生成模型取一个隐藏状态”不应被默认视为合格检索向量。
多模态向量
CLIP 等模型通过图文配对训练共同空间,使文本可以检索图像。只有模型明确训练并支持相应模态时,跨模态比较才有意义。两个模型输出维度一样,或一个模型都能接受两种输入,都不足以证明输出处于兼容共同空间。
Bi-encoder 与 reranker
Bi-encoder
Query 和 documents 分别编码:
文档向量可预先计算,查询时只编码一次并做大量快速点积/距离比较。这是语义召回的主要模式。
Cross-encoder / reranker
把 query 与一个 candidate document 一起输入,让模型直接建模二者交互。它通常更慢,无法预先为所有 query 缓存 document 交互结果,但适合对 bi-encoder 的 top-N 候选精排。
二者不是互斥竞品,而是常见两阶段系统:
- bi-encoder 快速扩大召回;
- metadata/关键词与向量候选合并;
- cross-encoder 或 LLM rerank;
- 在上下文预算内选择证据。
对称与非对称任务
- 对称相似度:比较两个同类句子,例如重复问题检测。
- 非对称检索:短 query 寻找较长 document,二者形式和目标不同。
- 分类/聚类:关注样本间组织,不一定采用检索角色。
- 跨模态检索:query 与 document 甚至不是同一模态。
一些模型用不同 encoder,一些用同一模型加 query/document prompt 或 task type;也有模型两种调用结果相同。必须遵循官方模型卡。Sentence Transformers 当前为检索推荐 encode_query() 与 encode_document(),但文档也说明没有专门 prompt/route 的模型可能得到相同结果。
几何直觉与边界
单维通常不可解释
若对整个空间做保持距离的旋转,检索排序可以不变,但每一维数值完全改变。因此“第 42 维表示法律”通常没有证据。要解释某一方向,需要专门探针或已知训练结构。
二维图会失真
PCA、t-SNE、UMAP 等把高维压到二维,必然丢失部分距离关系。图可帮助发现候选簇和离群点,但不能替代原空间的 Recall/MRR/nDCG。
高相似不是高置信概率
Cosine 0.8 不是“80% 相关”。分数分布依模型、领域、角色和归一化而变;阈值必须在开发集校准,新模型迁移后重做。
语义近不等于证据充分
“认证失败”和“认证失败不得重试”可能很近,但前者并不包含动作结论。Embedding 负责找候选;引用支持与完整条件仍要由 rerank、规则或回答评测确认。
RAG 中的典型失败
| 现象 | 可能原因 | 先做什么 |
|---|---|---|
| 专名、编号、错误码找不到 | 训练偏语义,稀有 token 信号弱 | 加关键词/混合检索与字段过滤 |
| 否定句排在肯定句旁边 | 主题相近但极性区分不足 | 加 hard negatives、rerank 与证据检查 |
| 短 query 找到泛化大段 | query/document 角色错误或 chunk 太大 | 核对角色、前缀和 Chunking策略 |
| 中文明显弱于英文 | 训练语言覆盖或语料不匹配 | 做语言子组评测,换候选或领域适配 |
| 新旧数据结果忽高忽低 | 空间混用、revision 漂移 | 检查完整空间签名和索引版本 |
| 未授权内容出现在候选 | ACL 在召回后才过滤 | 在检索层 fail-closed 过滤 |
练习
- 画出词表为 5 时“猫、狗、数据库”的 one-hot,解释为什么 one-hot 距离不能表达猫狗相近。
- 为“查找 API 超时配置”写一个 query、两个正例、一个容易负例和一个 hard negative;说明 hard negative 教会什么。
- 判断下列任务是对称还是非对称:重复问题、短问找长文、商品找同类商品、文字找图片。
- 找一个“主题相近但不能作为答案证据”的句对,解释为何 embedding 命中并不构成事实支持。
- 说明为什么两个 768 维模型的向量不能直接放进同一索引比较。
掌握检查
- 我能从 one-hot 的稀疏与正交解释 embedding 的动机。
- 我知道空间含义由训练数据、目标、输入角色与度量共同决定。
- 我区分静态词、上下文 token、句子/文档和多模态向量。
- 我能说明 bi-encoder 为什么适合召回、reranker 为什么更慢。
- 我不会把单维、二维图或 cosine 分数过度解释。
- 我把 embedding 当候选信号,而不是事实、权限或置信概率。
小结与下一步
理解表示的含义后,下一步不是立刻选榜单第一,而是把任务、角色、维度、度量、限制与成本写成候选契约:[[Knowledge/AI Agent Engineer/docs-CN/Embedding/02-模型维度与归一化选择|模型、维度与归一化选择]]。
参考资料
- Google ML Crash Course: Embeddings
- Mikolov et al., word2vec
- Reimers & Gurevych, Sentence-BERT
- Radford et al., CLIP
- Sentence Transformers Usage
来源获取日期:2026-07-14。返回 [[Knowledge/AI Agent Engineer/docs-CN/Embedding/00-目录|Embedding 目录]]。