pimenov.ai

База знаний

EmbeddingGemma (Gemma 3) — компактная embedding-модель от Google для on-device RAG

Открытая embedding-модель от Google на базе Gemma 3: 308M параметров, 100+ языков, контекст 2048 токенов, 768-мерные векторы с MRL-усечением до 128. Работает на 200 МБ RAM, считает эмбеддинг на CPU за десятки миллисекунд. Когда брать вместо BGE-M3, как поднять локально и во что упереться.

Опубликовано Обновлено

EmbeddingGemma — компактная модель Google DeepMind, которая превращает текст в векторные представления (эмбеддинги) для локального семантического поиска и классификации. В системах генерации с дополненным поиском (RAG) она помогает найти релевантный контекст, который затем передаётся отдельной генеративной модели. Модель рассчитана на телефоны, ноутбуки и другие устройства с ограниченными ресурсами, где важны офлайн-работа и обработка данных без отправки в облако.

📌
Коротко: EmbeddingGemma содержит 308 млн параметров, поддерживает более 100 языков, принимает до 2048 токенов и создаёт векторы размерностью 768, 512, 256 или 128. Квантизованная версия может занимать менее 200 МБ оперативной памяти.

Что представляет собой EmbeddingGemma

Google выпустила EmbeddingGemma 4 сентября 2025 года. Это модель с открытыми весами, построенная на базе Gemma 3 с инициализацией T5Gemma. Она преобразует текст в числовые векторы для поиска, определения семантической близости, классификации и кластеризации.

Модель обучалась на данных более чем на 100 языках. Максимальная длина входа составляет 2048 токенов. Основной сценарий — локальный запуск на телефонах, ноутбуках и настольных компьютерах, хотя официальный пример Sentence Transformers можно выполнять как на центральном процессоре (CPU), так и на графическом процессоре (GPU).

EmbeddingGemma распространяется по Gemma Terms of Use как модель с открытыми весами. Условия Google допускают ответственное коммерческое использование, дообучение и развёртывание в собственных приложениях.

💡
On-device означает, что эмбеддинги создаются непосредственно на устройстве. Приложение может работать без интернета, а исходные документы не требуется отправлять внешнему API.

Подтверждённые характеристики

ПараметрЗначение
РазработчикGoogle DeepMind
Размер модели308 млн параметров
ОсноваGemma 3 с инициализацией T5Gemma
Максимальный контекст2048 токенов
Размерности вектора768, 512, 256 или 128
ЯзыкиБолее 100
ПамятьМенее 200 МБ оперативной памяти при квантизации
Задержка на EdgeTPUОфициальные материалы приводят разные условия: в анонсе Google DeepMind указано менее 15 мс для входа длиной 256 токенов; в обзоре Google AI for Developers указано менее 22 мс без уточнения длины входа
ЛицензированиеGemma Terms of Use, ответственное коммерческое использование разрешено

Характеристики сверены 5 сентября 2026 года по официальному обзору, карточке модели, руководству Google, анонсу Google DeepMind и журналу релизов. Показатели EdgeTPU приведены с условиями из соответствующих источников; напрямую сопоставлять их можно только при одинаковой длине входа и одинаковой среде выполнения. Задержку на центральном процессоре и фактический расход памяти на конкретной библиотеке измеряйте на целевом устройстве: официальные источники не задают универсального значения для любого процессора.

Как работает уменьшение размерности

EmbeddingGemma обучена с помощью метода Matryoshka Representation Learning (MRL). Он позволяет использовать один полный вектор и его укороченные версии. Важная информация концентрируется в начале 768-мерного вектора, поэтому результат можно усечь до 512, 256 или 128 измерений.

После усечения вектор следует повторно нормализовать. Sentence Transformers умеет сделать это через параметры truncate_dim и normalize_embeddings=True.

РазмерностьОбъём 1 млн векторов в float32 без служебных данных индексаПрактический ориентир
768≈3,07 ГБМаксимальное качество модели
512≈2,05 ГБУмеренное сокращение индекса
256≈1,02 ГБУстройства с ограниченной памятью
128≈0,51 ГБМинимальный размер и быстрый первичный поиск

Значения рассчитаны по 4 байта на компонент и округлены в десятичных гигабайтах. Это оценка только для массива float32. Векторная база добавит собственные структуры, метаданные и накладные расходы.

Согласно официальной карточке модели, для исходной версии без квантизации показатель Mean (Task) на мультиязычном бенчмарке MTEB (Multilingual, v2) снижается с 61,15 для 768 измерений до 58,23 для 128. Выбирать размерность лучше по измерениям на собственной выборке запросов, а не по одной общей цифре бенчмарка.

Основные возможности и подходящие задачи

  • Локальный поиск по личным данным. Заметки, сообщения и документы можно индексировать на устройстве без облачного API.
  • Мобильный и настольный RAG. Модель подходит для систем, которые находят фрагменты локальной базы знаний и передают их генеративной модели.
  • Классификация и кластеризация. Для этих задач в конфигурации предусмотрены отдельные инструкции.
  • Семантическая близость и поиск дублей. Подходит для сравнения текстов и обнаружения похожих сообщений.
  • Поиск кода по текстовому запросу. В карточке модели предусмотрен шаблон task: code retrieval | query:; кодовые блоки следует кодировать в режиме документа Retrieval-document, а качество проверять на собственном репозитории.

