Назад к блогу

EmbeddingGemma 2: мультимодальные эмбеддинги на устройстве

EmbeddingGemma 2: мультимодальные эмбеддинги на устройстве

Google DeepMind выпустила открытую модель эмбеддингов, которая индексирует не только текст, но и код, изображения, аудио и видео, полностью обрабатывая данные на устройстве пользователя. Для разработчиков это означает возможность строить приватные поисковые системы и RAG-пайплайны без обращения к облачным API. Особого внимания заслуживает гибкая настройка размерности вектора, позволяющая торговать качеством ради экономии памяти и дискового пространства.

6 октября 2026 года Google DeepMind представила EmbeddingGemma 2 — открытую модель эмбеддингов. Она ищет не только по тексту, но и по коду, изображениям, аудио и видео, а считает всё локально — без обращения к облаку. Веса выложены на Hugging Face и Kaggle под лицензией Apache 2.0.

Что именно изменилось

Полная модель содержит 740 млн параметров и собрана модульно. Текстовый бэкбон — 270 млн параметров, визуальный энкодер — 170 млн, аудиоэнкодер — 300 млн. Для чисто текстовых задач Google рекомендует загружать только 270-миллионную часть, а кодировщики зрения и звука подключать выборочно.

Архитектура построена на технологиях Gemma 4: 24 слоя, hidden size 2048, окно контекста 8192 токена. На выходе — вектор размерностью 768. В одном контексте можно смешивать текст, изображения, видео и аудио. Контекстное окно вмещает до 5,5 минуты аудио, 29 изображений или 58 видеокадров.

Размерность вектора настраивается через Matryoshka Representation Learning (MRL): 768, 512, 256 или 128 измерений. Полный вектор даёт максимальное качество, усечённый — скорость и меньший объём хранилища.

Как запустить

Через Sentence Transformers модель ставится командой pip install -U sentence-transformers, а затем создаётся вызовом SentenceTransformer("google/embeddinggemma-300m"), который скачивает веса с Hugging Face Hub. Векторы запроса и документов получаются разными методами — encode_query для запроса и encode_document для документов, — а близость считается вызовом model.similarity.

Для Ollama или llama.cpp нужны веса в формате GGUF. Готовый чекпоинт — embeddinggemma-2-UD-Q4_K_XL.gguf из репозитория unsloth/embeddinggemma-2-GGUF. Его скачивают в папку models, после чего создают модель в Ollama из Modelfile.

Предыстория

Первая EmbeddingGemma — многоязычная модель текстовых эмбеддингов на 308M параметров на основе Gemma 3, рассчитанная на телефоны, ноутбуки и планшеты. Она выдаёт числовые представления текста для поиска, семантического сходства, классификации и кластеризации, обучалась на 100+ языках и использовала тот же токенизатор, что Gemma 3n, а QAT удерживало потребление RAM ниже 200 МБ.

Отличия второй версии: нативная мультимодальность вместо только текста, базовый размер уменьшен с 300M до 270M параметров, контекст вырос с 2048 до 8192 токенов. Схема MRL с усечением до 128/256/512/768 измерений сохранилась.

Почему это сделали

Причина — приватность и автономность. Эмбеддинги считаются прямо на устройстве, поэтому данные не уходят в облако, а поиск работает без интернета. Практический сценарий — приватный RAG. на устройстве: векторный поиск EmbeddingGemma 2 сочетается с локальными моделями рассуждения Gemma 4 и даёт офлайн-ответы по документам. Другой пример — поиск по галерее естественным текстом без загрузки снимков на серверы.

Google позиционирует модель для индексации локальных репозиториев и retrieval внутри coding-ассистентов, а также для локального поиска по тексту, коду и медиа.

Что это меняет на практике

Веса рассчитаны на Sentence Transformers с бэкбоном Gemma 3 из Hugging Face Transformers. При переносе в существующий пайплайн главное — тип активаций: EmbeddingGemma не поддерживает float16. Нужно использовать float32 или bfloat16 в зависимости от железа. Если это упустить, модель может выдавать NaN или молча деградировать, не сообщая об ошибке.

Второй момент — размерность вектора. Усечение до 256d умеренно снижает качество, зато индекс становится втрое меньше. На 128d экономия шестикратная, но мультимодальное качество проседает заметно сильнее: MMEB v2 падает с 59,01 до 45,65. Для эксплуатации 256d выглядит разумнее максимального сжатия, но конкретный порог придётся проверять на своём датасете.

Замеры качества

Для MTEB (Code, v1) по размерностям эмбеддингов: 768d — 68.76, 512d — 68.48, 256d — 66.74, 128d — 62.96 (Mean (Task) и Mean (TaskType) совпадают).

Для QAT-моделей после квантизации на MTEB (Code, v1): Q4_0 (768d) — 67.99, Q8_0 (768d) — 68.70, Mixed Precision (768d) — 68.03. На MTEB (Multilingual, v2): Q4_0 — 60.62 и 53.61, Q8_0 — 60.93 и 53.95, Mixed Precision — 60.69 и 53.82. На MTEB (English, v2): Q4_0 — 69.31 и 64.65, Q8_0 — 69.49 и 64.84, Mixed Precision — 69.32 и 64.82.

Mixed Precision означает per-channel-квантизацию: int4 для embeddings, feedforward и projection слоёв, int8 для attention (e4_a8_f4_p4).

Ограничения и открытые вопросы

Авторы признают риск злонамеренного использования эмбеддингов и называют меры противодействия: технические ограничения и обучение разработчиков и конечных пользователей, а также образовательные ресурсы и механизмы жалоб. Отдельно признаётся риск нарушений приватности: модели обучались на данных, отфильтрованных для удаления определённой личной и иной чувствительной информации, а разработчикам рекомендуется применять privacy-preserving техники.

Технический лимит — отсутствие поддержки float16 в активациях. Ещё одно ограничение — деградация качества при сильном усечении размерности через MRL.

По памяти ориентиры такие: после квантизации на Pixel 11 Pro около 191 МБ активной RAM для text-only версии и примерно 567 МБ для полной мультимодальной конфигурации. Это показатель конкретного оптимизированного устройства; в локальном GGUF-стеке фактический объём может быть выше — один из ранних разборов оценивал мультимодальный GGUF примерно в 730 МБ до учёта runtime-расходов.

В планах перечислены WebGPU Browser Engine, Android MediaPipe Native Task, Qdrant Vector Database Connector, Live Stream Video Segmenter и Multi-Language Speech Aligner.

Источники

Похожее