Google Gemini Embedding 2 技术全景解析:首个全模态 Embedding 模型的架构革新与应用实践
2025年3月,Google 发布了 Gemini Embedding 2——业界首个原生支持五种模态(文本、图片、视频、音频、PDF)的统一 Embedding 模型。这不仅是一次技术迭代,更是 AI 基础设施层面的范式转移:过去分散在不同向量空间的"方言",终于被统一成了"普通话"。
Embedding 的本质:AI 的记忆系统
如果你不太了解 Embedding 是什么,可以这样理解:Embedding 就是把各种信息翻译成一串数字。一段文字、一张图片、一段音频,经过 Embedding 模型处理后,都会变成一个固定长度的数字列表(向量)。两个向量越接近,说明它们代表的内容越相似。
这是搜索引擎、推荐系统、RAG(检索增强生成)背后最核心的基础设施之一。但以前有个大问题:文本有文本的 Embedding 模型,图片有图片的,音频有音频的。它们各自生成的向量,住在不同的空间里,互相听不懂。
五种模态的统一:技术规格详解
Gemini Embedding 2(模型 ID:gemini-embedding-2-preview)支持的五种输入类型:
| 模态 | 规格限制 | 支持格式 |
|---|---|---|
| 文本 | 最多 8,192 tokens | 100+ 种语言 |
| 图片 | 每次请求最多 6 张 | PNG / JPEG |
| 视频 | 最长 128 秒 | MP4 / MOV |
| 音频 | 最长 80 秒 | MP3 / WAV(无需转录) |
| PDF 文档 | 最多 6 页 | 直接读取 |
而且,这些模态可以混合输入。一张图配一段文字描述,模型会生成一个融合了两者语义的向量。
性能评测:MTEB 排行榜登顶
Gemini Embedding 2 在多个权威基准测试中表现出色:
- MTEB 多语言排行榜:68.32 分,比第二名高出 5.09 分
- MTEB v2 英文榜:73.30 分,排名第一
- 代码 Embedding 榜:74.66 分,同样第一
Matryoshka 表示学习:维度的弹性艺术
Gemini Embedding 2 支持 Matryoshka Representation Learning(MRL),默认输出 3,072 维向量,但可以灵活缩小到 1,536、768,甚至 128 维。不同维度下的 MTEB 表现:
| 维度 | MTEB 得分 | 存储占比 |
|---|---|---|
| 3,072 | 最高 | 100% |
| 2,048 | 68.16 | 67% |
| 1,536 | 68.17 | 50% |
| 768 | 67.99 | 25% |
| 512 | 67.55 | 17% |
关键洞察
从 3,072 维降到 768 维,得分只掉了不到 0.5 分。换句话说,向量体积缩小了 75%,质量几乎没变。这对存储和计算成本的影响是巨大的。
实战代码:从 API 到应用
基础调用
# Python 示例
from google import genai
from google.genai import types
client = genai.Client()
# 文本 Embedding
result = client.models.embed_content(
model="gemini-embedding-2-preview",
contents="什么是向量数据库?"
)
# 图片 Embedding
with open("diagram.png", "rb") as f:
image_bytes = f.read()
result = client.models.embed_content(
model="gemini-embedding-2-preview",
contents=[types.Part.from_bytes(
data=image_bytes,
mime_type="image/png"
)]
)
混合输入:图文融合
# 图片 + 文字生成一个融合向量
result = client.models.embed_content(
model="gemini-embedding-2-preview",
contents=[types.Content(
parts=[
types.Part(text="一张架构图"),
types.Part.from_bytes(
data=image_bytes,
mime_type="image/png"
)
]
)]
)
任务类型优化
模型支持 8 种任务类型优化,根据具体场景选择:
| 任务类型 | 用途 |
|---|---|
| SEMANTIC_SIMILARITY | 语义相似度计算 |
| RETRIEVAL_DOCUMENT | 文档检索(索引端) |
| RETRIEVAL_QUERY | 查询检索(查询端) |
| CLASSIFICATION | 文本分类 |
| CLUSTERING | 聚类分析 |
| CODE_RETRIEVAL_QUERY | 代码搜索 |
| QUESTION_ANSWERING | 问答系统 |
| FACT_VERIFICATION | 事实核查 |
# 指定任务类型和输出维度
result = client.models.embed_content(
model="gemini-embedding-2-preview",
contents=texts,
config=types.EmbedContentConfig(
task_type="RETRIEVAL_DOCUMENT",
output_dimensionality=768
)
)
核心应用场景
场景一:多模态 RAG
以前做 RAG,文档里的图表、流程图基本就扔掉了,只索引文本。现在图片和文本在同一个向量空间,可以一起检索。用户问「系统架构是什么样的」,既能找到文字描述,也能直接找到那张架构图。
场景二:跨模态搜索
用一段文字描述去搜索匹配的视频片段。或者反过来,用一张产品图去搜索相关的技术文档。这在以前需要维护多套管道,现在一套搞定。
Google 做了一个在线 Demo:FindMeMedia,可以用图片、语音或文字搜索跨模态的内容。
场景三:音频知识库
会议录音、播客、客服电话,以前要先转录成文字才能做检索。现在直接对音频做 Embedding,省掉了转录这一步,还保留了语气、语调等文字丢失的信息。
场景四:法律文档发现
Google 提到,早期合作伙伴已经在用 Gemini Embedding 做法律领域的文档发现(discovery),在数百万条记录中精准定位关键证据,包括图片和视频证据。
竞品对比:Embedding 赛道格局
| 模型 | 文本 | 图片 | 视频 | 音频 | 开源 | |
|---|---|---|---|---|---|---|
| Gemini Embedding 2 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| OpenAI text-embedding-3 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Cohere Embed v4 | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
| Voyage multimodal-3 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Jina Embeddings v4 | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
各家所长:
- Gemini Embedding 2:唯一覆盖五种模态的商用模型
- OpenAI:文本 Embedding 生态最成熟,但多模态缺席
- Cohere:企业级文档理解,擅长表格、图表、手写笔记
- Jina v4:唯一开源的多模态选项,可自部署,数据不出内网
- Voyage AI:性价比高,Anthropic 官方推荐
成本与定价
| 模型 | 价格(每百万 tokens) | 模态支持 |
|---|---|---|
| Gemini Embedding 2 | $0.20(Batch $0.10) | 5种 |
| OpenAI text-embedding-3-large | $0.13 | 1种 |
| Cohere Embed v4 | $0.12 | 2种 |
Gemini Embedding 2 价格略高,但它覆盖的模态也多得多。而且 Google AI Studio 有免费额度可以试用。
生态集成
Gemini Embedding 2 已经和主流工具完成集成:
向量数据库
Weaviate、Qdrant、ChromaDB、Pinecone,以及 Google 自家的 BigQuery、AlloyDB、Cloud SQL
RAG 框架
LangChain、LlamaIndex、Haystack
云平台
Gemini API 和 Vertex AI 均可调用
Qdrant 还专门发了一篇博客介绍如何利用 MRL 做「两阶段检索」:先用 768 维做快速初筛,再用 3,072 维做精排。同一个模型,同一次生成,两种用法。
避坑指南
1. 向量空间不兼容
如果你之前用的是 gemini-embedding-001(纯文本模型),升级到 gemini-embedding-2-preview 需要把所有数据重新 Embedding。两个模型生成的向量不在同一个空间里,直接混用会得到乱七八糟的结果。
2. 低维度向量需要手动归一化
3,072 维的输出是自动归一化的,但如果你缩小到 768 或 1,536 维,需要自己做 L2 归一化:
import numpy as np
embedding = np.array(result.embeddings[0].values)
normalized = embedding / np.linalg.norm(embedding)
3. Preview 状态注意
模型 ID 带着 preview 后缀,说明 API 可能还会有调整。生产环境接入需要做好兼容性预案。
更大的图景
Embedding 模型通常不像 GPT、Claude、Gemini 这些生成式模型那样上头条。但它其实是 AI 基础设施中最底层、最关键的一块砖。
生成式模型是「嘴」,负责说话。Embedding 模型是「记忆」,负责理解和检索。 RAG 之所以能工作,就是因为 Embedding 帮模型「想起来」了相关的上下文。
过去这块砖是按模态分开烧的,文本一块,图片一块,音频一块。Gemini Embedding 2 做的事情,是把这些碎砖烧成了一整块。
对 Agent 系统来说,这个意义可能更大。Agent 在工作过程中会接触到各种模态的信息:看到截图、听到语音指令、读取 PDF 报告。如果这些信息存在不同的向量空间里,Agent 的「记忆」就是割裂的。统一的 Embedding 空间,意味着 Agent 终于有了完整的、跨模态的记忆。
可以说:多模态 Embedding 的统一,是 AI 基础设施的下一个关键升级。而 Google,自然想要抢个先手。