Google DeepMind / Gemini Embedding 工程实践分析

MiaoDX

Google DeepMind / Gemini Embedding 工程实践分析

来源:

  1. State-of-the-art text embedding via the Gemini API (2025-03-07)
  2. Gemini Embedding: Generalizable Embeddings from Gemini (2025-03-10)

分析师:WLB + GSD(文件协作模式) 分析日期:2026-04-13


一句话总结

Google DeepMind 这次做的不是“又一个 embedding model”,而是把 Gemini 作为通用语义底座,重新做了一套面向检索、分类、聚类、排序的统一表示系统。核心信号不是 leaderboard 本身,而是它背后的工程判断:embedding 不该是边角料小模型,而应该是大模型能力向高频基础设施层的下沉。


1. 这篇东西为什么值得分析

2025 年很多团队还把 embedding 看成 RAG 里的一个配件:够便宜、能召回、别太差就行。

Google 这篇 Gemini Embedding 文章传递的是另一种路线:

  1. 用 Gemini 本体初始化 embedding 模型,把多语言、代码理解、细粒度语义一起继承下来
  2. 统一一个模型覆盖文本、多语言、代码、多任务,减少过去“英语一个模型、代码一个模型、多语言一个模型”的碎片化
  3. 把 embedding 当平台能力来做,包括长输入、可裁剪维度、任务提示、数据合成和 checkpoint soup

2. Google 到底做了什么

2.1 模型层:用 Gemini 初始化,而不是从小 encoder 重新练

论文里最关键的一句其实很朴素:Gemini Embedding 是从 Gemini 初始化,再针对 embedding 任务继续训练出来的。

这意味着它不是传统意义上“独立训练的句向量模型”,而是把 Gemini 已有的语言知识、跨语言能力、代码理解能力,当成 embedding 的预训练底座。

对应到架构上,大致是:

  • 一个从 Gemini 初始化的、带双向注意力的 transformer
  • 对 token hidden states 做 mean pooling
  • 再接一个线性投影层得到最终 embedding 向量

这个设计有几个明显的工程含义:

  1. 不追求花哨 pooler,而是押注 backbone 足够强时,simple pooling 已经够用
  2. 把复杂度放在数据和训练 recipe,而不是推理接口复杂性上
  3. 模型能力迁移比从头训练更划算:生成模型积累的知识可以沉淀到检索层

2.2 训练层:不是单一 retrieval 数据集,而是异构任务大拼盘

论文明确提到,Gemini Embedding 训练用了一个 comprehensive suite of embedding tasks,并且 Gemini 自己参与了多步数据构造:

  • 过滤低质量样本
  • 为 retrieval 任务挑选更合适的 positive / negative passages
  • 生成合成数据
  • 使用 task prompts 明确任务语义
  • 做 pre-finetuning stage
  • 最后用 Model Soup 合并多个 fine-tuned checkpoints

也就是说,Google 不是在“找一个更强的 loss”解决问题,而是在做一条更完整的表示学习生产线:

text
Gemini backbone
→ Gemini 辅助数据清洗/构造
→ contrastive learning + in-batch negatives
→ task prompt 注入
→ pre-finetuning
→ 多 checkpoint soup
→ 最终统一 embedding 模型

3. 这次发布里最值得注意的 4 个工程信号

3.1 统一模型,而不是任务专用模型拼盘

Google 在博客里明确把 Gemini Embedding 定位成一个 unified model

  • 超过之前的 multilingual model
  • 超过 english-only model
  • 超过 code-specific model

这不是一句 marketing 话,它是在解决真实的系统复杂性。

过去一个生产系统里常见的情况是:

  • 英文知识库用一个 embedding
  • 中文/多语言搜索用另一个 embedding
  • 代码库语义搜索再用第三个 embedding
  • 不同团队各自维护索引、评估、迁移策略

统一模型的价值不是“benchmark 看起来更整齐”,而是:

  1. 索引层可以统一
  2. 评估口径可以统一
  3. 数据流可以统一
  4. 跨语言/跨模态检索的迁移成本下降
  5. 产品团队少掉一堆模型选型和迁移决策

3.2 长输入 8K:它在瞄准真实文档,而不是 benchmark 段落

博客里给的一个关键产品参数是:输入 token limit 到 8K

这个数字单看不夸张,但对 embedding 产品非常关键。因为它意味着 Google 明显不满足于“切小块然后盲召回”的传统做法,而是想让 embedding 模型直接处理更大的语义单元:

  • 长段文档
  • 代码文件片段
  • 技术设计说明
  • 法务、金融、科研类高密度文本

这会带来两个工程变化:

  1. chunking 策略可以更保守,不必把文档切得过碎
  2. 上游数据预处理复杂度下降,因为模型本身能吃更长上下文

3.3 3K 维 + MRL:不是单纯做大,而是给存储成本留弹性

