JOTO
Contact us
← AI 智库
多模态模型

谷歌EG 2模型+Milvus实测:最适合低成本本地部署的多模态embedding模型来了

2026 年 10 月 14 日

Google开源的EmbeddingGemma 2(EG2)以740M参数规模支持文本、图片、视频、音频统一编码,可按模态加载编码器并裁剪向量维度至256维或128维。本文通过Milvus实测其与Nomic、qwen3.7-text-embedding-flash、Qwen3-VL-Embedding的横向对比,在Flickr8k和ESC-50数据集上验证其文本/图文/音频检索能力及256维向量的精度-存储平衡点。

EG2核心特性:小模型覆盖四模态与灵活资源调度

传统多模态检索往往需维护多套embedding模型:文本用一套,图片用一套视觉模型,音频再单独接一条链路。想实现用文字搜图片或用声音搜素材,还需组合不同模型,再将各路检索结果合并排序。

Google最近开源的EmbeddingGemma 2(以下简称EG2)提供了一个更便捷的方案:740M参数,可以把文本、图片、视频和音频编码到同一个向量空间。

相比此前已有的统一多模态模型如ImageBind,EG2最大的特点在于它的模型规模和资源配置:完整模型只有740M参数,编码器可以按模态加载,默认的768维向量还可以裁剪到256维甚至128维。

EG2支持文本、图片、视频、音频统一编码示意图
EG2支持文本、图片、视频、音频统一编码示意图

EG2采用Apache 2.0协议,默认输出768维向量。它可以单独编码文本、图片、视频和音频,也可以接收交错包含多种模态的输入,生成一条统一的embedding。例如,一张狗的照片、一段狗叫音频,以及“一只狗正在叫”的文字描述,都可以分别转换为向量,并在同一个空间内计算相似度。

在Milvus中,这些数据可以共用一个collection和一个FLOAT_VECTOR字段,再通过modality字段区分数据类型。

按需加载编码器

EG2的视觉和音频编码器可以按需加载,对应的模型规模如下:

EG2各模态编码器参数规模对比图
EG2各模态编码器参数规模对比图

此外,还可以素材入库时使用完整的多模态模型,面向文字搜索的线上查询服务则可以只加载270M的文本部分。270M配置相比完整740M模型,参数数量减少约63.5%。

向量维度可裁剪

EG2支持Matryoshka Representation Learning(MRL),可以使用768、512、256或128维向量。向量维度越低,每条数据的存储量越小。对于拥有数百万甚至数千万条素材的数据库,维度变化会直接影响向量存储规模。

Google官方模型卡给出了不同维度的表现:

EG2不同向量维度下的官方评测得分
EG2不同向量维度下的官方评测得分

256维的综合得分与768维相对接近,128维的多模态指标则出现了更明显的下降。因此,本轮实验重点比较768维和256维,观察实际检索任务中的精度与存储取舍。

实验设计:三类模型对照与多模态评测方法

为了评价EG2在小模型规模下的竞争力,我们选取了三款模型作为对照。

EG2与三类对比模型的定位关系图
EG2与三类对比模型的定位关系图

EG2的对手有两类。第一类是Nomic和qwen3.7-text-embedding-flash这样的文本模型。它们适合文本到文本的检索,但不能直接接收图片或音频。

第二类是Qwen3-VL-Embedding这样的多模态模型。它可以处理文本和图片,图文效果更强,但本轮使用的接口不接收音频。

其中,Qwen3-VL-Embedding-2B的模型规模约为EG2的2.7倍,也支持多模态统一表示。通过这组对比,可以观察EG2在更小体量下的文本和图文检索表现。

本轮使用Flickr8k和ESC-50的部分数据进行测试。

Flickr8k与ESC-50数据集样本示意
Flickr8k与ESC-50数据集样本示意

实验环境使用Milvus 2.6.23、FLAT索引和COSINE距离。每个模型使用独立collection,按照对应的向量维度建立字段。图文任务采用精确配对关系计算Recall@K,音频任务采用类别关系计算Hit@K。

