Gemini Embedding 2

Gemini Embedding 2 建立在 Gemini 基础模型本身上,从一开始就继承了其多模态理解能力。文本、图像、视频、音频和文档通过共享的 Transformer 架构投影到单个联合嵌入空间中。

Gemini Embedding 2
微信 ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署
AI工具导航 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

嵌入模型通常一次只能理解一种类型的数据。文本进入一个模型。图像进入另一个模型。而音频则需要一个转录步骤。

如果你想把这些数据一起进行搜索,你需要手动将它们拼接在一起。即使这样,你也可能错过跨数据类型的细微联系。

Gemini Embedding 2 现已发布预览版,它将整个流程简化为单次 API 调用。

1、Gemini Embedding 2 的新功能

gemini-embedding-2-preview 是谷歌第一个"原生"多模态嵌入模型。

以前的多模态嵌入方法,如 CLIP,通常将视觉编码器与文本编码器配对,然后使用对比学习对齐它们。由于独立的编码器在流程结束时对齐数据,它们错过了模态在网络的中间层交互时形成的深度跨模态连接。

Gemini Embedding 2 建立在 Gemini 基础模型本身上,从一开始就继承了其多模态理解能力。文本、图像、视频、音频和文档通过共享的 Transformer 架构投影到单个联合嵌入空间中。该模型处理:

  • 文本:最多 8,192 个输入令牌,比之前的 2,048 限制增加了 4 倍
  • 图像:每次请求最多 6 张,格式为 PNG 或 JPEG
  • 视频:最多 120 秒,格式为 MP4 或 MOV
  • 音频:原生支持,无需中间转录
  • 文档:PDF 格式,最多 6 页

真正重要的是你可以在单个请求中发送交错的模态。一张图片及其文本标题。带有语音旁白的视频片段。该模型捕获组合输入中模态之间的关系,生成表示联合含义的单个嵌入。

2、选择维度,保持质量

如果你在生产环境中使用过嵌入,你知道向量质量和基础设施成本之间存在权衡。更高的维度捕捉更多的细微差别,但也会增加更高的内存和存储需求。

Matryoshka 表示学习 (MRL) 通过重构模型在训练期间编码信息的方式解决了这个问题。MRL 不会将语义信号均匀分布在所有 3,072 个维度中(模型的默认输出),而是将最重要的信息强制放入最早的维度中。训练损失同时在多个嵌套子维度(例如 768、1536、3072)上计算,因此模型学习了一个从粗到细的层次结构。

实际结果是你可以截断向量仍然获得强大的性能。只需传入一个 output_dimensionality 参数:

from google import genai
from google.genai import types

client = genai.Client()

result = client.models.embed_content(
    model="gemini-embedding-2-preview",
    contents="What is the meaning of life?",
    config=types.EmbedContentConfig(output_dimensionality=768)
)

需要注意一件事:3072 以下的维度默认情况下不会归一化。在计算相似度之前,你需要自己将它们归一化,否则你会得到失真的距离指标。嵌入文档详细介绍了这一点。

顺便说一下,MRL 还为你提供了一个强大的两阶段检索模式。在第一遍中,你可以使用较小的向量(例如 256 维)从索引中快速拉取前 k 个候选项。在第二遍中,你可以重新将这些候选项与从较慢存储获取的完整 3072 维向量进行重新排序。这为你提供了大型模型的准确性,同时具有微型模型的延迟概况。

3、迁移时的预期

现实情况是,切换嵌入模型意味着重新索引你的数据。来自 gemini-embedding-001text-embedding-005 或任何其他模型的向量位于与来自 gemini-embedding-2-preview 的向量不同的坐标空间中。你不能在同一个索引中混合它们,也不能使用任何距离度量来比较它们。

你还需要注意相似度阈值漂移。每个嵌入模型在潜在空间中分布向量的方式都不同,因此你的 RAG 管道用于过滤的余弦相似度分数会发生变化(例如从 0.6 变为 0.7)。你需要在切换之前,根据你的评估数据通过 A/B 测试重新校准这些阈值。

4、迁移指南

对于拥有现有嵌入基础设施的团队,这是我推荐的方法:

  • 首先创建影子索引。 保持你的生产系统在当前模型上运行。同时,运行一个后台作业,通过 gemini-embedding-2-preview 将你的语料库重新嵌入到一个单独的索引中。为此使用 批量 API。你将以一半的成本获得更高的吞吐量。
  • 在实时流量上进行 A/B 测试。 一旦你的影子索引被填充,在生产查询之间分割旧索引和新索引。Firebase A/B 测试 使这变得简单 —— 使用远程配置参数如 embedding_index 来控制每个用户访问哪个检索端点,让 Firebase 处理流量分割和统计分析。使用检索质量指标和样本子集的人工评估来比较结果。这是你重新校准相似度阈值和混合搜索权重的的地方。
  • 逐步推出。 5% → 20% → 50% → 100%。如果你的检索服务在 GKE 或 Cloud Run 上运行,使用 Google Cloud Deploy 的金丝雀部署 可以使这种流量切换更平滑。只有在新的索引在完整的生产负载下稳定至少一周之后,才弃用旧的索引。

5、对于新项目:从这里开始

如果你从零开始构建某物,决策很简单。使用 gemini-embedding-2-preview。从 768 维开始。如果你的检索基准需要,扩展到 1536 或 3072 维。

对于你的向量存储,带有 pgvector 扩展的 AlloyDB 是一个很好的选择。你可以获得向量搜索以及关系数据,无论输入是文本、图像还是视频片段,嵌入输出都是标准的浮点数组。AlloyDB 的 ScaNN 索引添加了树量化和自动维度减少,复合了 MRL 的存储节省。

在嵌入时使用任务类型。这很容易被忽视,但对质量很重要。将索引时的 task_type 设置为 RETRIEVAL_DOCUMENT,搜索时设置为 RETRIEVAL_QUERY,告诉模型针对这种非对称检索模式优化其输出。有八种任务类型,涵盖分类、聚类、语义相似度等。

今天开始使用 Gemini 嵌入模型 2 的最大优势是你将拥有的多模态基础。即使你的第一阶段只索引文本,你也可以将图像、音频、视频和 PDF 摄入到同一个索引中,而无需重新架构任何东西。这种类型的向前兼容性可以在未来为你节省迁移工作。

6、开始构建

Gemini 嵌入模型 2 介绍笔记本 详细介绍了文本、图像和多模态嵌入,并提供了你可以在 Colab 中运行的代码。Vertex AI 文档 涵盖了 API 限制、定价层级和集成模式。谷歌的公告博客提供了关于新功能及其走向的全景视图。

嵌入并不总是获得与位于其上的生成模型相同的关注,但它们是确定你的 AI 系统是否检索正确信息的基本层。升级该层是你能做的最高杠杆的事情之一。


原文链接:What you need to know about the Gemini Embedding 2 model

汇智网翻译整理,转载请标明出处