---
title: embeddinggemma-2-bf16
canonical_url: "https://www.modelscope.cn/models/mlx-community/embeddinggemma-2-bf16"
md_url: "https://www.modelscope.cn/models/mlx-community/embeddinggemma-2-bf16.md"
repository: mlx-community/embeddinggemma-2-bf16
last_updated: 2026-10-06
license: apache-2.0
pipeline_tag: feature-extraction
tasks:
  - feature-extraction
model_type:
  - embedding_gemma2
architectures:
  - EmbeddingGemma2Model
base_model:
  - google/embeddinggemma-2
base_model_relation: finetune
library_name:
  - transformer
  - mlx
  - safetensors
  - pytorch
frameworks:
  - pytorch
language:
  - multilingual
downloads: 142
stars: 0
tags:
  - mlx
  - mlx-vlm
  - embedding
  - feature-extraction
  - sentence-similarity
  - multimodal
  - image-feature-extraction
  - audio-feature-extraction
  - video-feature-extraction
---

# embeddinggemma-2-bf16

> embeddinggemma-2-bf16 - mlx-community 在 ModelScope 开源的模型。mlx-community/embeddinggemma-2-bf16

mlx-community/embeddinggemma-2-bf16 是 ModelScope 魔搭社区上的feature-extraction模型，采用 apache-2.0 许可，基于 google/embeddinggemma-2 构建。

- **Repository**: mlx-community/embeddinggemma-2-bf16
- **License**: apache-2.0
- **Tasks**: feature-extraction
- **Base model**: google/embeddinggemma-2
- **Tags**: mlx, mlx-vlm, embedding, feature-extraction, sentence-similarity, multimodal, image-feature-extraction, audio-feature-extraction, video-feature-extraction
- **Downloads**: 142
- **Stars**: 0
- **Last updated**: 2026-10-06

Source: https://www.modelscope.cn/models/mlx-community/embeddinggemma-2-bf16

---

# mlx-community/embeddinggemma-2-bf16

MLX conversion of [Google EmbeddingGemma 2](https://huggingface.co/google/embeddinggemma-2) in **BF16** format, retaining text, image, audio, and video encoders. The model produces normalized 768-dimensional embeddings. See the [original model card](https://huggingface.co/google/embeddinggemma-2) for intended use, training information, evaluation, and limitations.

All floating-point model weights are stored in BF16.

Weight storage: 1.489 GB (decimal). Source revision: [`914f7f89142e33e77833254d9c9b90c3cef7303b`](https://huggingface.co/google/embeddinggemma-2/tree/914f7f89142e33e77833254d9c9b90c3cef7303b). Converted with [MLX-VLM revision `3d87e884`](https://github.com/Blaizzy/mlx-vlm/tree/3d87e88402f307efbf68e568971aa887ee7d9ed0), from branch `pc/embeddinggemma-2`, and MLX 0.32.3.

## Text embeddings

Install the implementation revision that includes EmbeddingGemma 2 support:

```sh
pip install "git+https://github.com/Blaizzy/mlx-vlm.git@3d87e88402f307efbf68e568971aa887ee7d9ed0"
pip install -U "mlx>=0.32.3" "transformers>=5.18.0"
```

```python
import mlx.core as mx
from transformers import AutoTokenizer
from mlx_vlm.embedding_loader import load_embedding_model
from mlx_vlm.utils import get_model_path

path = get_model_path("mlx-community/embeddinggemma-2-bf16")
model = load_embedding_model(path)
tokenizer = AutoTokenizer.from_pretrained(path)
inputs = tokenizer([
    "task: search result | query: Which planet is known as the Red Planet?",
    "title: none | text: Mars is known as the Red Planet.",
    "title: none | text: Venus is often called Earth's twin.",
], padding=True, return_tensors="np")
embeddings = model(**{key: mx.array(value) for key, value in inputs.items()}).text_embeds
print(embeddings[:1] @ embeddings[1:].T)

# Optional Matryoshka truncation: use 128, 256, 512, or 768 dimensions.
embeddings = embeddings[:, :256]
embeddings /= mx.linalg.norm(embeddings, axis=-1, keepdims=True)
```

Apply the appropriate task prefixes from `config_sentence_transformers.json`. Queries and documents must use the same embedding dimension. Keep non-quantized weights and activations in BF16; do not cast this model to float16.

## Multimodal preprocessing

All modality weights and processor configuration files are included. Image, audio, and video preprocessing requires a Transformers build that exposes `EmbeddingGemma2Processor`. Validation used the model's supplied upstream Transformers 5.18.0.dev0 build; stock PyPI Transformers 5.18.0 does not yet expose this processor. The text-only example above uses `AutoTokenizer` and does not require that processor. With a compatible processor build:

```python
from mlx_vlm import load

model, processor = load("mlx-community/embeddinggemma-2-bf16")
inputs = processor(images=[image], return_tensors="np")  # image is a PIL image
embedding = model(**{key: mx.array(value) for key, value in inputs.items()}).text_embeds
```

## Conversion checks

All checked outputs were finite, unit-normalized, and had 768 dimensions. The text retrieval smoke test ranked the Mars passage above Venus. Checks cover six multilingual text inputs and synthetic image, audio, two-frame video, and text+image inputs; they are numerical smoke checks, not MTEB or a retrieval-quality benchmark. Cosine and absolute errors compare against the original checkpoint running in PyTorch FP32.

| Input | Minimum cosine vs FP32 | Maximum absolute error |
| --- | ---: | ---: |
| 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 conversion and reload were bit-identical to the original MLX BF16 checkpoint on all checked inputs.

## Reproduce conversion

Using the implementation and compatible processor environment described above:

```sh
python -m mlx_vlm convert --hf-path google/embeddinggemma-2 --revision 914f7f89142e33e77833254d9c9b90c3cef7303b --mlx-path embeddinggemma-2-bf16 --dtype bfloat16
```

The source model declares Apache-2.0 licensing. This conversion preserves that license and attribution to Google.
