Google 于 2026 年 10 月 6 日发布 EmbeddingGemma 2,并以 Apache 2.0 许可提供可下载权重。该模型将文本、代码、图像、视频和音频转换为向量,可在同一 768 维空间中比较。对于拥有本地资料集的开发者,实际问题是加载哪些编码器、如何表示查询和文件,以及结果是否对该资料集有用。本指南遵循 Google 发布的说明和模型卡;BIG CHANGE 未运行该模型,也未测量检索质量。

重大变化

  • 变化之处:此前的 EmbeddingGemma 只处理文本。第二版增加了视觉和音频编码器,因此无需先生成字幕或转录文本,就能在共享向量空间中将文本查询与受支持的媒体进行比较。Google 已发布权重;Android 上的 ML Kit 服务预计将在未来几周推出。
  • 重要原因:开发者可以加载本地资料集所需的编码器,并为受支持的文件类型建立一个统一检索索引。Google 的 AI Edge Gallery展示了在 SQLite 中存储本地媒体向量并按余弦相似度排序的做法。应用仍需处理文件导入、向量存储、结果展示,以及识别误导性匹配的检查。
  • 观察重点:眼下要判断的是:代表性文件能否在设备的内存和延迟预算内获得良好排序。后续推出的 Android 服务可能改变集成方式;公告时间并不代表服务目前已经可用。

加载模型前先选择输入

开发者指南记录了 Sentence Transformers 6.1.0 或更高版本,以及适用于所有受支持媒体的安装命令:

Terminal
pip install -U sentence-transformers[image,audio,video] transformers

准确的检查点是 google/embeddinggemma-2。Sentence Transformers 默认加载会包含所有编码器。对于仅包含文本和代码的资料集,指南建议加载时排除视觉和音频:

Python
from sentence_transformers import SentenceTransformer

model = SentenceTransformer(
    "google/embeddinggemma-2",
    config_kwargs={"vision_config": None, "audio_config": None},
)

保留视觉并排除音频需要 config_kwargs={"audio_config": None};保留音频并排除视觉需要 config_kwargs={"vision_config": None}。这些选项会改变加载的权重,但生成的向量仍处于模型的共享空间中。因此,根据指南,纯文本查询可以与使用包含视觉编码器的配置编码的图像进行比较。Google 称该模型适用于消费级设备,但公开的 Python 示例只是库的快速入门,并非针对读者设备内存或延迟的实测保证。

以不同方式编码查询和资料项

对于文本检索,模型卡为查询和语料项规定了不同的任务指令。Sentence Transformers 通过 prompt_name提供这些指令:

Python
query_vector = model.encode("northern lights", prompt_name="SearchQuery")
document_vector = model.encode(
    "Charged particles from the sun cause the northern lights.",
    prompt_name="Document",
)
score = model.similarity(query_vector, document_vector)

这段文档示例会生成向量和相似度分数;它不是我们环境中观察到的结果。Document会插入 title: none。如果资料项有实际标题,Google 要求开发者明确将其格式化为 title: {title} | text: {content}。代码搜索使用 CodeRetrieval 查询指令,并搭配已索引代码的标题或文件名。分类、聚类和句子相似度各有自己的对称指令。模型卡指出,省略文本指令后模型仍可运行,但精确度会降低。

较早的 model没有视觉或音频编码器。编码图像前,请从同一检查点加载指南中的文本与视觉配置,再用该模型处理媒体和查询。此步骤遵循文档;我们尚未运行:

Python
media_model = SentenceTransformer(
    "google/embeddinggemma-2",
    config_kwargs={"audio_config": None},
)
image_vector = media_model.encode({"image": "photo.jpg"})
query_vector = media_model.encode("a photo query", prompt_name="SearchQuery")
score = media_model.similarity(query_vector, image_vector)

处理音频时,重新加载并省略 audio_config: None以启用音频编码器;默认完整加载包含视觉和音频。Google 指南会传入类似 {"audio": "recording.wav"}的字典,不加文本任务前缀。也可以在文本中加入 <|image|>、<|video|>或<|audio|> 标记,并在字典中提供匹配文件,以组合文本和媒体。该调用会为组合输入生成一个向量。模型卡规定音频为 16 kHz 单声道,并说明视频默认每秒采样一帧。图像、视频帧、音频和文本共享 8,192 个 token 的上下文预算,因此长视频或混合项目需要规划输入,不能假设每个文件都能放入。

选择向量大小,再检查取舍

原生输出为 768 维。Google 模型卡支持将向量截短至 512、256 和 128 维。指南记录了在 truncate_dim=256中用 normalize_embeddings=True搭配 model.encode()。查询向量和索引项向量必须维度相同;缩短后的向量在余弦比较前需要归一化。模型卡称,128 维造成的多模态质量损失明显大于 256 维,并主要建议将 128 维用于文本工作负载。这些数字来自 Google 的全精度基准测试,并不预测某个资料集的召回率。

数值精度也是一项配置选择。模型卡建议在支持的硬件上使用 bfloat16,其他情况下(包括大多数 CPU)使用 float32。它警告称,float16可能产生 NaN 或导致嵌入质量悄然下降。选择性加载参数数量描述的是模型组件;设备的实际内存和搜索速度取决于执行路径、精度、索引和输入大小。

使用结果前应评估什么

原型可以为一小批获准样本建立索引,留出有代表性的查询,并检查正确项目是否排在前列。只有资料集中确有相应媒体时,才加入文本对文本、文本对图像或文本对音频的用例。在相同查询上比较 768 维和 256 维,检查相关语言和文档类型中的失败情况,并在目标设备上测量内存、索引时间和查询延迟。这些是提供给读者的评估步骤;BIG CHANGE 未执行这些测试。

模型卡公布的结果显示,EmbeddingGemma 2 在 MTEB code v1 上得分 78.68,早期模型为 68.76;multilingual MTEB v2 的得分分别为 61.36 和 61.15。模型卡还报告了图像、视频和音频结果,但这些模态没有与版本 1 的对比。所有引用的基准结果均使用全精度检查点。它们体现的是 Google 的评估条件,并不代表本地档案的准确率。模型卡提醒,质量会随语言和任务变化,检索应用需要自行进行过滤和公平性检查。

权重以 Apache 2.0 许可发布,指南链接到其Hugging Face 仓库。Google 的材料提供了本地运行方式,但没有通用部署价格:设备、计算、存储和工程都是应用成本。读者接下来要判断的是,模型能否在设备预算内正确排列代表性文件。

来源与延伸阅读

  • Google AI Edge 公告,2026 年 10 月 6 日:发布阶段、AI Edge Gallery 的本地媒体搜索实现,以及公布的 ML Kit 时间安排。本文中的设备测量值来自 Google。
  • EmbeddingGemma 2 开发者指南,2026 年 10 月 6 日:库版本、加载选项、编码示例和向量截短说明。
  • EmbeddingGemma 2 模型卡:模型架构、输入限制、任务提示、精度警告、基准表格和局限。结果由 Google 报告。
  • Google 模型仓库:指定的检查点和已发布模型文件。仓库可用并不能验证应用性能。