Ограничения и случаи, когда нужна альтернатива

  • Контекст ограничен 2048 токенами. Длинные документы придётся делить на фрагменты.
  • Уменьшение размерности экономит место, но снижает среднее качество на бенчмарках.
  • Качество зависит от языка, предметной области и данных. Даже поддержка конкретного языка не гарантирует одинаковый результат для всех коллекций на этом языке.
  • Модель возвращает векторные представления текста. Если нужна гибридная выдача, полнотекстовый компонент придётся добавить отдельно.
  • Для крупного серверного контура сравните модель с альтернативами на собственной тестовой выборке, учитывая качество и затраты инфраструктуры.

Локальный запуск через Sentence Transformers

Официальное руководство Google требует принять условия Gemma на Hugging Face и авторизоваться с токеном доступа. Не вставляйте токен непосредственно в код или репозиторий.

Установка из официального примера Google:

pip install -U sentence-transformers git+https://github.com/huggingface/transformers@v4.56.0-Embedding-Gemma-preview

После принятия условий авторизуйтесь через huggingface_hub или заранее настройте токен безопасным способом. Идентификатор модели в официальном руководстве:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("google/embeddinggemma-300M")
⚠️
Зависимости могут измениться: команда установки выше воспроизводит официальное руководство Google, обновлённое 22 апреля 2026 года. Перед боевым развёртыванием проверьте актуальность команды и закрепите протестированные версии пакетов.

Префиксы для запросов и документов

EmbeddingGemma использует специальные инструкции задачи, которые добавляются к исходному тексту. Для RAG запросы и документы кодируются по-разному:

  • запрос: task: search result | query: {content};
  • документ без заголовка: title: none | text: {content};
  • документ с заголовком: title: {title} | text: {content}.

В Sentence Transformers эти шаблоны доступны как prompt_name="Retrieval-query" и prompt_name="Retrieval-document".

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("google/embeddinggemma-300M")

documents = [
    "EmbeddingGemma поддерживает векторы размерностью от 768 до 128.",
    "Контекст модели ограничен 2048 токенами.",
]
query = "Как уменьшить размер эмбеддинга?"

document_embeddings = model.encode(
    documents,
    prompt_name="Retrieval-document",
    truncate_dim=256,
    normalize_embeddings=True,
)

query_embedding = model.encode(
    [query],
    prompt_name="Retrieval-query",
    truncate_dim=256,
    normalize_embeddings=True,
)

scores = model.similarity(query_embedding, document_embeddings)
print(document_embeddings.shape)
print(scores)

Проверка результата

После запуска примера проверьте два наблюдаемых признака:

  1. document_embeddings.shape должен быть равен (2, 256).
  2. scores должен иметь форму (1, 2) и содержать две оценки близости, по одной для каждого документа.

Пример сопоставлен с официальным руководством Google; фактический запуск в рамках подготовки не выполнялся. Конкретные значения similarity зависят от версии библиотек, оборудования и числовой точности. Для проверки retrieval подготовьте небольшой набор реальных запросов с заранее известными релевантными фрагментами и измерьте recall@k: какая доля известных релевантных фрагментов попала в первые k позиций.

Полезные сценарии

Офлайн-поиск по заметкам

Задача: находить релевантную заметку или сообщение без отправки текста во внешний сервис.

Исходные данные: короткие заметки, сообщения или документы пользователя. Разделите их на самостоятельные фрагменты, создайте векторы документов и сохраните их в локальном индексе. При поиске сформируйте query-вектор с Retrieval-query и получите ближайшие документы.

Наблюдаемый результат: тестовый запрос возвращает заранее выбранную релевантную заметку в первых позициях.

Ограничение: после смены модели, инструкции или размерности потребуется повторно создать индекс.

RAG по локальной базе знаний

Задача: находить фрагменты локальных документов и использовать их как контекст для ответа.

Условие запуска: документы разделены на фрагменты в пределах лимита 2048 токенов вместе с добавленной инструкцией. Создайте эмбеддинги документов с Retrieval-document, пользовательского запроса — с Retrieval-query, затем передайте найденные фрагменты генеративной модели.

Наблюдаемый результат: retrieval-тест возвращает фрагмент с ответом, а итоговый ответ использует сведения из найденного контекста.

Ограничение: перед боевым использованием отдельно измерьте качество retrieval и задержку на целевом устройстве.

Классификация без дообучения

Задача: распределять входящие сообщения по заранее заданным категориям.

Исходные данные: названия или короткие описания категорий и набор входящих текстов. Создайте векторы категорий и сообщений с prompt_name="Classification", затем выберите категорию с максимальной близостью.

Наблюдаемый результат: контрольные примеры попадают в ожидаемые категории.

Ограничение: пороги и качество нельзя переносить между проектами без собственной размеченной выборки.

Типичные ошибки

СимптомВероятная причинаЧто проверить
Низкое качество поискаТексты закодированы без специализированной инструкции задачиИспользовать Retrieval-query для запросов и Retrieval-document для документов
Результаты после усечения хуже ожидаемогоВекторы не нормализованы повторноПередать normalize_embeddings=True вместе с truncate_dim
Конец длинного документа теряетсяТекст превышает контекст 2048 токеновРазделить документ на осмысленные фрагменты и проверить длину токенизатором
Существующий индекс перестал работатьИзменились модель, размерность или инструкцияНе смешивать несовместимые векторы и пересоздать индекс
Модель не загружаетсяНе принята лицензия или отсутствует доступ Hugging FaceПринять Gemma Terms of Use и проверить авторизацию

Официальные источники

Следующий шаг

BAAI/bge-m3 — мультиязычная embedding-модель для self-hosted RAG

Связанные материалы

Если выбираете локальную модель для эмбеддингов или проектируете RAG для устройства с ограниченной памятью, заранее сравните качество, размер индекса и задержку на собственных данных.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov