Своя модель

Embed-модели для поиска по памяти: чем они отличаются

Embed-модели различаются двумя вещами, которые решают всё: качеством на русском и размерностью вектора. Считаем размер индекса арифметикой и разбираем цену смены модели.

Ассистент не находит вашу же заметку. Вы помните, что записывали про смену тарифа у хостера, спрашиваете — и получаете «в ваших записях ничего похожего нет». Заметка при этом лежит в базе, открывается по прямой ссылке и говорит ровно об этом, только другими словами: «перевёл сервер на план подороже».

За этот провал отвечает не разговорная модель. Отвечает embed-модель — отдельная и обычно незаметная часть системы, которая превращает ваши записи в векторы и по ним ищет. Разговорная модель получает уже найденное; если поиск ничего не принёс, ей просто нечего пересказывать, и она честно отвечает, что записей нет.

Ниже — сравнение embed-моделей по двум критериям, которые для личного архива важнее всех остальных: как модель ведёт себя на русском и какой длины вектор она выдаёт, потому что от длины вектора напрямую зависит размер индекса. Дата написания — 25 августа 2026 года; свойства конкретных версий проверяйте на их карточках, они меняются быстрее статей.

#Что здесь вообще сравнивается

Embed-модели сравнимы между собой потому, что все они делают ровно одну операцию: получают фрагмент текста и отдают массив чисел фиксированной длины. Больше они не умеют ничего — не отвечают на вопросы, не пересказывают, не рассуждают. Разговорную модель выбирают по другим критериям — по объёму видеопамяти и типу задач, как в разборе того, какую модель выбрать под задачу и своё железо; здесь эти критерии не работают. Механику превращения текста в числа разбирает материал о том, что такое эмбеддинги простыми словами.

#Как это работает, если убрать маркетинг

Модель разбивает вашу базу на фрагменты и каждому назначает точку в пространстве из сотен измерений. Близость двух текстов измеряется углом между их векторами. Запрос проходит через ту же модель, получает свою точку, и система возвращает ближайших соседей.

Отсюда следует главное ограничение: модель ищет по смыслу, но по тому смыслу, который она усвоила при обучении. Ваши личные обозначения, внутренние сокращения проекта и фамилии коллег для неё — набор редких токенов без опоры. Именно поэтому векторный поиск не отменяет поиск по словам, а дополняет его; разбор их разделения труда — в сравнении семантического поиска и поиска по ключевым словам.

Отдельная деталь, которую пропускают: часть моделей обучена асимметрично и требует пометки на входе — запрос помечается одним префиксом, документ другим. Если префиксы не проставлены или проставлены не те, качество падает без всяких сообщений об ошибке. Это свойство описано на карточке модели и обязательно к прочтению.

#Три различия, которые видно на практике

Язык обучения. Компактные и самые быстрые модели почти всегда обучены преимущественно на английском. Они формально работают с русским, но расстояния между русскими текстами у них размыты: «сменил план на сервере» и «переехал на другой тариф» оказываются дальше друг от друга, чем должны. Мультиязычные модели с русским в обучающем наборе ведут себя заметно устойчивее — ценой размера и скорости.

Размерность вектора. Это число измерений на фрагмент: типичные значения — 384, 768, 1024. Больше измерений означает более тонкие различия и больший индекс. Прямой связи «больше — точнее» нет: модель с 768 измерениями и русским в обучении обыгрывает модель с 1024 без русского.

Максимальная длина фрагмента. Короткое окно заставляет резать текст мельче, а мелкая нарезка теряет контекст: абзац, где подлежащее осталось в предыдущем куске, ищется плохо.

#Сколько места займёт индекс: считаем, а не гадаем

Размер векторного индекса — единственная величина в этой теме, которую можно назвать точно, потому что она получается умножением.

размер индекса ≈ число фрагментов × размерность × байт на число

Байт на число — 4 во float32 и 2 во float16. Ниже расчёт для 100 тысяч фрагментов (примерно столько даёт архив из нескольких тысяч заметок и переписки за пару лет). Смотрите на разницу между строками: она показывает, во что обходится каждый шаг вверх по размерности.

Размерность float32 float16 Комментарий
384 ~154 МБ ~77 МБ компактно, быстро, обычно англоцентрично
768 ~307 МБ ~154 МБ массовый компромисс
1024 ~410 МБ ~205 МБ тоньше различия, тяжелее индекс

К расчёту добавляется служебная структура хранилища и сами тексты фрагментов, поэтому файл базы выйдет больше; насколько — зависит от хранилища, варианты разобраны в обзоре векторных баз данных, а сборка на расширении для SQLite — в гайде по sqlite-vec.

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

#Классы embed-моделей и что от них ждать

Таблица собрана по классам, а не по именам версий: имена и номера устаревают за квартал, свойства класса — нет. Смотрите на связку «языки — размерность — вес индекса»: она и определяет выбор.

Класс Размерность Языки Индекс на 100 тыс. фрагментов
Компактная англоцентричная обычно 384 английский уверенно, русский по остаточному принципу ~154 МБ (float32)
Универсальная среднего размера обычно 768 английский плюс заявленная мультиязычность ~307 МБ
Крупная мультиязычная 1024 и выше русский в обучающем наборе заявлен явно от ~410 МБ
С усекаемым вектором задаётся при индексации зависит от базовой модели по выбранной размерности

