index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html
近期,Google、字节跳动、阿里等公司发布的最新检索模型,如gemini-embedding、seed1.5-embedding、qwen3-embedding,均将核心创新点聚焦于利用大语言模型(LLM)生成海量、高质量的合成数据。本文深入探讨了这三款模型的技术细节,重点分析了LLM在检索数据构造全链路中的应用,包括作为“数据工厂”生成合成数据,作为“数据精炼师”进行数据过滤和评分,以及作为“难负例挖掘专家”提升模型泛化能力。文章还讨论了大模型与检索任务的对齐,以及LLM在提升检索模型性能方面的潜力。
🌟 LLM作为“数据工厂”,革新检索数据生成:Qwen3-embedding、Seed1.5-embedding和Gemini Embedding均利用大模型生成了大规模、多样化的合成训练数据,用于替代或补充传统的弱监督和人工标注数据。例如,Qwen3-embedding通过控制Prompt生成1.5亿对多任务弱监督数据,并筛选出1200万高质量合成数据;Seed1.5-embedding则针对通用和推理密集场景生成合成数据;Gemini Embedding则利用Gemini为passage生成query,并进行数据过滤。
💎 LLM赋能“数据精炼师”,提升数据质量与信噪比:Gemini Embedding尤为突出地展示了LLM作为“数据精炼师”的能力,利用Gemini的Zero-shot评分能力,对生成的数据进行过滤和重标注,显著提高了训练数据的信噪比。这种能力使得LLM能够像“专家标注员”一样,对数据进行打分、过滤和重标注,从而优化模型训练效果。
💡 LLM担当“难负例挖掘专家”,增强模型鲁棒性:通过利用LLM对查询与文档间细微语义差异的精准判断,可以挖掘出“看似相关,实则无关”的高质量难负例。Seed1.5-embedding采用了迭代式难负例挖掘策略,而Gemini Embedding则通过基于分数的分类和生成likelihood评分,结合Reciprocal Rank Fusion来识别最佳难负例,从而提升模型在复杂场景下的检索能力。
🚀 模型融合(Model Merge)与训练范式优化:Qwen3-embedding和Gemini Embedding都采用了模型融合技术(如slerp、model soup)来整合不同阶段或不同训练运行的模型,以增强模型的鲁棒性和泛化性。同时,文章也探讨了LLM的预训练范式(NTP)与检索任务的对齐,以及如何让检索这一对比任务从LLM的能力中获益。
李嘉诚 2025-08-10 22:02 北京
LLM 变身数据工厂!
©作者 | 李嘉诚
单位 | 字节跳动
研究方向 | Retrieva & LLM
近期,Google,字节跳动,阿里相继发布了他们最新的检索模型——gemini-embedding,seed1.5-embedding,qwen3-embedding。令人瞩目的是,它们不约而同地将核心创新点聚焦于同一方向:利用大语言模型(LLM)生成海量、高质量的合成数据 ,本文将深入探讨这三款模型的技术细节,希望给大家日常工作能带来一些 insight。
本文主要从以下两个方面展开:
1. 介绍下最近发布的三个 SOTA 检索模型(qwen3-embedding,seed1.5-embedding,gemini-embedidng)的技术细节,核心创新点。
2. 这三个模型的共同点是都利用了大模型来参加检索数据构造的全链路,基于此,本文也讨论下检索和大模型的关系。
前言:
1. 这个三个模型,只有 qwen3 是完全开源,因此它的技术报告细节比较详实,其他两个是提供了 api,提供了一些技术报告,因此涉及这两篇的时候,如果原有的技术报告写的不详细,我会提供自己的一些猜测,如果没办法猜测,我会提供下原文。
2. 此外,欢迎大家关注笔者发起和维护的一个检索的开源项目。
RAG-Retrieval
https://github.com/NovaSearch-Team/RAG-Retrieval
qwen3-embedding
核心创新点:
1. 利用大模型生成合成数据;
2. 模型 merge;
3. 在训练范式上,在对比学习 loss 的基础上,也应用之前 gte 提出的改进版 loss(来扩充负例),以及提出一个 mask 假难负例的方法。
1.1 大模型合成数据
1. 之前大部分 embedidng 模型的训练都分为两个部分。
1)从网上找到亿级别的 query-doc 弱监督文本来进行对比学习训练(为了帮助其泛化)
2)收集百万级别高质量的人工标注数据并挖掘难负例进行对比学习训练。
qwen3 的理念是,大模型已经足够强了,而且其擅长在生成能力,因此利用大模型产生检索相关的合成数据 is all you need,分别在这两个阶段引入大模型构造的数据。
stage1: 150 million pairs of multi-task weak supervision training data
首先,在 stage1,他不像之前的工作一样在从网上收集弱监督数据,而是直接使用 qwen3-32b 来生成大规模的合成数据,大模型生成数据的好处是,可以通过控制 prompt 来生成各式各样的数据,例如 task,language,length,and difficulty。
在这一阶段,他生成了 1.5 亿对的弱监督训练数据。(会过滤掉过难或者过简单的数据)
stage2: 12 million high-quality supervised training data pairs.
他在第一阶段的基础上, 在筛选了 1200w 的高质量合成数据(会利用已有的向量模型筛选 cosine 相似度大于 0.7 的数据)。
2. 如何利用大模型来合成数据呢?
模型:Qwen3-32B model
数据类型:retrieval,bitext mining,classification,and semantic textual similarity(STS)
语料库:使用 Qwen3 的多语言预训练语料库。
prompt 策略(检索模型):使用大模型从 ducument 来生成 query。
核心思想:不同的人看到不同的文章,可能会提问不同的问题,因此,设计两步走的 prompt 策略。
1. 生成 configuration:他们首先先为 passage 检索可能的角色,然后让大模型生成 query 类型,困难程度和角色。
2. 生成 query:输入上述 configuration,让大模型来生成 query。
第一步,先根据 passage 在 Persona Hub 去检索与当前 passage 最相关的角色,选择 top5 个最相关的角色候选。然后连同 passage 输入给大模型,让大模型生成 query 类型,困难程度和角色。
Given a **Passage** and **Character**, select the appropriate option from three fields: Character, Question_Type, Difficulty, and return the output in JSON format. First, select the Character who are likely to be interested in the Passage from the candidates. Then select the Question_Type that the Character might ask about the Passage; Finally, choose the Difficulty of the possible question based on the Passage, the Character, and the Question_Type. Character: Given by input **Character** Question_Type: - keywords: ... - acquire_knowledge: ... - summary: ... - yes_or_no: ... - background: ... Difficulty: - high_school: ... - university: ... - phd: ... Here are some examples <Example1> <Example2> <Example3> Now, generate the **output** based on the **Passage** and **Character** from user, the **Passage** will be in {language} language and the **Character** will be in English. Ensure to generate only the JSON output with content in English. **Passage**: {passage} **Character**: {character} 第二步:输入 Character,Passage,和要求(query 类型,困难,长度,语言),让大模型来生成 query。
Given a **Character**, **Passage**, and **Requirement**, generate a query from the **Character** 's perspective that satisfies the **Requirement** and can be used to retrieve the **Passage**. Please return the result in JSON format. Here is an example: <example> Now, generate the **output** based on the **Character**, **Passage** and **Requirement** from user, the **Passage** will be in {corpus_language} language, the **Character** and **Requirement** will be in English. Ensure to generate only the JSON output, with the key in English and the value ,→ in {queries_language} language. **Character** {character} **Passage** {passage} **Requirment** - Type: {type}; - Difficulty: {difficulty}; - Length: the length of the generated sentences should be {length} words; - Languange: the language in which the results are generated should be ,→ {language} language; 整体流程如下图所示:
1.2 model merge
1. 在有监督微调阶段,可以根据多个不同阶段的的模型。然后通过 model merge(使用 spherical linear interpolation(slerp)方法)来将不同的模型合并成一个,来增强模型的鲁棒性和泛化性。
1.3 训练 loss
解释:
1. 分子不说了,就是一个 query 和其对应的正例 doc。
2. 分母:
query 和其正例。(1 个)
query 和其对应的 k 个难负例。(k 个)
当前 query 和 batch 内其他 query。(batch_size-1 个)
当前 query 对应的正例 doc 和 batch 内其他 query 对应的 doc。
query 和 batch 内其他 query 对应的 doc。
3. 分母中除了 query 和其正例,都需要拉远他们彼此的距离。
因为 embedding 用于召回,需要让其见世面。需要把不相关的 q-q,q-d,d-d 都拉远。因此,这种方法,默认一个 batch 内的 query 和 doc 都是随机分布。
因此,这种这种方法除了把 query 和当前负例 doc 的距离拉远,也把上述分母中的 pair 对的距离拉远。
这是一种增大负例很好的方法,只要计算对应 pair 对的 cosine 即可,因为这些文本都已经得到 embedding 了。
解决假的难负例:
上述假设太强了,一个 batch 内不一定 q-q,q-d,d-d 都是不相关的,可能有相关的。因此,他们设置了一个 mask 矩阵 ,来弥补 false negatives 的影响。核心思想是, 把 query 和正例 doc 的 cosine 距离作为一个标准 。
如果上面分母中 batch 内随机组的 q-d,q-q,d-d 的 cosine 距离超过这个标准 0.1 个点或者和正例 doc 一样,证明这个可能是假负例,就给其 mask 掉。
1.4 训练参数
1.5 消融实验
解释:
1. 第一行代表只用第一阶段的合成数据训练,效果已经不错了。
2. 第二行代表第一阶段去掉合成数据(应该包含第二阶段的训练),效果相比最后一行的最终模型效果有下降。
3. 第三行代表去掉 model merge,效果相比最后一行的最终模型效果有下降。
解释:
1. 在 ms marco 数据集,测试不同的训练数据合成策略,在 BEIR 测试,他们的效果会好一点。
此外,作者表示,他们发现在 qwen3 上,双向的 attention 没有比过原生单向的 attention,因此,和之前的 gte 系列工作不同,这次是单向 attention。
Seed1.5-Embedding
这篇工作没有技术报告,模型也没有开源,只是有一篇文章简单介绍下工作,这里做简要总结。
核心贡献点:
1. 也是生成合成数据,并且尝试生成推理型的 bright 合成数据,来提高检索模型在推理场景下的结果,
2. 训练范式上,尝试迭代式挖掘难负例,并设计了一种方法来过滤假的难负例。
2.1 大模型合成数据
分别针对通用场景和推理密集场景构造数据。
对于通用场景:
1. 也是 document->query 的方法,团队先用 prompt Seed1.5 模型根据语料库中文档生成多样化 query,并仅保留相关度较高的查询-文档对。
猜测:
和 qwen3-embedding 一样,利用大模型或者已有的检索模型来过滤质量较差的query-doc 对。
对于推理密集场景:
由于文档和查询均较为稀缺,团队从大量没有标准答案的难 query 出发,从文档库中挖掘候选并用大语言模型筛选正例与难负例,进而得到推理密集型检索场景的训练数据。
2.2 难负例相关
1. 挖掘难负例。
而通常做法中,使用开源模型挖掘的负例,时常无法贴合待训练模型的偏好。为此,团队设计了迭代式难负例挖掘策略:根据待训练模型模型自身偏好挖掘难负例,从而筛选出更“刁钻”的难题,供模型训练,以进一步提升其能力。
2. 过滤假的难负例。
具体在第二阶段训练中,检索任务的负例既包含挖掘得到的难负例,又包含 in-batch 负例。
1.其中,难负例中可能存在过难的伪负例,
2.此外,在使用 in-batch 负例时,由于不同查询是经过随机采样组成 batch,因此,当语料库较小或查询分布较为集中时,同 batch 内不同查询对应的文本也可能构成伪负例。
解决办法:挖掘难负例时和计算 in-batch 负例 loss 时, 会自动过滤和正例过于相似的文本,从而避免伪负例影响学习。
猜测是:
1. 计算挖掘的负例和正例 doc 的余弦相似度,如果过高,就 mask 掉这个负例。
2.3 消融实验
合成数据还是非常重要的。
(1)第一阶段预微调、迭代式难负例挖掘、负例过滤三者对通用任务检索效果均有一定提升。负例过滤 在英文上效果更加明显,该现象源于多个英文数据集文档数较少,同时面临伪难负例和伪 inbatch 负例的情况;
(2)合成数据可提升英文检索表现以及推理密集型检索效果,在中文上,训练数据则较为充足,团队没有使用合成数据。
Gemini Embedding
核心创新点:
1. 引入 Gemini 大模型进行检索数据构造的全链路(doc2query,生成难负例,Refiner 已有的训练数据)。
2. 模型 merge。
3.1 训练概述
整体的训练范式还是二阶段:
1. Pre-finetuning:我们利用十亿级网络语料库,并使用 title 和 passage 对作为输入和正例进行对比学习,
2. Fine-tuning:准备了三种不同的数据,分别针对 任务多样性、语言多样性和编码能力,通过细粒度的 grid search 找到这三种数据混合的最佳比例。
3.2 大模型应用于检索数据构造
合成数据:
retrieval:
1. 我们首先使用 Gemini 为 passage 生成 query。(使用了 few-shot prompting 策略)
数据过滤:
1. 利用 Gemini 从 passage 生成的 query,用 Gemini 自动评分器过滤质量较低 query-passage 对。(例如,不切实际的搜索查询)。
2. 对于人工标注数据:使用 Gemini 来过滤此类不良样本。(使用了few-shot prompting 策略)
难负例挖掘:
1. 首先利用没有难负例的 pair 对训练一个 embedding 模型。
2. 基于这个初始嵌入模型,我们为每个 query 检索 top 个文档。然后,使用 Gemini 对每个文档以及 query 进行评分。
3. 使用了两种评分方式:大模型直接进行基于分数的分类(0,1,2,3)以及从文档生成 query 的 likelihood。最后通过 Reciprocal Rank Fusion 结合这两者的得分。
4. 他们发现得分按 Gemini 分数排序后的第 个文档是最好的难负例。
3.3 model merge(model Soup)
模型 merge 的方式:
我们尝试了不同的参数组合
1. 包括对来自同一次训练运行的检查点进行平均(Izmailov 等人,2018)、
2. 来自不同训练运行的检查点进行平均(Wortsman 等人,2022),
3. 各种加权平均值。
最终的选择:
1. 通过有意改变训练数据分布以及手动选择 checkpoint 的,以及通过实验得到。(细节没说,原文如下)
The final set of ingredient checkpoints were obtained through a combination of intentional data variation as well as manual checkpoint selection and experimentation.
3.4 消融实验
解释下不常见的列。
1. MTEB(multilingual),mteb 的多语言版本。
2. XOR-Retrieve:跨语言检索数据集,将英语段落与 7 种不同语言的检索查询进行配对
3. XTREME-UP:跨语言检索数据集,需要将 20 种代表性不足的印欧语系的查询映射到英语段落。
1、多语言的泛化。
English Only(Diverse Task):仅仅训练在英文的数据集中,仍然在多语言的 MTEB,以及 XOR-Retrieve 和 XTREME-UP 有很大的提升。
Data Filtering:
1. 使用 Gemini 去过滤 MIRACL 的 training datasets,消融发现在大多数语言中可以提升效果。
大模型和检索的思考
检索本质上是一个对比的任务,输入 query,从诸多候选 doc 中,选择出与 query 相关的若干 doc。
需要模型细粒度识别针对当前 doc,那些 query 是相关的,哪些是略微相关,哪些是不相关的。
大模型目前的训练范式是 NTP,在这个过程中,模型可以通过预测下一个词,自然而言的学到很多东西。(类似多任务学习)
那么当前的大模型除了在基座方面,可以提供不错的能力。怎么让检索和大模型的预训练范式对齐,让检索这个对比的任务从中受益呢?这三篇工作汇总而言是从下面的角度来利用 llm。
LLM 作为“数据工厂”(Data Factory) :利用大模型强大的生成能力来构造为检索构造对比学习的训练数据。
LLM 作为“数据精炼师”(Data Refiner):
Zero-shot 评判能力 :LLM 具备强大的 Zero-shot 分类和排序能力。这使得它能像一个“专家标注员”,对已有的或新生成的数据进行打分、过滤和重标注,极大地提升了训练数据的信噪比。Gemini-Embedding 将这一点发挥到了极致。
LLM 作为“难负例挖掘专家”(Hard Negative Miner):
前几天听的张小珺的《和张祥雨聊,多模态研究的挣扎史和未来两年的 2 个 “GPT-4 时刻”》博客上聊多模态研究的挣扎史。因为 NLP 的自监督优化非常成功,但是把这个复制到多模态就非常艰难。
其实检索领域何尝不是,很久没有看到创新性比较强的工作了,这三篇训练范式基本没有变化,不过共同点是都在利用大模型合成数据。
[1] Gemini Embedding: Generalizable Embeddings from Gemini
https://arxiv.org/pdf/2503.07891
[2] Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models
https://arxiv.org/pdf/2506.05176
[3] 向量检索能力 SOTA,字节 Seed1.5-Embedding 模型训练细节公开
https://zhuanlan.zhihu.com/p/1905277902477582812
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是 最新论文解读 ,也可以是 学术热点剖析 、 科研心得 或 竞赛经验讲解 等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人 原创作品 ,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供 业内具有竞争力稿酬 ,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱: hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信( pwbot02 )快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在 「知乎」 也能找到我们了
进入知乎首页搜索 「PaperWeekly」
点击 「关注」 订阅我们的专栏吧
·
阅读原文
跳转微信打开