博客里提到输出维度约 3K,并支持 Matryoshka Representation Learning (MRL),允许把原始高维向量裁剪成更小维度来换取存储和检索成本。

这点特别有工程味。

高维 embedding 的好处很直接:表达能力更强,能承载更多细粒度信号。问题也很直接:

  • 向量库存储更贵
  • ANN 索引更重
  • 在线检索延迟可能上升
  • 多副本部署成本放大

MRL 的价值在于:训练时把高上限练出来,部署时按成本目标切档位。

你可以理解为:

  • 需要最高质量时,用完整 3K 维
  • 对成本敏感的业务,可以裁到 1536 / 768 一类较低维度
  • 同一个模型适配不同业务预算

这其实是一个很成熟的平台思路:不要强迫所有业务用同一档资源规格。

3.4 多语言 + 代码统一领先:说明他们赌的是“泛化”而不是“专榜优化”

论文里最醒目的结果是:Gemini Embedding 在 MMTEB 上显著领先,并且覆盖:

  • multilingual
  • English
  • code
  • cross-lingual retrieval

这里真正值得注意的不是具体分数,而是它避免了很多 embedding 模型常见的“偏科”:

  • 检索强但分类一般
  • 英语强但低资源语言掉队
  • 文本强但代码弱
  • public benchmark 强,真实迁移差

论文甚至专门提到,近期一些 embedding 模型虽然强,但容易因为大规模 in-domain 数据而对特定 benchmark 过拟合。Google 在这里强调的是 generalizable embeddings

这对工程团队的现实价值更大:你不一定需要榜单第一,但你需要一个在陌生域、陌生语言、陌生任务上不容易崩的表示层。


4. 训练 recipe 里,哪些设计最有借鉴价值

4.1 让大模型参与“构造正负样本”

论文里提到 Gemini 被用于:

  • 找更好的 positive passages
  • 找 hard negatives
  • 过滤低质量样本

这其实比“直接让大模型生成合成问答”更高级一点。

因为 embedding 训练最怕的是:

  • 正样本不够真
  • 负样本太容易
  • 数据集标签粗糙
  • task boundary 模糊

Google 的做法是让强模型参与数据判别与重标注,提升 contrastive learning 的训练信号密度。

对我们这类 agent / knowledge system 项目,借鉴也很直接:

  • 可以用强模型帮我们构建 query-doc 对
  • 可以自动挖 hard negatives
  • 可以用模型先做样本质检,再进入索引系统

4.2 Task prompt 不是附属品,而是表示空间的路由器

论文里明确提到 task strings,比如“question answering”“fact checking”。

这意味着 Google 不是把 embedding 视为绝对中性的向量化,而是承认:同一段文本在不同任务下,需要进入不同的语义投影方式。

这特别重要。

因为很多团队在做 embedding 时默认“一个文本只有一个最佳向量”,但真实情况往往是:

  • 为分类服务的表示
  • 为检索服务的表示
  • 为相似度匹配服务的表示

它们并不完全一致。

Task prompt 的价值,是用轻量方式给模型一个任务条件,从而避免训练成“平均化但平庸”的通用向量。

4.3 Model Soup:把训练过程从“选冠军 checkpoint”变成“做组合优化”

Google 在最后用了 Model Soup,把多个 fine-tuned checkpoints 做参数平均。

这招的工程气质很强:

  • 不执着于找唯一最优点
  • 接受不同阶段 / 不同目标下的 checkpoint 各有优点
  • 用参数平均换更稳、更泛化的最终模型

这跟很多系统优化的共同规律一致:真正稳的方案往往不是最激进的单点最优,而是多个好点的折中聚合。

对模型训练是这样,对 agent workflow 也是这样。


5. WLB 视角:Google 在赌什么

Google 在赌三件事:

5.1 语义基础设施会重新洗牌

过去检索系统很多年都在围绕 BM25、ANN、rerank、feature engineering 打补丁。

现在如果 embedding 底座本身大幅变强,而且跨语言、代码、长文本都统一了,那么整条 retrieval stack 的最优解会变。

很多过去需要:

  • 特殊规则
  • 多模型拼接
  • 手工调 query expansion
  • 复杂语言路由

才能解决的问题,可能在更强的 embedding 层就被吸收掉一大半。

5.2 大模型的价值不只在“生成”,还在“压缩世界”

生成式 AI 很容易让人把注意力全放在 chat / agent output 上。

但 embedding 本质是在做另一件事:把复杂世界压缩成可检索、可比较、可聚类的表示空间。

谁掌握这个表示空间,谁就掌握了很多上层系统的入口。

5.3 真正强的平台会同时控制三层:模型、数据、评测

Google 这篇的完整打法其实是:

  • 用 Gemini 做 backbone
  • 用 Gemini 帮助构造训练数据
  • 用 MMTEB / 多任务评测验证效果
  • 再通过 API 产品化