例如,图文任务要求模型找到与查询对应的图片;音频任务中,查询“狗叫”,前K个结果只要包含属于狗叫类别的音频,即视为命中。这些样本主要用于观察模型在具体检索任务中的表现和工程取舍。

EG2 + Milvus 实战接入教程

先看EG2如何接入Milvus。本次使用本地Ollama调用embeddinggemma-2:740m,通过PyMilvus连接Milvus 2.6.23。

接入演示中,文本、图片和音频都放进同一个collection。每条数据保存模态、素材标识和向量。

schema = MilvusClient.create_schema(auto_id=True)
schema.add_field(
    field_name="id",
    datatype=DataType.INT64,
    is_primary=True,
)
schema.add_field(
    field_name="modality",
    datatype=DataType.VARCHAR,
    max_length=16,
)
schema.add_field(
    field_name="ref",
    datatype=DataType.VARCHAR,
    max_length=256,
)
schema.add_field(
    field_name="vector",
    datatype=DataType.FLOAT_VECTOR,
    dim=768,
)

三种模态共用vector字段:

rows = [
    {
        "modality": "text",
        "ref": "dog",
        "vector": embed("一只狗在叫"),
    },
    {
        "modality": "image",
        "ref": "dog",
        "vector": embed({
            "image": image_base64,
        }),
    },
    {
        "modality": "audio",
        "ref": "dog",
        "vector": embed({
            "audio": audio_base64,
        }),
    },
]

用文字搜图片时,加上模态过滤:

hits = client.search(
    collection_name="eg2_mm",
    data=[embed("狗叫")],
    filter='modality == "image"',
    limit=5,
    output_fields=["ref", "modality"],
    consistency_level="Strong",
)

需要搜索音频时,将过滤条件改为:

filter='modality == "audio"'

去掉modality过滤条件,就可以让文本、图片和音频一起参与搜索和排序。这意味着,应用可以用同一个collection支持多种搜索方式。用户可以输入文字,再根据需要获取图片、声音或混合结果。

将向量裁剪到256维

EG2支持MRL,因此可以直接截取768维向量的前256维,再做L2归一化。

import numpy as np

def truncate_256(vector):
    v = np.asarray(
        vector,
        dtype=np.float32,
    )[:256]
    norm = np.linalg.norm(v)
    if norm == 0:
        raise ValueError("Zero-length vector")
    return (v / norm).tolist()

调用方式:

full_vector = embed("一只狗在叫")
vector_256 = truncate_256(full_vector)

在Milvus中使用256维向量时,需要创建维度为dim=256的目标向量字段,并确保查询与入库向量使用相同维度。如果已经保存了完整的768维向量,可以直接进行截取和归一化,无需重新编码原始素材。

至此,文本、图片和音频的统一入库、跨模态检索,以及向量裁剪都可以在Milvus中实现。

横向评测结果:精度、模态覆盖与存储效率权衡

文本检索:EG2高于两款文本基线

文本检索Recall@K对比结果
文本检索Recall@K对比结果

我们使用Flickr8k图片描述的改写与配对关系,测试模型能否通过一条描述找到对应文本。最终EG2高于Nomic和qwen3.7-text-embedding-flash,略低于Qwen-VL。

也就是说,EG2在覆盖视觉和音频能力的同时,仍然保持了良好的短文本语义匹配效果。不过,这组任务主要使用Flickr8k的caption,文本较短,语义相对具体。对于代码搜索、长文档RAG等任务,还需要使用对应的数据集判断模型效果。

图文检索:EG2距离Qwen-VL仍有一段距离

图文检索Recall@K对比结果
图文检索Recall@K对比结果

两项图文任务中,EG2都略低于Qwen-VL,但差距不大。但两者的模型规模存在明显差异:

  • EG2完整模型:740M参数
  • Qwen3-VL-Embedding-2B:约2B参数

