句嵌入

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生态完善,易于上手
----