База знаний
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
Google выпустила EmbeddingGemma 4 сентября 2025 года. Это модель с открытыми весами, построенная на базе Gemma 3 с инициализацией T5Gemma. Она преобразует текст в числовые векторы для поиска, определения семантической близости, классификации и кластеризации.
Модель обучалась на данных более чем на 100 языках. Максимальная длина входа составляет 2048 токенов. Основной сценарий — локальный запуск на телефонах, ноутбуках и настольных компьютерах, хотя официальный пример Sentence Transformers можно выполнять как на центральном процессоре (CPU), так и на графическом процессоре (GPU).
EmbeddingGemma распространяется по Gemma Terms of Use как модель с открытыми весами. Условия Google допускают ответственное коммерческое использование, дообучение и развёртывание в собственных приложениях.
Подтверждённые характеристики
| Параметр | Значение |
| Разработчик | 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")Префиксы для запросов и документов
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)Проверка результата
После запуска примера проверьте два наблюдаемых признака:
document_embeddings.shapeдолжен быть равен(2, 256).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 и проверить авторизацию |
Официальные источники
- Обзор EmbeddingGemma
- Карточка модели
- Руководство по Sentence Transformers
- Официальный анонс Google DeepMind
- Журнал релизов Gemma
Следующий шаг
BAAI/bge-m3 — мультиязычная embedding-модель для self-hosted RAG
Связанные материалы
Если выбираете локальную модель для эмбеддингов или проектируете RAG для устройства с ограниченной памятью, заранее сравните качество, размер индекса и задержку на собственных данных.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov
Если хотите разобрать свою задачу — напишите мне Если хотите разобрать свою задачу — напишите мне.
Можно прийти с идеей, черновым контекстом или уже живой задачей. Помогу быстро понять, где реальный следующий шаг, а где лишний шум.
Обычно хватает 2–3 сообщений, чтобы понять, могу ли я здесь реально помочь и в каком формате лучше двигаться дальше.
Дальше по теме
Обновление CLI-инструмента gog добавляет пересылку Gmail, авторепалии, полнотекстовый поиск, загрузку Markdown в Google Docs и редактирование графиков в Sheets — всё из терминала.