Text Embedding: From Bag-of-Words to Qwen3 Embedding
从 Bag of Words 到 Qwen3 Embedding 介绍文本嵌入模型的发展与应用。
本文旨在全面梳理文本检索与表示技术的核心发展脉络,描绘出一条从经典统计模型到现代大规模神经网络模型的清晰演进路径。
我们将从信息检索领域的基石——词袋与 BM25 算法出发,理解其基于词频统计的稀疏检索范式。随后进入深度学习时代,解读开创静态词嵌入先河的 Word2Vec。
接着聚焦于 Transformer 架构所带来的双重革命:以 BERT 为代表的深度双向理解模型和以 GPT 为代表的强大自回归生成模型,探讨它们如何生成革命性的动态上下文嵌入。
最后,以最新发布的 Qwen3 Embedding 为例,深入剖析其作为新一代 SOTA(State-of-the-Art)模型,如何在继承前人思想的基础上,通过先进的架构和训练策略,将文本嵌入与重排序技术推向新的高峰。
文本嵌入与统计语言模型的开端
想要将文本数据用于各种机器学习模型分析,首先需要将其转换为规范化的形式。最先面临的问题就是如何将文本信息转换为扁平的向量,这也是文本数据特征工程的第一步。
词袋模型
一元词袋模型
在 Bag of Words 模型中,每一篇文本文档(一个句子或多个句子)会被转换为一个计数向量,对应着高维空间中的一个点。
这个计数向量包含了词汇表中可能出现的所有单词(也可以是我们需要研究的所有单词),根据单词在这一篇文档中的出现次数来决定向量的结构。如果没有出现,向量的分量就是 0。
词袋模型不表示任何单词层次,因此它被称为扁平的模型。这自然会带来一些问题,比如 “not bad” 意味着 “good”,但在词袋模型中它会被理解为 “bad” 的含义。各种对短语结构的拆分都会带来不可避免的含义损失。
n 元词袋
元词袋(bag of n-grams)是词袋模型的一种自然扩展,我们希望保留一些文本中的顺序结构带来的含义。在经历过一些分词手法以后, 元词袋将整篇文档转化为一个计数向量,每一个分量表示一个词组,各个词组中的单词可以重复使用。
元词袋模型的 表示允许的最大词组中含有 gram 的数量。 越大,包含的语言含义信息就越丰富,但也会带来更高的向量维数。BOW 的 Filter 问题
BOW 是研究嵌入的核心手段,但它也存在天然的缺陷。如何通过合适的方式将文本中有意义的信息和噪声分开是我们需要研究的问题,经过过滤以后,模型将更加有效。
停用词
诸如 the、a、on 等不具有实际含义的介词等停用词基本不含实际含义,一般只在情感分析中会用到它们。对于理解大意而言,停用词完全可以被移除。
Python 的 NLTK 包中含有一个由语言学家构建的停用词列表,其中的单词全部是小写的并且包含撇号,使用这个包就可以实现对停用词的删除。
高频词
处理高频词的一种高效技术:一个语料库中高频出现的单词很可能是停用词。在删除停用词后,它很可能是某个语料库中的专用常见词,是否有意义需要单独考虑。
罕见词
在一个语料库中非常罕见的词汇也值得考虑,它可能是某种拼写错误或真正的罕见词。
那些出现得非常罕见的词会导致词袋模型的向量维数过高,而它们往往无法作为预测上的凭据,反而会导致巨大的计算开销。移除词袋模型中的罕见词是一个非常常见的 NLP 特征工程手法。
词干提取问题
在 NLP 问题中,一个单词的各种变体是非常常见的数据。它们在词袋中会被作为不同的词分开计数,但将它们的计数整合起来非常有效,因为它们确实有相同的含义。
Python 的 NLTK 包提供了词干提取的接口,但它并不是万能的。有时候形式接近但含义不同的词在进行词干提取以后反而会导致不好的效果。
TF-IDF
词袋模型中的词频计数无法自动去除停用词。虽然可以后期移除,但仍不如本身就能起到这个作用的模型合适。
TF-IDF 的核心思想是:一个词对某篇文档的重要性,既与它在该文档中出现的频率成正比,又与它在整个语料库中出现的普遍程度成反比。 通过”逆文档频率”来惩罚那些过于常见的词。
TF-IDF 是两个部分的乘积:
词频(Term Frequency, TF) 表示词 在文档 中出现的频率,常见定义有:
原始频率
归一化频率(最常用)
对数缩放频率(用于超长文档)
逆文档频率(Inverse Document Frequency, IDF) 衡量词的稀有程度,定义
其中 是文档总数, 是包含词 的文档数,在实现中根据习惯取对数。
为避免除零错误,实践中常加平滑项:
最终的 TF-IDF 值为:
每个文档 可表示为一个向量,其每个维度对应词表中的一个词,值为该词的 TF-IDF 权重。
TF-IDF(词频逆文档频率)作为一种简单高效的 NLP 特征提取手法,如果需要一个最简单易懂的模型来研究文本数据的机器学习问题,它是最值得推荐的选择,比 BOW 更加可靠,也更加易用。
稀疏检索技术的巅峰:BM25
Okapi-TREC
在讨论嵌入模型之前,必须先了解它所要超越的、经久不衰的强大 Baseline。BM25 并非一个”嵌入模型”,而是一个词法检索(Lexical Retrieval)算法。BM25 是现代信息检索领域的核心技术,几乎所有现代搜索引擎都使用了 BM25 算法或其改进形式。
BM25 并不是一个跨越式的发展,而是信息检索领域经典概率模型(Probabilistic Model)的自然演进成果,由 Okapi 项目中逐步发展而来(BM 系列论文的标题都是 Okapi-TREC,其中 BM 取作 Best Match 之意)。
BM25 与 TF-IDF 都是用于衡量词项在文档中重要性的经典文本加权方法。虽然二者在形式上相似(都包含”词频”和”逆文档频率”成分),但实际的设计思想并不相同。
TF-IDF 希望将文档进行向量化表示得到稀疏空间的嵌入,而 BM25 估计一个文档对给定查询的相关性得分用于排序(Ranking)。前者用于为文档制造可用特征,后者则用于根据查询对现有文档进行检索。因此适用场景并不一致。
BM1
在 TREC-1 中 Okapi 使用的是原始的 Robertson-Sparck Jones 权重来给出一个单词在现有文档库下的权重:
其中 是总文档数, 是包含词 的文档数。 是已知的明确和该词相关的文档数, 是这些相关文档中包含词 的数量。如果没有预先的标注,这二者退化为 0,该式退化为类似 IDF 的形式:
基于可以提前计算的词与文档的权重情况,给出 BM1 的得分算法。对于一个 个词的查询 和一篇文档 ,BM1 的得分公式为:
求和只对同时出现在查询 Q 和文档 D 中的词进行(即交集)。
BM1 是一个二值模型(binary model),只对”出现在文档中的查询词”求和。如果词 不在文档 中,则它对 的得分无贡献,反之其贡献为 ,BM1 不考虑词频率 TF。
实际检索中一般取 ,因为在检索发生的时候无法确认相关文档。此时 BM1 算法的得分计算部分自动退化为 IDF 的平滑形式。
BM11 与 BM15
为了解决 BM1 的局限性,在 TREC-2 中提出了两个改型,分别解决三个问题:(1)不处理词频——出现 1 次和 10 次得分一样;(2)不考虑文档长度对词出现概率的影响——长文档更可能”碰巧”包含查询词,即使内容不相关;(3)无法区分查询词重要性——无论查询词出现多少次,都不增加权重。
BM15仅对词频进行饱和处理,不考虑文档长度:
其中 表示词频, 作为超参数控制词频饱和度, 遵循前面的方法计算得到的单词对文档的权重。BM15 在计算总分时仍使用前面的求和方法——只对”出现在文档中的查询词”求和,但考虑 的权重。
BM11在 BM15 基础上,引入文档长度归一化(基于”冗余假设”):
其中 表示当前文档的长度, 表示所有文档的平均长度, 是控制长度归一化强度的超参数。BM11 在计算总分时仍使用前面的求和方法——只对”出现在文档中的查询词”求和,但考虑 、 的权重。
冗余假设的核心思想是:长文档之所以包含更多词,是因为它们包含大量”冗余”或”重复”内容,而非更多信息。
BM25
在 TREC-3 中,作者发现 BM11 对文档长度惩罚过重(”冗余假设”可能夸大长度效应,原始的 BM11 长度归一化部分取 ),于是提出一个通用形式,将 BM11 与 BM15 统一起来:
BM25 核心公式(针对单个查询词 在文档 中的得分):
其中 IDF 类似前面的 的无反馈形式, 表示文档中该词出现的频率, 表示当前文档的长度, 表示所有文档的平均长度。
作为超参数控制词频饱和度:趋近于 0 时模型向二值退化,趋近于无穷时接近 的线性增长,通常在 1 到 2 之间。 是控制长度归一化强度的超参数: 时不进行长度归一化(等价于 BM15), 完全归一化(等价于 BM11)。补充说明:BM25 中的 qtf(查询词频),虽然标准 BM25 实现常省略 qtf,但原文公式包含:
- 若用户重复输入某词(如 “AI AI AI”),可提升其权重。
- 这正是区分查询词重要性的一种机制。
但在现代实际检索中,查询通常来自 topic 的 CONCEPTS 字段(无重复),故 qtf 常为 1,该项被忽略。
总结
BM25 的设计思想:
- 词频饱和(TF Saturation):一个词在文档中出现 10 次还是 20 次,重要性差异应小于 1 次变 2 次。因此引入了对数增长结构来抑制词频的线性膨胀。
- 文档长度归一化:长文档天然包含更多词,需惩罚。使用 参数灵活控制归一化强度,适应不同数据集。
- 保留概率模型根基:IDF 项仍源自 Robertson-Sparck Jones 的相关性概率估计,具有理论依据。
BM25显著优于早期 BM11/BM15,与查询扩展(pseudo-relevance feedback)和段落检索(passage retrieval)结合后,效果进一步提升,成为 Okapi 系统在 TREC-3 中的核心算法。至今仍是工业界与学术界最广泛使用的检索排序算法之一。
Embedding 技术的开端:Word2Vec
思想
Word2Vec 及 “Efficient Estimation of Word Representations in Vector Space” 是现代 NLP 领域最核心的创造之一。它首次证明了通过简单的神经网络就可以学习到词语之间丰富的语义关系,并真正普及了”词嵌入”这一概念。
Word2Vec 的核心思想是一个词的意义,由它周围的词决定。Word2Vec 通过大量文本,自动学习每个词在语境下的数学表示——一个稠密向量。
Word2Vec 包含两个主要模式:
- CBOW:根据上下文猜测中心词
- Skip-gram:根据中心词猜测上下文信息
Word2Vec 希望从海量数据中学习更为复杂的语言含义信息,而不是之前研究的低维数嵌入(50-100 维)。同时关注词向量是否能捕捉多层次相似性(如 “big : bigger :: small : smaller”)甚至语义类比(如 “King – Man + Woman ≈ Queen”),以及模型在超大规模数据集上的学习效率。
模型结构
结构概述
整体的目标: 输入:一个大型语料库(如 60 亿词的 Google News) 输出:每个词对应一个 D 维稠密实数向量(如 300 维),使得语义/句法相似的词在向量空间中距离相近,并能支持向量运算的语义类比。
在预处理阶段,舍弃出现频率特别低的词汇(但仍保留百万规模的词表),舍去低频词只是为了避免拼写错误带来的数据污染。每个剩余的词都分配一个唯一的整数 ID,后续叙述中用 表示高频词数。
Word2Vec 不直接建模语言模型,而是将上下文预测任务转化为分类问题。
对于 CBOW:
- 目标:中心词
- 上下文:窗口内其他词,如 (窗口大小 =2)
- 训练样本:(context → target)
对于 Skip-gram:
- 目标:上下文中的某个词,如
- 输入:中心词
- 训练样本:(center → context_word)
- Skip-gram 对每个中心词会生成多个样本(每个上下文词一个)
模型结构的共享组件:词向量矩阵(Embedding Matrix)
- 定义一个 的矩阵 ,其中第 行是词 的向量表示 。
- 这个矩阵就是最终要学习的词嵌入(word embeddings)。
- 在 CBOW 和 Skip-gram 中, 既是输入层权重,也可作为输出层权重。
CBOW
结构流程:
- 输入层:上下文词 的 one-hot 向量
- 投影层:
- 每个 one-hot 向量乘以 ,得到对应的 维词向量。
- 将这些向量求平均(或求和)得到 ,类似词袋的结构丢弃上下文顺序。
- 注:这里使用的矩阵 最后就是学习到的词嵌入本身,因为输入其实是 One-hot 编码的,做乘积只需使用 中的一行。
- 输出层:
- 将 输入到一个 softmax 分类器,预测中心词。
- 在进入 Softmax 分类器之前,使用矩阵 将 映射回 维。
- 计算预测损失执行反向传播。
训练目标:最大化正确中心词的对数似然:
Skip-gram
结构流程:
- 输入层:中心词 的 one-hot 向量
- 投影层:乘以 ,得到对应的 维词向量 。
- 输出层:对每个上下文位置 用 去预测该词,使用矩阵 将 映射回 维。将每个上下文预测的损失相加,作为预测损失进行反向传播。
训练目标:最大化对数似然:
关于计算效率
这是一个涉及大规模数据的神经网络结构。为保证其在所需规模下的可计算性,需要对模型结构和计算策略进行很多调整。
在传统神经网络语言模型(如 NNLM)中,训练复杂度主要来自:
- 非线性隐藏层
- 超高维的 Softmax 分类头
即使使用并行训练,这也难以扩展到超大规模语料。
为此,Word2Vec 移除非线性隐藏层,成为对数线性模型(Log-linear Model)。CBOW 和 Skip-gram 完全去掉隐藏层,投影层(词向量平均或单个词向量)直接连接输出层,也就是将自身变为一个完全线性的分类器,从而降低计算负担。
为了处理 Softmax 的问题,Word2Vec 使用 Hierarchical Softmax(层次化 Softmax),放弃对每个样本都遍历整个大小为 的词表(百万级)。它将词汇表组织为 Huffman 二叉树,将预测任务改为沿根到叶路径做一系列二分类(sigmoid),最终的概率是路径上所有 sigmoid 的乘积,从而将线性复杂度降低为对数复杂度。
极简的设计框架贯穿始终:无论 CBOW 还是 Skip-gram,其模型结构都很简单,层数极低,这都是为了缓解计算效率瓶颈。同时受益于团队优势,Word2Vec 使用 Google 内部 DistBelief 分布式框架,采用多机小批量异步训练及中央服务器参数来加快计算效率。
总结
本文发现:
- 增加数据量或维度均能提升性能,但存在边际效益递减,需要同时提升两者才能不断提升模型能力。这个发现也指导了目前的大语言模型训练工作。
- Skip-gram 在语义任务上显著优于其他模型;CBOW 在句法上略优,从中心词去预测其他词让模型学习到了更好的语义信息。
- 使用这些手段嵌入得到的稠密向量可以进行语义类比,通过向量之间的简单运算挖掘信息,但存在一定错误。
- 简单模型(CBOW/Skip-gram)可高效训练高质量词向量,并可以近乎无限地继续扩展规模,从而应用于任何需要文本嵌入与类比的任务。
Word2Vec开创了预训练词向量时代,指导了后续很多 NLP 工作的发展,其开源工具包 word2vec 已经成为 NLP 任务的必备工具。Word2Vec 的伟大之处在于:用极简架构 + 海量数据,揭示了语言的深层结构。它证明了”简单模型 + 大数据”可以超越”复杂模型 + 小数据”,这一思想深刻影响了整个 AI 领域。
Transformer
Attention、BERT 与 GPT
2017 年《Attention Is All You Need》论文提出的 Transformer 架构,催生了两种不同的预训练范式。它们从不同角度解决了上下文表示问题,共同重新定义了现代 NLP。关于自注意力机制的详细讨论见 自注意力机制与Transformer架构。
BERT(Pre-training of Deep Bidirectional Transformers for Language Understanding)是深度双向理解语言模型的开端,通过掩码语言模型实现了真正的双向上下文嵌入。BERT 是一场彻底的范式革命,它解决了静态嵌入无法处理一词多义的难题。
其核心的自注意力机制允许模型在处理一个词时,同时获取全局的上下文信息。关键创新是掩码语言模型(MLM):在句子中随机”挖词”并让模型根据双向上下文进行预测,迫使模型深度融合语境,生成动态的、上下文感知的词向量。BERT 代表的”预训练-微调”范式至今仍在主导整个 NLP 领域。
GPT 是与 BERT 并驾齐驱的另一条技术路线。它采用 “Decoder-only” 的 Transformer 架构,目标是生成连贯的文本。为了准确预测下一个词,GPT 模型在内部形成了对上文(左侧上下文)的深刻理解和高效表示。
GPT 的成功还揭示了规模法则(Scaling Laws)——模型、数据和计算资源的规模越大,模型的能力(包括其表示能力)就越强。其强大的生成能力反过来也催生了对高质量检索系统(即 RAG)的巨大需求。
BERT Embedding
BERT 类模型的 Embedding 通过 [CLS] 标记或平均池化获取。[CLS] 标记本身不包含任何语义,当序列流经多层 Transformer Encoder 时,每一层的自注意力机制都允许 [CLS] 标记去”关注”序列中的所有其他词元。通过这种双向的信息交换,[CLS] 标记的向量表示在模型的最后一层被训练成能够吸收和总结整个输入序列的语义信息。
在模型输出的最后一个隐藏层(下一层就是还原到高维空间执行 Softmax)中,直接取出与输入 [CLS] 标记相对应的那个最终隐藏状态向量,一个 768 维的向量,被视为整个输入文本的 Embedding。或者通过平均池化获取模型最后一层输出的所有词元的隐藏状态向量,对所有元素进行平均得到 Embedding 向量。
GPT Embedding
在生成嵌入方面,与 BERT 使用 [CLS] 或平均池化不同,GPT 系列模型生成嵌入最自然、最有效的方法是利用输入序列最后一个标记的隐藏状态。背后的逻辑与它的自回归训练目标紧密相连。在 GPT 模型的嵌入任务中,除了开头的 <|begin_of_text|>,一般还会在结尾增加 EOS 即 <|end_of_text|> 标记。
当序列通过 GPT 的 Transformer 层时,每个标记的隐藏状态都会被更新。但最后一个词元是唯一一个能够”看到”整个输入序列(从 <s> 到 token_n)的词元。最后一个词元就是整个信息流的终点,是所有上下文信息的最终载体。
句子的嵌入向量就是从模型的最后一个隐藏层(在恢复到高维进行 Softmax 之前的隐藏层)中,提取出最后一个输入标记(无论是原始的最后一个词,还是 EOS 标记)对应的隐藏状态向量。对于 GPT-2 也是 768 维。
基于 GPT 架构的嵌入模型允许通过指令来控制嵌入的生成,使其适应不同的下游任务,也就是指令微调。这是基于 BERT 结构无法做到的。允许指令微调意味着可以让一个模型同时用于多种不同类型的下游任务,不再需要为每个任务单独训练一个专门的模型。最后借助 GPT 的规模法则实现性能的提升。
Qwen3 Embedding
本部分总结自 Qwen 团队于 2025 年 6 月上传的技术报告 Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models。Qwen3 Embedding 系列模型(8B、4B、0.6B)分别位于 MTEB 综合排行榜第 2-4 名,仅次于未知参数的 Gemini Embedding 001。全系列模型已经遵循 Apache 2.0 license 开源。
引言
文本嵌入与重排序是 NLP 任务的重要组成部分,高质量的语义嵌入是 RAG、Agents 等多种重要任务的基础。尽管取得了显著进展,训练在可扩展性、上下文理解以及与特定下游任务对齐方面表现良好的嵌入和重排序模型仍然具有挑战性。
本文推出了基于 Qwen3 基础模型构建的 Qwen3 Embedding 系列模型,充分利用这些模型强大的多语言文本理解与生成能力,释放其在训练嵌入模型和重排序模型方面的潜力。
为了训练嵌入模型,实施了一个多阶段训练流程:大规模无监督预训练,以及高质量数据集上的有监督微调。采用了 Model Merge 技术将不同 checkpoint 进行融合,以增强模型的鲁棒性和泛化能力。Qwen3 指令模型被用于合成训练数据,其中高质量的部分用于第二阶段的监督训练。
对于重排序模型,也采用了类似的两阶段训练方案。最终基于不同规模的 Qwen3 模型发布了 3 个嵌入与重排序模型(8B、4B、0.6B)。为了便于在下游任务中的应用,Qwen3 Embedding 系列模型支持弹性的维度表示和自定义指令。
模型架构
嵌入模型和重排序模型的核心思想是以任务感知的方式评估相关性。对于查询 和文档 ,模型需要根据指令 来评估两者之间的相关性。为此,模型在训练时使用如下形式的数据对:
分别表示指令、查询、相关与不相关的文档。在覆盖各种类型的类似数据对上训练,将会扩展其在各个不同领域的下游任务上的性能。
架构:Qwen3 嵌入模型和重排序模型基于 Qwen3 基础模型的稠密版本构建,使用 Dense 版本且包含三个参数规模,用预训练的参数初始化以利用其在大规模预训练中获得的能力。
嵌入模型:使用具有因果注意力机制的大型语言模型,在输入序列末尾添加一个 EOS 标记。最终的嵌入向量由最后一层对应于该 EOS 标记的隐藏状态生成。
为了确保嵌入向量在下游任务中能够遵循指令,将指令与查询拼接为单一输入上下文,而文档部分在送入 LLM 处理前保持不变。指令查询的输入序列为 {Instruction} {Query} <|endoftext|>,其中 <|endoftext|> 是 Qwen 系列一直使用的 EOS 标记。文档则直接为 {Doc} <|endoftext|>。
重排序模型:为了更准确地评估文本相似性,在单一上下文中使用大语言模型(LLM)进行 point-wise 的重排序。与嵌入模型类似,为实现指令遵循能力,输入上下文中包含指令。采用标准的对话模板,并将相似性评估任务建模为二分类问题。LLM 的输入遵循如下模板:
1 | <|im_start|>system |
为了根据给定输入计算相关性得分,评估下一个词为 “yes” 或 “no” 的可能性。数学表达如下:
重排序模型不使用最后一个隐藏层的嵌入向量,而是让模型展开最后一层的下一个词元预测,生成一个和词汇表同维度的 logits 向量,然后将这个向量交给 Softmax 层得到一个概率分布。其中对于 yes、no 两个词的概率就是我们需要的。
Qwen3 Text Embedding 模型支持 MRL(Matryoshka Representation Learning),允许调整嵌入向量的维数。Text Reranking 模型由于不涉及输出嵌入向量,因此不涉及此功能。它们均支持 Instruction Aware,实现基于指令动态进行嵌入或重排序。所有规模的模型均支持 32K 上下文,层数略有不同。
训练与评估
本节描述所采用的多阶段训练流程,并介绍该训练方案的关键要素,包括训练目标、训练数据合成以及高质量训练数据的筛选。
训练目标
对于嵌入模型,使用一个基于 InfoNCE 对比学习损失框架的改进版本。对于一个大小为 的 batch,其损失函数为:
其中 是用来计算相似度的函数,采用余弦相似度; 是控制温度的超参数; 是一个归一化因子,整合了正负样本对的相似度分数:
其中参数如下,按照从左到右的顺序:
- 表示正文档对,衡量本查询与本查询对应的正文档;
- 与 表示负文档对及负文档对的个数,衡量本查询与其对应的负文档;
- 表示 batch 内的其他查询,衡量本查询和 batch 内其他查询;
- 表示 batch 内的其他文档,衡量正文档和其他文档;
- 最后一项不涉及新参数,仅衡量本查询和其他文档之间的关系。
掩码因子 旨在减轻假阴性的影响,定义如下:
其中 是查询与文档之间的相关系数。
对于重排序模型,优化监督微调(SFT)损失函数,定义如下:
其中 表示由大语言模型(LLM)分配的概率。标签 对于正例文档为 “yes”,对于负例文档为 “no”。该损失函数鼓励模型为正确标签分配更高的概率,从而提升排序性能。
多阶段训练
多阶段训练方法是训练文本嵌入模型的常见做法。该策略通常首先在包含噪声的大规模半监督数据上进行初步训练,随后使用更小但高质量的监督数据集进行微调。
大规模弱监督训练数据对模型泛化能力贡献巨大,而后续阶段使用高质量数据进行微调则进一步提升模型表现。两步流程结合将获得泛化能力更强、性能更高的嵌入模型。注意,重排序模型的训练过程不包含弱监督训练环节。
在现有多阶段训练框架的基础上,Qwen3 Embedding 系列引入了以下创新:
- 大规模合成数据驱动的弱监督训练:利用基础模型强大的文本理解与生成能力,直接合成成对数据。该方法允许在合成提示词中灵活定义所需成对数据的多个维度,例如任务类型、语言、长度和难度。相比于从开放域来源收集数据,由基础模型驱动的数据合成具有更强的可控性。
- 高质量合成数据在监督微调中的应用:Qwen3 基础模型的卓越性能使得合成数据的质量显著更高,进一步提升模型的整体性能与泛化能力。
- 模型融合:在完成监督微调后,采用基于球面线性插值(SLERP)的模型融合技术。该技术将微调过程中保存的多个模型 checkpoint 进行融合,旨在增强模型在不同数据分布下的鲁棒性与泛化性能。
合成数据集
为构建一套稳健的合成数据集,用于训练模型完成各类相似度任务,我们生成了涵盖检索、双语挖掘、分类和语义文本相似度(STS)等多类别的多样化文本对。这些合成数据对的质量通过使用 Qwen3-32B 模型作为基础模型进行数据合成来保障。
我们设计了一套多样化的提示词策略,以提升生成数据的丰富性与真实性:分配特定角色,模拟潜在用户查询该文档的情景。这种注入用户视角的方式增强了合成查询的多样性与现实感。提示词模板还融入了多种维度,如查询类型(关键词型、事实型、摘要型、判断型)、查询长度、难度和语言等。这种多维度设计确保了合成数据的质量与多样性。
最终,共创建了约 1.5 亿组多任务弱监督训练数据对。实验结果表明,使用这些合成数据训练的嵌入模型在下游评估中表现极为出色,显著超越了许多以往的监督式模型。
对于第二阶段的训练,采用简单的余弦相似度计算方法筛选数据对:从随机采样的数据中保留余弦相似度大于 0.7 的配对。最终选出了约 1200 万组高质量监督训练数据对用于后续训练。
评估
我们对 Qwen3 Embedding 模型在多个基准测试上进行了全面且公平的评估。对于文本嵌入模型,采用大规模多语言文本嵌入基准测试(MMTEB),涵盖超过 250 种语言中的 500 多项经过质量控制的评估任务。
除了传统的文本任务(如各类检索、分类和语义文本相似度)外,MMTEB 还包含一系列具有挑战性和新颖性的任务,例如指令遵循、长文档检索和代码检索,是目前嵌入模型领域规模最大、覆盖语言最广的评估任务集合。
其中 Qwen3-Reranker-8B 在大多数任务中表现最佳,整体性能仅略微落后于 Gemini-Embedding 的最新版本。
结论
消融实验表明,大规模弱监督预训练阶段对实现卓越性能至关重要,模型融合阶段同样是构建强大模型的关键环节。
本技术报告正式发布了 Qwen3-Embedding 系列,这是一套基于 Qwen3 基础模型的、全面的文本嵌入与重排序模型。这些模型旨在各类文本嵌入和重排序任务中表现出色,涵盖多语言检索、代码检索以及复杂指令遵循等多个场景。
Qwen3-Embedding 模型构建于一个稳健的多阶段训练流程之上,该流程将合成数据上的大规模弱监督预训练与高质量数据集上的有监督微调和模型合并相结合。在此过程中,Qwen3 大语言模型在合成跨多种语言和任务的多样化训练数据方面发挥了关键作用,从而有效增强了模型的能力。
全面的评估结果表明,Qwen3-Embedding 模型在 MTEB、CMTEB、MMTEB 以及其他多个检索基准测试中均达到了 SOTA 性能。相关模型已在 GitHub 遵循 Apache 2.0 license 开源。
附录
附录包含了关于注意力机制、Transformer、BERT、GPT 的相关补充内容,援引其他部分的笔记作为附录。
附录 A:自注意力机制
关于自注意力机制的详细内容,见 自注意力机制。
附录 B:Transformer 架构
关于 Transformer 架构的详细内容,见 Transformer 架构。
附录 C:自监督学习
关于自监督学习的详细内容,见 自监督学习。
- Title: Text Embedding: From Bag-of-Words to Qwen3 Embedding
- Author: Hyacehila
- Created at : 2024-09-25 12:00:00
- Link: https://hyacehila.github.io//blog/2024/09/25/text-embedding-from-bow-to-qwen3/
- License: This work is licensed under CC BY-NC-SA 4.0.