【免费下载链接】embeddinggemma-2-bf16
embeddinggemma-2-bf16 是 Google EmbeddingGemma 2 多模态嵌入模型(Embedding Model)的 MLX 转换版,全部权重以 BF16 精度存储,可将文本、图片、音频、视频统一编码为 768 维归一化向量。本指南带你从张量清单出发,彻底读懂它的三塔架构、768 维向量流水线与转换精度验证。
这个嵌入模型到底能做什么?
一句话:把任何内容变成一个 768 维的数字向量,内容越相似,向量越接近(默认用余弦相似度度量)。
它的核心能力包括:
- 📄文本嵌入:多语言查询、文档编码,支持 Matryoshka 截断(可只用 128/256/512/768 维)
- 🖼️图片、🎵 音频、🎬 视频嵌入:三塔编码器全部保留
- ⚡MLX 原生格式:在 Apple Silicon 上高效运行,BF16 精度,权重仅约1.489 GB
模型架构声明为EmbeddingGemma2Model,详见 config.json。
仓库文件速览:一个权重文件装下全部 1376 个张量
| 文件 | 作用 |
|---|---|
| model.safetensors | 唯一权重文件,包含全部 1376 个张量 |
| model.safetensors.index.json | 张量清单与归属索引,元数据显示总大小 1,488,743,984 字节 |
| config.json | 三塔结构超参数(层数、注意力模式等) |
| modules.json | 定义 3 步编码流水线 |
| 1_Pooling/config.json | 平均池化配置,输出 768 维 |
| 2_Normalize/config.json | 向量归一化配置 |
| config_sentence_transformers.json | 各任务的 query / document 前缀模板 |
| validation.json | 转换校验记录(1376 张量、BF16、M3 Ultra 实测) |
| README.md | 官方使用说明与精度对照表 |
如果想在本地复现,可拉取源码:
git clone https://gitcode.com/hf_mirrors/mlx-community/embeddinggemma-2-bf16三塔架构全解:1376 个张量分别住在哪里?
打开 model.safetensors.index.json,按张量前缀分组后得到一张清晰的"人口分布表":
| 模块 | 张量数 | 职责 |
|---|---|---|
audio_tower音频塔 | 751 | 12 层,把 128 维 Mel 频谱编码为语义特征 |
language_model文本塔 | 413 | 24 层,负责最终语义融合与向量生成 |
vision_tower视觉塔 | 210 | 16 层,把 16×16 图像 patch 编码为 280 个软 token |
embed_audio/embed_vision | 1 + 1 | 两把"桥",把音/画特征投影进文本空间 |
| 合计 | 1376 | 与 validation.json 记录的tensor_count完全一致 |
文本塔:最省心的 24 层骨干
language_model是真正"说话"的部分:隐层 512、词表 262,144、上下文长度可达 262,144。它在 config.json 中采用滑动窗口(sliding window 512)为主、全注意力为辅的混合设计:
- 20 层使用局部滑动注意力(
rope_theta10,000),便宜且省显存 - 第 5 / 11 / 17 / 23 层升级为
full_attention,且单独放宽head_dim至 512、KV 头压缩到 1 个(见 config.json 的per_layer_config)
每层恰好 17 个张量(注意力 6 + MLP 3 + PLE 桥接块 3 + 归一化等 5),24 层共 408 个,加上词表、投影和顶层规范层,正好 413 个。
音频塔:751 个张量里藏着"剪枝痕迹"
audio_tower张量最多(751 个),但它只有 12 层(1024 隐层),为什么比文本塔还"胖"?因为它的每个前馈层都带一组input_min / input_max / output_min / output_max缩放张量(use_clipped_linears),用于激活值裁剪——一个 12 层的音频编码器由此膨胀到 744 个层内张量,外加 5 个下采样卷积与 2 个输出投影。
视觉塔:把一张图压成 280 个 token
vision_tower(210 张量)使用 patch 16、隐层 768 的 16 层编码器,配 3×3 池化核;processor_config.json 规定每张图最多产出280 个软 token,与音频的 280 个 token/秒窗口对齐——这是三塔能"对齐到同一语义空间"的关键约定。
两座"桥":embed_audio 与 embed_vision
清单里最小的两名成员——embed_audio.embedding_projection.weight和embed_vision.embedding_projection.weight——是跨模态的翻译官:各自一个投影矩阵,把音频/视觉特征线性映射进文本塔的 512 维空间。没有它们,三塔就只是三座孤岛。
从原始输入到 768 维向量:三步流水线
真正的编码流程由 modules.json 定义,共三步:
- Transformer 前向(idx 0):对应 sentence_bert_config.json 中 text/image/audio/video 五种模态,统一取
last_hidden_state - 平均池化(idx 1,
1_Pooling):pooling_mode: mean,且include_prompt: true——任务前缀(如task: search result | query:,定义于 config_sentence_transformers.json)也参与池化 - 归一化(idx 2,
2_Normalize):输出单位球面向量,直接支持余弦相似度 = 点积
💡 查询和文档要使用不同前缀(
task: search result | query:vstitle: none | text:),这是检索效果的关键细节。
精度如何?BF16 转换的验证数据
validation.json 记录了在 Apple M3 Ultra、MLX 0.32.3 上的转换校验:1376 个张量全部为 BF16,与 PyTorch FP32 原模型对比,各模态余弦相似度最低值均在 0.9999 以上:
| 输入 | 最低余弦相似度(vs FP32) | 最大绝对误差 |
|---|---|---|
| audio | 0.999947 | 0.001258 |
| image | 0.999954 | 0.001135 |
| text | 0.999937 | 0.001468 |
| text_image | 0.999905 | 0.001864 |
| video | 0.999900 | 0.001688 |
结论:BF16 精度对嵌入结果的影响可忽略。注意一个硬性要求——切勿把该模型转成 float16(README.md 明确警告),保持 BF16 即可。
快速上手与要点清单
文本嵌入最小路径:安装 MLX-VLM 与mlx>=0.32.3、transformers>=5.18.0,用AutoTokenizer+load_embedding_model加载,查询加task:前缀、文档加title: none | text:前缀,得到 768 维向量后直接做点积排序;需要更省空间时可截断到 256 维并重新归一化(Matryoshka)。完整示例见 README.md。
核心要点回顾:
- 📦 1376 个 BF16 张量 ≈ 1.489 GB,单文件 model.safetensors 即全部权重
- 🏛️ 三塔结构:音频塔(751 张量)+ 文本塔(413)+ 视觉塔(210)+ 2 个投影桥
- 📏 输出 768 维归一化向量,支持 128/256/512/768 Matryoshka 截断
- ✅ 转换与 FP32 原版余弦相似度 ≥ 0.9999,可放心用于检索、聚类等特征提取任务
【免费下载链接】embeddinggemma-2-bf16
相关推荐
解剖embeddinggemma-2-mxfp4内部架构:文本+视觉+音频三塔如何融合成单一嵌入
解剖embeddinggemma 2 mxfp4内部架构:文本+视觉+音频三塔如何融合成单一嵌入 embeddinggemma 2 mxfp4 是 Google
Muse-Glimmer-30B-bf16文件结构深度解析:275个safetensors分片与bf16精度全拆解
Muse Glimmer 30B bf16文件结构深度解析:275个safetensors分片与bf16精度全拆解 Muse Glimmer 30B bf16
一个向量空间装下五种模态:EmbeddingGemma 2 的统一嵌入架构深度拆解
一个向量空间装下五种模态:EmbeddingGemma 2 的统一嵌入架构深度拆解 2026 年 10 月 6 日,Google DeepMind 正式开源 E
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考