Перейти к содержанию
Innovialabs

Как выбрать модель эмбеддингов для поиска и RAG

Практика3 мин

Коротко

Выбирайте модель эмбеддингов не по общему рейтингу, а по результатам на своих документах и вопросах: соберите небольшой тестовый набор, прогоните 2–4 кандидата и сравните, как часто нужный фрагмент попадает в топ выдачи.

Главное правило

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

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

Критерии выбора

Мультиязычность

  • Для русского выбор широкий: большинство мультиязычных моделей с ним справляются.
  • Узбекский — язык с меньшим объёмом обучающих данных. Качество у разных моделей заметно отличается, особенно на латинице с апострофами (o‘, g‘) и при смешении латиницы и кириллицы.
  • Важен кросс-языковой поиск: вопрос на узбекском должен находить ответ в русском документе, если такая задача есть.

Размерность вектора

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

Максимальная длина входа

Если чанки длиннее лимита модели, текст обрезается молча. Сверьте размер чанков с лимитом.

Стоимость и хостинг

ВариантПлюсыМинусы
API-модельБыстрый старт, не нужно железоДанные уходят провайдеру, оплата за объём, зависимость от сервиса
Открытая модель на своём сервереДанные остаются у вас, нет платы за запросНужны сервер (часто с GPU), настройка и поддержка

Учитывайте не только индексацию, но и каждый пользовательский запрос — его тоже нужно векторизовать.

Асимметричный поиск

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

Как сделать бенчмарк на своих данных

  1. Соберите набор: 50–100 реальных вопросов и для каждого — правильный фрагмент или документ. Включите вопросы на всех языках пользователей.
  2. Зафиксируйте разбиение: одинаковые чанки для всех моделей, иначе сравнение нечестное.
  3. Проиндексируйте документы каждой моделью-кандидатом.
  4. Посчитайте метрики:
    • Recall@k — доля вопросов, где правильный фрагмент оказался в топ-k;
    • MRR — насколько высоко в выдаче стоит правильный фрагмент.
  5. Разбейте результаты по языкам — модель может быть сильной на русском и слабой на узбекском.
  6. Посмотрите глазами провалы: часто там видна системная проблема, например термины или аббревиатуры.

Минимальный расчёт Recall@k:

def recall_at_k(results, gold, k=5):
    hits = sum(1 for q, ids in results.items() if gold[q] in ids[:k])
    return hits / len(results)

Что ещё улучшает поиск, кроме модели

  • Гибридный поиск с полнотекстовым индексом — для артикулов, номеров и редких терминов.
  • Реранкер поверх top-k кандидатов.
  • Обогащение чанков заголовками разделов.

Иногда эти шаги дают больше, чем смена модели.

Частые ошибки

  • Выбор по рейтингу без проверки на своих языках.
  • Смешивание векторов разных моделей в одном индексе — они несовместимы.
  • Игнорирование префиксов запроса и документа.
  • Тест только на «удобных» вопросах, написанных разработчиками.

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

Да, но придётся заново векторизовать все документы и перестроить индекс. Поэтому храните исходные тексты чанков, а не только векторы.

Поможем с этим

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

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.