标准回答
文本 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 等支持多语言与稠密+稀疏混合,以及图文统一嵌入模型,用于跨语言或图文检索。
选型怎么定
- 语言与领域:中文为主选中文表现强的模型,垂直领域优先可微调的开源模型。
- 维度与成本:维度越高表达力越强但存储/检索更贵,部分模型支持降维(Matryoshka)。
- 榜单 + 实测:参考 MTEB 等公开榜单缩小候选范围,但务必用自有业务数据做检索评测后再定,避免被榜单过拟合误导。
常见误区
⚠️ 常见踩坑
把「能跑出向量」当成「适合检索」。直接拿原生 BERT 的 [CLS] 或词向量平均做语义检索,效果往往明显差于用对比学习专门训练的嵌入模型。另一个误区是只看 MTEB 榜单分数选型——榜单语料和你的业务分布可能差很远,必须用自有数据复测。
追问
追问 1:静态词向量(Word2Vec)和上下文向量(BERT)最本质的区别是什么?
静态词向量给每个词一个固定向量,脱离上下文,无法处理一词多义;BERT 等上下文模型让同一个词在不同句子中产生不同向量,由整句语境决定。代价是计算更重、需要整句一起编码,而 Word2Vec 查表即得、轻量但表达力弱。
追问 2:为什么不直接用大语言模型的隐藏层表示,而要单独的嵌入模型?
通用语言模型的内部表示是为「预测下一个 token」优化的,并没有保证语义相近的文本向量就接近,直接用于相似度检索效果不稳定。专用嵌入模型用对比学习,以「相似文本拉近、不相似推远」为目标训练,输出更适合余弦相似度匹配;同时通常更小、推理更快、维度可控,工程上更划算。
追问 3:面对一个新业务,怎么挑选合适的 Embedding 模型?
先按语言、领域、是否需要本地部署、维度与预算圈定候选(如中文场景看 bge/gte,省运维看 OpenAI/Cohere);用 MTEB 等榜单初筛;再构建带标注的检索测试集,在自有数据上对比各候选的召回与精度指标,必要时对开源模型做领域微调,最终以实测和成本综合定型,而不是只看榜单分数。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习