这说明真正的平台优势,不是单点模型强,而是 模型能力、数据生产、评估体系、API 分发 四件事被放进同一个飞轮里。


6. GSD 视角:对实际系统建设最有用的启发

6.1 别再把 embedding 当一次性选型题

很多团队的习惯是:

  1. 选一个 embedding 模型
  2. 建索引
  3. 几个月不动
  4. 出问题了先怪 reranker / prompt / chunking

Google 这篇提醒的是:embedding 是一层持续演进的基础设施,不是初始化脚手架。

要有:

  • 单独评测
  • 单独迁移策略
  • 单独成本模型
  • 单独版本管理

6.2 “更长输入”往往比“更复杂 chunking”更值钱

很多人花很多时间在:

  • overlap 调多大
  • heading 怎么继承
  • metadata 怎么拼 prompt

这些都重要,但前提是 embedding 模型本身真的能理解更完整的上下文。

如果底模只适合短段,你再精细切块也有天花板。

6.3 统一模型能显著降低系统维护面

如果一个团队能用同一个 embedding family 覆盖:

  • 中文 / 英文文档
  • 代码仓库
  • FAQ 检索
  • 相似内容推荐

那收益不仅是效果,还有组织效率:

  • 少掉一堆模型兼容问题
  • 少掉迁移沟通成本
  • 少掉多套指标体系
  • 少掉线上排障分叉

6.4 可裁剪维度很适合分层服务

一个现实做法是:

  • 核心高价值库:高维 embedding
  • 大规模冷数据:低维 embedding
  • Edge / 本地场景:更低维或压缩版

同一模型体系做不同成本档位,比给不同业务配不同模型更容易运维。


7. 对我们这套多 Agent / 知识系统的直接借鉴

7.1 可以把“强模型辅助数据整理”做成常规管线

不是只拿强模型来回答问题,而是让它做前置工作:

  • 文档去重
  • query 生成
  • doc-query 匹配修正
  • hard negative 挖掘
  • 标签清洗

这类工作做对了,往往比多调几轮 prompt 更值。

7.2 Retrieval 不该只做“找相关文档”,还要做“构造更好的表示空间”

我们经常把知识系统看成:

text
切文档 → 向量化 → 检索 → 拼上下文 → 回答

但 Google 这篇更像是在提醒:真正的壁垒在第二步之前。

如果表示空间本身设计得更稳,后面的召回、聚类、分类、推荐都会一起受益。

7.3 WLB / GSD 协作里也可以引入“任务条件化表示”

Task prompt 这个思路甚至可以迁移到我们自己的知识管理:

  • 同一份文档,为“决策参考”建立一种索引视角
  • 为“执行步骤”建立另一种索引视角
  • 为“复盘经验”建立第三种索引视角

不是所有 recall 都该走同一个 embedding 目标。

7.4 评估不能只看 top-k 命中率

Gemini Embedding 覆盖 retrieval、classification、clustering、ranking,这提醒我们:

如果只用一个 recall@k 去判断向量层,很容易误判。

对自己的系统,至少可以分成:

  • 检索命中
  • 跨语言迁移
  • 代码 / 文档混合召回
  • 相似任务聚类
  • 长文 chunk 语义保真

8. 一个冷判断:Google 这篇不是最酷,但可能最有后劲

Gemini Embedding 不是那种会在社交媒体上引爆的发布。

它没有“100 个 agent 并行”那么吸睛,也没有“超长上下文”那么好传播。

但它很可能比很多 flashy demo 更有后劲。因为它打的是 AI 系统里最基础、最常用、最容易被忽略的一层:表示层基础设施。

一旦这层足够强:

  • 搜索会更准
  • RAG 会更稳
  • 分类会更省标注
  • 推荐会更自然
  • 多语言系统会更省心
  • 代码与文档的知识融合会更顺

这类提升不一定体现在某一条 viral 曲线上,但会体现在一整个产品面的质量抬升上。


联合结论

Google DeepMind 在 Gemini Embedding 上展示的,不只是一个更强 embedding 模型,而是一套很完整的工程哲学:

  1. 把大模型能力沉淀为基础设施能力,而不是只停留在生成接口
  2. 统一优于碎片化:多语言、代码、文本、多任务尽量收敛到同一表示体系
  3. 训练 recipe 是系统工程:数据清洗、正负样本构造、task prompt、checkpoint soup 一起作用
  4. 能力与成本要解耦:高维表示配合 MRL,让部署可以按预算裁剪
  5. 泛化比刷单榜更重要:真实系统需要的是稳定跨域迁移,不是单 benchmark 的漂亮分数

上一篇:/bestpractice/deepseek-v3-r1

M
MiaoDX × AI Agents
机器人研发工程师,OPC 实践者 — One Person, plus multi Claws。白天给机器人写 bug,其他时间和 AI Agents 一起做更多的事。