Embedding Model 如何“学会”语义相似?

终于看见了一个ChatGPT之后的新物种,如果你还没听说过元宝是什么,赶紧点击链接:https://yb.tencent.com/gp/i/hSAqMR8lCkra,下载元宝App,加入我的元宝派中,和我一起体验未来生活吧。

Embedding Model 是什么?中我们建立了一个核心直觉:Embedding 是把内容映射到向量空间里的一个点,距离越近含义越像。这章我们要探讨更深层的逻辑:模型凭什么知道谁该靠近、谁该远离?

答案是:Embedding 不是“天然懂语义”,而是通过对比学习(Contrastive Learning)训练出来的。训练过程在不断通过数据告诉模型:

  • • 正样本(Positive Samples): 哪些内容应该在空间中更近。
  • • 负样本(Negative Samples): 哪些内容应该在空间中更远。
  • • 度量函数: 使用什么尺子(Cosine / Dot Product / L2)来衡量远近。
  • • 相似定义: “相似”究竟是指同主题、同意图,还是同事实。

理解这套机制,你就能从“API 调用工程师”升级为“向量模型诊断专家”。

NLP 的大变革:Word Embedding 把“词”变成了坐标

在深度学习普及之前,计算机处理语言的方式是离散且孤立的:每个词对应一个独立的 ID,词与词之间在数学上没有距离概念(例如独热编码 One-hot Encoding)。

Word2Vec 等技术的革命性意义在于:它第一次让词语拥有了空间几何结构

你可以这样理解:

  • • “猫”和“狗” 在空间里的坐标会非常接近。
  • • “猫”和“火车” 则会相距甚远。

这并非因为模型理解了生物学,而是因为它从海量语料库中观察到:“猫”和“狗”经常出现在相似的上下文中(例如周围常出现“宠物”、“喂食”、“毛发”等词)。

这一步意义巨大:语言不再只是枯燥的符号,而是变成了可以计算、可以度量的几何对象。

但早期词向量有一个天然限制:它无法直接处理变长的句子或段落,且无法解决多义词(如“苹果”在不同语境下的含义)的问题。

从词向量到句向量:为什么需要 Sentence/Passage Embedding

在 RAG 或语义搜索中,我们直接使用词向量会遇到两个致命问题:

问题 A:语义并非词汇的简单堆砌

“苹果总部在哪里?”和“Apple 的总部在什么地方?”。两句话词汇重合度不高,但查询意图(Intent) 完全一致。简单的词袋模型或词向量加权很容易被表面词汇的差异误导。

问题 B:无法处理上下文偏移(Context Shift)

“苹果发布会”中的“苹果”是科技公司;“我吃了一个苹果”中的“苹果”是水果。静态词向量(Static Embedding) 无法区分这种差异,而现代的 Sentence Embedding 能够根据上下文动态调整整句话的表示。

因此,现代检索模型的目标是:

  • • Sentence Embedding: 将整句话编码为一个定长向量。
  • • Passage Embedding: 将整个段落或文档片段编码为一个定长向量。
  • • 核心目标: 让 “语义相关” 的文本在空间中靠近,而非仅仅是“词汇重合”的文本靠近。

Bi-encoder 的核心:Query 与 Document 分开编码,用相似度匹配

在实际生产环境中,为了实现毫秒级检索,我们通常采用 Bi-encoder(双编码器) 架构。

Bi-encoder 的设计原则非常高效:

  1. 1. 解耦编码: 用编码器将 Query 映射为向量 ,用(通常是同一个)编码器将 Passage 映射为向量 。
  2. 2. 向量匹配: 使用简单的数学函数 (如余弦相似度)计算相关性。
  3. 3. 大规模检索: 利用向量数据库(如 Milvus, Pinecone)和 ANN(近似最近邻) 算法(如 HNSW, IVF),在数亿条数据中瞬间找到最接近的点。

为什么它在工业界不可替代?

  • • 预计算性: 文档向量可以提前离线计算并建立索引。
  • • 低延迟: 检索时只需实时计算一个 Query 向量。
  • • 可扩展性: 天生适配现代向量数据库的检索结构。

对比学习:让“该近的近,该远的远”

对比学习(Contrastive Learning)是 Embedding 学会语义的核心手段。其目标可以概括为:给定一个锚点(Query),拉近正样本,推开负样本。

4.1 InfoNCE:在一堆干扰项中精准命中
想象模型在做一道多选题:给出一个 Query ,一个正确答案 ,以及  个随机抽取的干扰项 。
模型的训练目标是:最大化正样本的相似度,同时最小化所有负样本的相似度。 这本质上是在优化模型在海量候选中的区分能力

