Google released EmbeddingGemma 2 under Apache 2.0, and the headline change is architectural. The model represents text, code, images, video and audio in one unified 768-dimension embedding space.
That means a query can retrieve a document, a screenshot, a recording or a code file without separate, incompatible embedding stores. Google says embeddings from different modalities occupy the same space and can be compared directly on semantic similarity.
Shipped in pieces so it fits a phone
The model is built on Gemma 4 and designed for consumer hardware. Developers load only the encoders their application needs, scaling from 270M parameters for text and code to 740M for full multimodal support.
Google claims it significantly outperforms the first EmbeddingGemma on code search and technical retrieval, which matters for local codebase indexing and agentic code search.
Matryoshka Representation Learning lets embeddings be truncated into shorter unit-length vectors. Storing a million 768-dimension vectors at bfloat16 precision takes about 1.5 GB, while truncating to 128 dimensions needs roughly 250 MB.
Practitioners flagged caveats. One Reddit commenter noted the gain is largest for cross-modal work and more modest for text alone. Another warned that task prefixes are not optional, and that truncating before L2 normalisation leaves vectors off-norm, a mistake that quietly hurts recall.
Truncate first, then normalise, or the storage savings arrive alongside a retrieval regression.