句嵌入
Sentence Embedding将整个句子或段落编码为固定维度的向量,适用于语义搜索等任务。
共 3 篇文章·阅读时间:约30分钟
01Sentence-BERT
SBERT是专门为Sentence Embedding任务优化的BERT变体,支持高效的语义相似度计算。
SBERT原理
原始BERT的输出是token级别的表示,需要额外处理(如CLS token或mean pooling)才能得到句子向量。 SBERT在此基础上进行了针对性优化。
核心改进
- 使用孪生网络架构,两句子共享BERT encoder
- 采用mean pooling获取固定维度句子向量
- 专门设计适合语义相似度任务的损失函数
训练方法
三元组损失 (Triplet Loss)
给定锚点a、正例p、负例n:
优化目标:||a - p|| < ||a - n||
对比损失 (Contrastive Loss)
拉近正例对的距离,推远负例对的距离。
适合批量训练,效率更高。
批量硬负例挖掘
在每个batch中选择最难的负例进行训练, 加快收敛速度,提升模型区分能力。
应用场景
- 语义相似度匹配
- 语义搜索
- 文本聚类
- 问答系统
02E5嵌入
E5(Emebedding5)是微软提出的高效嵌入式模型,以简洁的设计取得优异性能。
E5原理
E5的核心设计理念是区分"查询(Query)"和"内容(Passage)"的编码方式, 这种不对称的编码方式更适合信息检索场景。
E5的查询-内容分离设计
查询(如搜索词):加上"Query: "前缀
内容(如文档):加上"Passage: "前缀
这种设计让模型学习到:查询关注的是"要找什么",内容关注的是"包含什么"。
E5模型系列
- E5-small:22M参数,适合轻量级场景
- E5-base:110M参数,平衡性能与效率
- E5-large:335M参数,最佳性能
- E5-mistral:基于Mistral,7B参数
E5的优势
- 训练数据质量高(精选的对比数据)
- 查询-内容分离设计提升检索效果
- 支持多语言和代码
- 开源可商用
03BGE嵌入
BGE(BAAI General Embedding)是智谱AI开源的高质量中文Embedding模型。
BGE特性
中英双语支持
BGE-zh专门针对中文优化,同时支持英文。
BGE-en则是英文专用版本。
RetroMAE预训练
使用RetroMAE作为基础预训练任务, 增强了模型学习句子级别表示的能力。
指令微调
支持通过指令指定任务类型:
"query: xxx" 或 "passage: xxx"
模型对比
| 模型 | 语言 | 特点 |
|---|---|---|
| SBERT | 多语言 | 经典方法,生态成熟 |
| E5 | 多语言 | 查询-内容分离,效果好 |
| BGE | 中英 | 中文优化,开源友好 |
选择建议
- 中文为主:优先选择BGE-zh
- 多语言检索:E5系列表现优秀
- 快速原型:SBERT生态完善,易于上手