EG2的参数量约为Qwen-VL的37%,却在本轮图文任务中取得了相对接近的检索成绩。

音频检索:链路可行但排序稳定性待优化

音频部分只测试EG2。因为云端两款对照模型本轮接口不接收音频,无法做同条件比较。

音频Hit@K结果
音频Hit@K结果

这里使用Hit@K,表示前K个结果中是否至少命中一个同类别样本。结果来说,音频链路可以跑通,但排序不稳定。此前的接入演示中,中文查询“狗叫”时,猫叫音频以0.860排在第一,狗叫音频为0.853;换成英文a dog barking后,狗叫才回到第一。

中英文查询下狗叫音频相似度对比
中英文查询下狗叫音频相似度对比

这组结果说明,EG2能够直接建立文字与声音的语义关联,但实际排序质量会受到查询表达和模型语义对齐能力的影响。另外,本轮演示使用的是原始文本查询,没有加入Google推荐的检索任务前缀。任务前缀也是后续优化音频检索效果时值得考虑的因素。

768维和256维对比:存储减66.7%,精度损失可控

EG2支持MRL截维。本次直接截取768维向量的前256维,再做L2归一化,没有重新调用模型。

768维与256维向量存储字节数对比
768维与256维向量存储字节数对比

float32下,768维向量需要3,072字节,256维向量需要1,024字节,原始向量存储减少66.7%。

Recall@1在768维与256维下的对比
Recall@1在768维与256维下的对比

按一百万条向量计算,原始向量数据大约从3.072GB降到1.024GB(这个数字不包含Milvus索引、标量字段、副本和其他运行开销),而这组数据上的Recall@1下降不到2个百分点。

从官方数据看,EG2的MMEB v2总分在768维时为59.01,256维时为56.24,下降2.77分。更低的128维则降至45.65。因此,实际落地中,256维是一个值得关注的折中配置。

适用场景总结

如果只做文本检索,纯文本模型会更直接;如果只追求图文排序的最高分,Qwen-VL在本轮测试中更高。EG2更适合需要本地运行、同时处理多种模态,或者对向量存储容量敏感的场景。

谷歌EG 2模型+Milvus实测:最适合低成本本地部署的多模态embedding模型来了 配图 12
谷歌EG 2模型+Milvus实测:最适合低成本本地部署的多模态embedding模型来了 配图 13
谷歌EG 2模型+Milvus实测:最适合低成本本地部署的多模态embedding模型来了 配图 14

JOTO 企业落地观察

  • EG2的按模态加载机制为企业AI部署提供了明确的弹性路径:可先上线轻量文本服务,再按业务节奏逐步扩展图像/音频能力,避免一次性资源投入过载。
  • EG2当前音频检索排序对查询语言敏感,提示企业在构建多模态RAG时需将任务前缀工程纳入标准流程,而非依赖模型默认行为;这也凸显FDE驻场共创中对提示词策略与评估闭环的必要性。
  • EG2未开放训练接口且依赖Ollama等运行时框架,意味着企业若需微调适配自有数据分布,需额外构建蒸馏或适配层,这对AI安全治理中模型可解释性与变更审计提出新要求。

立即咨询 JOTO

JOTO 提供覆盖企业智能体规划与搭建、AI 平台私有化部署、RAG 知识工程、AI 安全治理、FDE 驻场共创及持续运营优化的全周期 AI 落地服务,帮助企业把验证中的 AI 能力转化为安全、可控、可持续迭代的生产力。 联系 JOTO 获取 AI 落地咨询

想把这些做法用到你的业务里?

留下你的场景和痛点,我们帮你判断从哪一步开始。

联系我们
Contact Us

Start your enterprise AI rollout

Tell us your industry, team, and current pain points. We'll get back to you within one business day to help you decide what to tackle first, what data to prepare, and which platform fits.

WeChat
Scan to add us for a 1:1 chat
JOTO WeChat consultation QR code

Tell us what you need

Once we receive your details, we'll be in touch within one business day.