考察点
「Embedding 是什么,你们用的哪个」是 2026 年多份面经里反复出现的基础题。面试官表面问概念,实际想看两点:你懂不懂 Embedding 的训练原理(对比学习),以及选型是不是拍脑袋——有没有 benchmark 意识、知不知道领域适配问题。追问常走「为什么你们场景要换模型」「怎么验证换了更好」。
参考答案
Embedding 的本质
Embedding 模型把一段文本映射成一个稠密向量(比如 768 或 1024 维),让语义相近的文本在向量空间里距离也近。它通常基于 BERT 类 Encoder 架构,训练目标是对比学习:给定一个 query,让它的向量靠近正例文档、远离负例文档(InfoNCE 损失)。训练数据里负例的构造(随机负例 vs 难负例)很大程度决定模型质量。
理解这一点就能明白选型的核心:模型在训练时见过什么样的 query-文档对,它就擅长什么样的匹配。通用模型没学过「七天无理由退货」和「不想要了能退吗」是一回事,在你领域就得补课。
主流选型对比
| 模型 | 特点 | 适用 |
|---|---|---|
| BGE 系列(bge-large-zh / bge-m3) | 中文效果好,开源可私有部署,bge-m3 支持多语言+稠密稀疏混合 | 国内项目默认首选 |
| OpenAI text-embedding-3 | 效果稳定,API 调用省事,维度可裁剪 | 海外业务、快速验证 |
| m3e / GTE 系列 | 老牌中文开源模型 | 轻量场景 |
| Jina / E5 多语言版 | 多语言混排强 | 跨语言检索 |
选型的硬指标看 MTEB / C-MTEB 榜单的 Retrieval 分项,但榜单只是初筛,最终一定要用你自己的数据做离线评测:抽 200-500 条真实 query,人工标注每条对应的正确文档,跑 Recall@10 对比候选模型。榜单高分的模型在你的垂类上不一定赢。
实战考量的四个维度
- 语言与领域:中英混合文档优先 bge-m3;电商、医疗这类行话密集的领域,通用模型经常翻车,需要领域微调。
- 维度与成本:1024 维比 384 维表达力强,但存储和检索成本翻倍。百万 chunk 以下不用纠结,千万级才需要权衡,或者用 Matryoshka 表示(前 256 维就能用)做裁剪。
- 部署方式:API 适合冷启动;自建 GPU 推理(TEI、vLLM 部署)适合大批量离线建库,成本差一个数量级。
- 一致性红线:换 Embedding 模型必须全量重建索引,新旧模型的向量空间不兼容,混着用等于没检索。
领域微调
当评测显示通用模型在你的领域 Recall 明显偏低(比如低于 70%),就该微调了。数据来源:拿历史的客服对话/搜索日志构造 query-正例对,负例用同 batch 内其他文档加少量难负例(字面上像但答案不对的)。用 LoRA 在 bge 基座上调,几百到几千条高质量对就能见效。微调完第一件事是回归评测,防止领域涨分、通用能力掉分。
可能的追问
Q:为什么不能用大模型(如 GPT)直接出 Embedding? 生成式模型输出的是下一个 token 的概率分布,不是为相似度优化的向量空间。Decoder 模型的 hidden state 可以勉强当向量用,但同参数下效果远不如专门训练的 Encoder,成本还高。
Q:query 和文档长度差很多,会有问题吗? 会,这是非对称检索问题。很多模型通过给 query 加指令前缀(如 bge 的「为这个句子生成表示以用于检索相关文章」)区分两种编码模式,query 侧务必带上,裸编码会掉几个点。
Q:向量维度和效果什么关系? 不是单调的。同系列模型维度翻倍通常有小提升,但边际递减明显;跨系列比,训练数据和对比学习目标的影响远大于维度。