4.2 Triplet Loss:拉开安全边界
Triplet(三元组)更强调“距离差”。它要求:

不仅要求正样本比负样本更近,还要近出一段安全间隔(Margin)。这个间隔能显著提升模型在复杂排序任务中的鲁棒性

正样本的来源:数据的质量决定能力的上限

Embedding 模型学会的“相似”定义,完全取决于你喂给它的正样本:

  • • 问答对(QA Pairs): 用户提问 vs 对应的标准答案。这是 RAG 场景最理想的数据。
  • • 同义改写(Paraphrase): 表达同一个意思的不同说法。它能教会模型抗干扰能力,不被花哨的遣词造句迷惑。
  • • 点击日志(Click Logs): 真实用户搜了什么,最后点开了哪个搜索结果。这能捕捉到隐含的用户偏好,但需要清洗掉位置偏差等噪声。
  • • 多视角表达(Multi-view): 例如标题 vs 正文,或者是同一知识点的结构化描述 vs 自然语言描述。

负样本的奥秘:随机负样本 vs Hard Negative

很多人认为训练 Embedding 只要有正样本就够了,实际上,负样本的策略直接决定了模型的上限。

随机负样本(In-batch Negatives):打好基础

从语料库中随机抽取的段落通常与 Query 毫不相关。模型很容易学会识别这种明显的差异。这能让模型学会大类语义的分隔,但无法应对精细化挑战。

Hard Negative(难负样本):进阶的关键

Hard Negative 是指那些看起来和 Query 非常像,但逻辑上不匹配的内容。

  • • Query: “如何办理退款?”
  • • 正样本: “退款操作指引。”
  • • Hard Negative: “退货物流查询。”(关键词高度重合,但意图完全不同)

Hard Negative 决定了检索的上限。如果模型只见过随机负样本,它上线后会频繁把“看起来像”的错误答案排在前面。随机负样本教模型“分大类”,而 Hard Negative 教模型“做精细辨析”。

训练目标如何塑造空间规则

Embedding 空间不是天然形成的,它是被训练目标塑形出来的。

  • • 如果你的目标是同主题,空间会按学科或行业聚类。
  • • 如果你的目标是同意图,空间会把“解决同一个麻烦”的话语聚在一起。
  • • 如果你的目标是同事实,它会成为 RAG 的利器,把问题和支撑它的证据证据紧紧绑定。

模型学到的不是语义的“终极真相”,而是在特定任务目标下的“空间组织法则”。

总结

  • • 对比学习是核心: 通过正样本拉近、负样本推远,手动“捏”出语义空间。
  • • Bi-encoder 是基石: 它是实现大规模、低延迟检索的工程基础。
  • • Hard Negative 是灵魂: 只有学会区分“极度相似的错误项”,模型才能在真实场景中抗住压力。

如果觉得内容不错,欢迎你点一下「在看」,或是将文章分享给其他有需要的人^^

相关好文推荐:

Embedding Model 是什么?

OpenClawd的运作原理 | Hesamation

一个使用 OpenRouter 的 1 万亿令牌实证研究 | OpenRouter AI

Moltbot(Clawdbot)做对了什么?

D4RT:教会 AI 以四个维度看世界 | DeepMind

一个月内把编码主力交给 Agent 的真实体验 | karpathy

用于线性注意力的 Gated DeltaNet | Sebastian Raschka

DeepSeek的多头潜在注意力(MLA) | Sebastian Raschka

嵌入模型检索面临严重限制 | DeepLearning.AI

理解多模态 LLM | Sebastian Raschka

这是最好的时代,也是最坏的时代

理解推理型 LLM | Sebastian Raschka

理解用于评估大语言模型(LLM)的四种主要方法 | Sebastian Raschka

从 DeepSeek V3 到 Mistral 3 Large:现代大语言模型(LLM)架构设计概览(三)| Sebastian Raschka

从 DeepSeek V3 到 Mistral 3 Large:现代大语言模型(LLM)架构设计概览(二)| Sebastian Raschka

从 DeepSeek V3 到 Mistral 3 Large:现代大语言模型(LLM)架构设计概览(一)| Sebastian Raschka

Agent 设计模式 | Lance

递归语言模型(Recursive Language Models) | Alex Zhang

重新构想 LLM 记忆:将上下文作为训练数据,使模型能够在测试时学习 | Nvidia

Manus 中的上下文工程 | Lance

引入嵌套学习(Nested Learning):一种用于持续学习的全新机器学习范式

如何构建多智能体研究系统

真正决定 AI 系统上限的是什么?

软件 2.0 | karpathy

2025年 LLM 年度回顾 | karpathy

苦涩的教训

0条留言

留言