Из массовых локальных вариантов чаще всего называют nomic-embed-text: заявленная размерность — 768, английский основной, русский работает, но качество на нём стоит проверить своими запросами. Размерность любой другой конкретной модели — требует проверки на карточке модели: у части семейств она различается между версиями, а модели с усекаемым вектором позволяют задать её при индексации и после этого менять уже нельзя.

#Где компактная англоцентричная модель объективно лучше

Соблазн сказать «берите самую мультиязычную» есть, но он неверен как минимум в трёх случаях, и это не мелочи.

Скорость первичной индексации. Компактная модель прогоняет архив в разы быстрее и требует меньше памяти. На слабой машине разница между «индексация закончилась за вечер» и «идёт вторые сутки» решает, будет ли поиск вообще настроен.

Технические заметки на английском. Если ваш архив — это фрагменты кода, логи, документация и англоязычная переписка, англоцентричная модель на них точнее крупной мультиязычной того же поколения: она не тратит представление на языки, которых в вашем архиве нет.

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

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

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

Работающая проверка занимает полчаса и выглядит так:

  1. Возьмите 20 своих реальных записей, разных по теме.
  2. Для каждой сформулируйте вопрос другими словами, чем написано в записи. Не «переезд на тариф», а «что я делал с хостингом весной».
  3. Проиндексируйте архив кандидатом и задайте все 20 вопросов.
  4. Считайте попаданием, если нужная запись попала в первые пять результатов.
  5. Повторите со вторым кандидатом на том же архиве и тех же вопросах.

#Смена embed-модели означает переиндексацию всего

Это главное практическое отличие embed-модели от разговорной. Разговорную можно поменять между двумя сообщениями. Embed-модель поменять нельзя: векторы, построенные разными моделями, несравнимы между собой, даже если размерность совпала.

Что это значит на практике:

  • старый индекс после смены модели становится мусором и удаляется целиком;
  • весь архив прогоняется через новую модель заново — на большой базе это часы;

Отсюда практическое правило: выбирайте embed-модель до того, как загрузите в систему весь архив, и меняйте её только по серьёзной причине, а не из любопытства к новой версии.

#Кому что подойдёт

Русскоязычный личный архив, машина средняя или выше. Берите мультиязычную модель с явно заявленным русским, размерность 768 или выше. Индекс в несколько сотен мегабайт вам ничем не помешает.

Слабое железо или очень большой архив. Компактная модель на 384 измерения плюс обязательный поиск по ключевым словам рядом. Комбинация двух посредственных механизмов здесь работает лучше одного хорошего, но перегруженного.

Технический архив на английском. Компактная англоцентричная модель без сожалений; мультиязычность вам нечем окупить.

Ассистенту с памятью нужны обе модели — разговорная и embed. В Persona их подключает сам пользователь: либо своя Ollama, либо ключ облачного провайдера, и во втором случае текст запросов уходит этому провайдеру. Порядок действий — в инструкции о том, как подключить Ollama к Persona.

#Частые вопросы

#Чем embed-модель отличается от обычной языковой модели?

Embed-модель не порождает текст. Она принимает фрагмент и возвращает вектор фиксированной длины, по которому измеряется смысловая близость. Разговаривать, отвечать на вопросы и пересказывать она не умеет и не должна — это задача чат-модели, которая работает уже с найденными фрагментами.

#Какая размерность вектора нужна для личного архива?

Для архива до нескольких сотен тысяч фрагментов подойдёт любая из типичных: 384, 768 или 1024. Разница в размере индекса измеряется сотнями мегабайт и на современной машине не критична. Выбирать стоит по качеству на вашем языке, а не по числу измерений.

#Насколько хуже англоцентричные модели работают на русском?

Заметно хуже на перефразировках — то есть ровно там, где векторный поиск и нужен. Точную величину разрыва назвать нельзя: она зависит от модели и от вашего текста. Проверяется двадцатью своими запросами к своему же архиву за полчаса.

#Что будет, если поменять embed-модель после индексации?

Старый индекс придётся выбросить и перестроить полностью: векторы разных моделей несравнимы даже при одинаковой размерности. На большом архиве перестройка занимает часы, и всё это время поиск работает неполно.

#Можно ли использовать одну модель и для чата, и для эмбеддингов?

Технически из некоторых чат-моделей можно доставать внутренние представления, но качество поиска будет хуже, чем у специализированной embed-модели, а расход памяти — выше. Практический смысл в этом появляется редко.

#Вывод

Выбор embed-модели сводится к двум вопросам. Первый: есть ли русский в её обучающем наборе — и проверяется он вашими двадцатью запросами, а не чужой таблицей. Второй: сколько места займёт индекс — и он считается умножением за минуту.

Если ваш архив русскоязычный и машина позволяет — берите мультиязычную модель на 768 измерений и выше, разница на перефразировках окупает лишние сотни мегабайт. Если железо слабое или архив англоязычный — берите компактную на 384 и добавьте рядом поиск по ключевым словам. И в обоих случаях выбирайте до полной загрузки архива: смена модели позже стоит полной переиндексации.

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт