标准回答
Embedding 模型怎么训练
目标是把文本映射到一个定长向量,使语义相近的文本在向量空间中靠得近。主流做法是对比学习:构造正样本对(如问题-相关答案、同义句)和负样本(不相关文本,常用 in-batch negatives),用对比损失拉近正样本、推远负样本,相似度通常用余弦距离衡量。
与生成式 LLM 的不同
架构上,Embedding 模型多基于双向编码器,对整段文本编码后做 mean pooling(或取 CLS)得到一个向量,关注「整体语义表示」;生成式 LLM 是自回归解码器,带因果掩码逐 token 预测下一个词,关注「续写生成」。
训练目标上,前者是对比/相似度目标,后者是 next-token 的交叉熵。输出上,前者吐出一个向量,后者吐出文本。
用途
Embedding 是 RAG、语义搜索、聚类、去重、推荐的基础:把文档向量化后存入向量库,按近邻召回,详见 向量数据库原理 与 RAG 检索增强生成架构指南。
常见误区
⚠️ 常见踩坑
别认为可以直接拿生成式 LLM 的隐藏态当 embedding 用——未经对比训练的自回归表示在检索上往往效果一般;也别混淆「相似度」和「生成」:embedding 衡量语义接近度,不产生文本,二者目标和评测方式都不同。
追问
追问 1:为什么 embedding 相似度常用余弦而不是欧氏距离?
余弦相似度只看向量方向、忽略模长,对文本长度和向量尺度更鲁棒,契合「语义方向一致即相似」的直觉,也与对比学习中常用的归一化训练目标一致。许多模型在训练和检索时都会对向量做 L2 归一化,此时余弦与内积等价。
追问 2:in-batch negatives 是什么?为什么有效?
训练时把同一个 batch 内其他样本的正例当作当前样本的负例,无需额外采负样本即可获得大量负例。batch 越大、负例越多,对比信号越强,能高效地把不相关文本推远,是训练高质量 embedding 的常用技巧。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📖 术语表
🛠️ AI 工具
- mteb
大规模文本嵌入模型基准测试套件,覆盖信息检索、聚类、双语文本挖掘等多个 NLP 任务,是评估嵌入模型质量的标准工具。