EmbeddingGemma 2:用同一套向量检索文字、图片和音频
想用一句话找图片、录音或视频片段时,关键不是让模型直接回答,而是把查询和素材变成可比较的向量。EmbeddingGemma 2做的就是这件事:它把文本、代码、图片、音频、视频及其组合映射到同一个向量空间,可用于跨模态检索、分类和聚类。
Google在10月6日发布了这个开放权重模型,10月27日又公开了技术研究。完整模型约7.4亿参数:文本部分约2.7亿,视觉编码器约1.7亿,音频编码器约3亿。不需要某种模态时,文档支持加载时关闭对应编码器;例如只做文本检索时可以不加载视觉和音频部分。这里的参数量是模型结构信息,不等于实际运行时所需内存,后者还取决于精度、上下文、框架和硬件。
原生输出是768维,也支持截短到512、256或128维。拿纯向量存储举例:一条768维float32向量占3072字节,256维占1024字节;100万条分别约3.072GB和1.024GB。这只是维度乘以4字节的算术,不包含索引结构、元数据或数据库开销。缩短维度会影响检索质量,视觉、音频和文本任务的损失也可能不同,应该用自己的数据衡量,而不是默认缩到最小。
迁移时还有两处容易踩坑:查询向量和库里的向量必须使用相同维度,截短后按文档进行归一化;旧模型生成的向量即使维度碰巧一样,也不能假定和新模型处在同一个语义空间,通常需要重新生成并建立索引。官方示例对文本查询与被检索文档分别使用不同的任务提示,混用前也应核对调用方式。
模型卡列出的权重许可为Apache 2.0,并称支持100多种语言;这不代表每种语言、口音或垂直领域效果相同。它适合先把可能相关的素材找出来,搜索结果仍需检查,不能把向量相似度当成事实正确或内容完全一致的证明。上述存储数字已按float32计算,未运行模型或进行性能实测。