核心要点

  • 算法演进三阶段:词级静态向量(Word2Vec/GloVe/FastText)→ 上下文表示(ELMo/BERT)→ 句/文档级专用嵌入(Sentence-BERT对比学习双塔)

  • 关键区分:通用语言模型的「内部表示」≠ 专门为检索优化的「嵌入模型」,后者用对比学习让相似文本向量更接近

  • 2026 可选模型:开源 bge / gte / e5 / m3e / jina,商用 OpenAI text-embedding-3、Cohere,以及多语种 / 多模态嵌入

  • 选型维度:语言与领域匹配、向量维度与成本、MTEB 等公开榜单参考,最终以自有数据实测为准

标准回答

文本 Embedding 是把文本映射成稠密向量,让语义相近的文本在向量空间中距离更近。从算法看,它经历了三个阶段的演进。

第一阶段:词级静态向量

  • Word2Vec / GloVe / FastText:为每个词学习一个固定向量。Word2Vec 靠上下文预测(CBOW / Skip-gram)训练,GloVe 基于全局共现统计,FastText 引入子词(n-gram)以缓解未登录词。
  • 局限:一词一向量、与上下文无关,无法区分「苹果手机」和「吃苹果」中的「苹果」。

第二阶段:上下文相关表示

  • ELMo / BERT:同一个词在不同句子里得到不同向量,由整句上下文决定。BERT 用双向 Transformer 预训练,显著提升了对语义和语序的建模能力。
  • 注意:BERT 原生的句向量(如直接取 [CLS])并非为相似度检索优化,直接拿来算余弦相似度效果一般。

第三阶段:句/文档级专用嵌入

  • Sentence-BERT 及对比学习双塔(dual-encoder):在 BERT 等骨干上,用对比学习(正样本拉近、负样本推远)专门训练,使「整段文本」的向量适合做相似度匹配与检索。
  • 这是当今 RAG语义搜索、推荐召回的主流做法,也是「专门优化检索的嵌入模型」与「通用语言模型表示」的本质区别。

业界可选模型(2026)

  • 开源:bge、gte、e5、m3e、jina 等系列,覆盖中英文与多语种,可本地部署、可微调,性价比高。
  • 商用 API:OpenAI text-embedding-3(large/small,可调维度)、Cohere Embed 等,开箱即用、运维省心。
  • 多语种 / 多模态:如 bge-m3 等支持多语言与稠密+稀疏混合,以及图文统一嵌入模型,用于跨语言或图文检索。

选型怎么定

  1. 语言与领域:中文为主选中文表现强的模型,垂直领域优先可微调的开源模型。
  2. 维度与成本:维度越高表达力越强但存储/检索更贵,部分模型支持降维(Matryoshka)。
  3. 榜单 + 实测:参考 MTEB 等公开榜单缩小候选范围,但务必用自有业务数据做检索评测后再定,避免被榜单过拟合误导。

常见误区

⚠️ 常见踩坑

把「能跑出向量」当成「适合检索」。直接拿原生 BERT 的 [CLS] 或词向量平均做语义检索,效果往往明显差于用对比学习专门训练的嵌入模型。另一个误区是只看 MTEB 榜单分数选型——榜单语料和你的业务分布可能差很远,必须用自有数据复测。

追问

追问 1静态词向量(Word2Vec)和上下文向量(BERT)最本质的区别是什么?

静态词向量给每个词一个固定向量,脱离上下文,无法处理一词多义;BERT 等上下文模型让同一个词在不同句子中产生不同向量,由整句语境决定。代价是计算更重、需要整句一起编码,而 Word2Vec 查表即得、轻量但表达力弱。

追问 2为什么不直接用大语言模型的隐藏层表示,而要单独的嵌入模型?

通用语言模型的内部表示是为「预测下一个 token」优化的,并没有保证语义相近的文本向量就接近,直接用于相似度检索效果不稳定。专用嵌入模型用对比学习,以「相似文本拉近、不相似推远」为目标训练,输出更适合余弦相似度匹配;同时通常更小、推理更快、维度可控,工程上更划算。

追问 3面对一个新业务,怎么挑选合适的 Embedding 模型?

先按语言、领域、是否需要本地部署、维度与预算圈定候选(如中文场景看 bge/gte,省运维看 OpenAI/Cohere);用 MTEB 等榜单初筛;再构建带标注的检索测试集,在自有数据上对比各候选的召回与精度指标,必要时对开源模型做领域微调,最终以实测和成本综合定型,而不是只看榜单分数。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习