English translation is not available yet. Showing Russian content.

Какие embedding-модели вы использовали и почему?

Краткий тезис

Выбор embedding-модели — одно из самых важных решений в RAG. От него зависит, насколько хорошо система будет находить релевантные документы. Компромисс всегда один качество (multilingual, длина контекста) vs скорость/стоимость (размер модели, API vs self-hosted). Для русского языка выбор ограничен: лучшие open-source варианты — BAAI/bge-m3 (качество, длинный контекст) и intfloat/multilingual-e5 (хороший русский, легче). Для production с высокими требованиями к качеству — 3 Какие стратегии chunking'а вы знаете и когда какую применяете|3]] Какие стратегии chunking'а вы знаете и когда какую применяете|3]] Какие стратегии chunking'а вы знаете и когда какую применяете|3]]-large|OpenAI text-embedding-3-large]] (API, но дорого). Для бюджетных self-hosted решений — sentence-transformers (легкие, быстрые, но качество хуже).

Ключевая идея Embedding-модель — это «переводчик» текста в вектор. Чем лучше модель, тем ближе векторы семантически похожих текстов и дальше — разных.


1. Термин: Embedding-модель

Что это Нейросетевая модель, которая преобразует текст в вектор (массив чисел фиксированной длины). Вектор кодирует смысл текста: похожие тексты имеют близкие векторы (косинусное расстояние).

Термин «Размерность эмбеддинга» (embedding dimension Длина вектора. 384, 768, 1024, 1536, 3072. Чем выше размерность, тем больше информации может закодировать модель, но тем больше памяти нужно для хранения.

РазмерностьПамять на 1 млн векторов (FP16)Типичные модели
3840.75 GBdistiluse-base-multilingual
7681.5 GBBGE-m3, E5-large
10242 GBCohere embed-v3
15363 GBOpenAI text-embedding-3-small
30726 GBOpenAI text-embedding-3-large

Термин «Мультиязычность» (multilingual Способность модели работать с несколькими языками (включая русский) в одном векторном пространстве. Это важно для RAG с разноязычными документами.


2. Сравнение популярных embedding-моделей

2.1 OpenAI text-embedding-3 (small / large)

Что это Проприетарная модель OpenAI (2024). Доступна только через API.

Характеристикаtext-embedding-3-smalltext-embedding-3-large
Размерность1536 (можно уменьшить до 256)3072 (можно уменьшить до 256)
Макс. токенов81928192
Цена (за 1M токенов)$0.02$0.13
MTEB (англ.)62.364.6
Поддержка русскогоДа (хорошая)Да (отличная)

Термин «MTEB» (Massive Text Embedding Benchmark Стандартный бенчмарк для оценки embedding-моделей (56 задач). Чем выше, тем лучше.

Плюсы

  • Лучшее качество среди всех моделей (особенно large)
  • Поддержка 100+ языков (русский отличный)
  • Возможность уменьшить размерность (1536 → 256 через dimensions= параметр)
  • Не требует GPU на вашей стороне

Минусы

  • API-зависимость (нет self-hosted)
  • Платно (дорого для больших объёмов)
  • Ограничение 8192 токенов (нельзя загружать очень длинные документы одним эмбеддингом)
  • Сетевой вызов (латенси)

Когда использовать Production с высокими требованиями к качеству, когда бюджет позволяет и нет требования self-hosted.

Цифра Для 1 млн чанков (по 1000 токенов) = 1B токенов → $20 для small, $130 для large.


2.2 BAAI/bge-m3

Что это Open-source модель от Пекинской академии искусственного интеллекта (BAAI). На данный момент лучшая open-source мультиязычная модель.

ХарактеристикаЗначение
Размерность1024
Макс. токенов8192
Параметров560M
Размер на диске (FP16)1.1 GB
MTEB (англ.)63.3
Поддержка русскогоОтличная (входит в 100+ языков)

Термин «BGE» (BAAI General Embedding Семейство моделей от BAAI. M3 — третья версия, мультифункциональная.

Плюсы

  • Open-source (self-hosted, бесплатно)
  • Длинный контекст (8192 токенов)
  • Отличное качество (почти как у OpenAI small)
  • Мультиязычность (русский в топе)
  • Поддержка sparse эмбеддингов (для гибридного поиска)

Минусы

  • Тяжёлая (560M параметров, 1.1 GB)
  • Требует GPU для приемлемой скорости (CPU слишком медленный)
  • Self-hosted требует обслуживания

Когда использовать Лучший выбор для self-hosted RAG Если у вас есть GPU (хотя бы T4) и нужно бесплатное решение с хорошим качеством.

Цифра На T4 GPU (16GB): 1000 эмбеддингов в секунду с батчингом.


2.3 intfloat/multilingual-e5

Что это Модель от Microsoft (intfloat), одна из первых хороших мультиязычных моделей. Предшественник BGE-m3.

ХарактеристикаЗначение
Размерность768
Макс. токенов512
Параметров278M
Размер на диске (FP16)550 MB
MTEB (англ.)~58
Поддержка русскогоХорошая

Термин «E5» (EmbEddings from bidirEctional Encoder rEpresentations Семейство моделей от Microsoft. Multilingual-e5 — мультиязычная версия.

Плюсы

Минусы

  • Максимум 512 токенов (нельзя загружать длинные чанки)
  • Качество хуже, чем у BGE-m3 и OpenAI
  • Медленнее, чем современные модели

Когда использовать Если нужно лёгкое self-hosted решение, а GPU ограничен, и чанки короткие (<512 токенов).


2.4 cohere/embed-multilingual-v3

Что это Проприетарная модель от Cohere (API), специализирующаяся на сжатии эмбеддингов (compressed embeddings).

ХарактеристикаЗначение
Размерность1024 (можно сжать до 256, 128, 64)
Макс. токенов512
Цена (за 1M токенов)$0.10
MTEB (англ.)~62
Поддержка русскогоДа

Термин «Сжатие эмбеддингов» (Embedding compression Возможность уменьшить размерность вектора (например, с 1024 до 64) с минимальной потерей качества. Экономит память в 16 раз.

Плюсы

  • Отличное сжатие (можно хранить в 16 раз меньше)
  • Хорошее качество

Минусы

  • API-зависимость
  • Дорого ($0.10 за 1M токенов — дешевле OpenAI, но дороже self-hosted)
  • Максимум 512 токенов
  • Меньше языков, чем у BGE-m3

Когда использовать Когда память векторной БД критична (миллиарды векторов), а бюджет позволяет.


2.5 Sentence-Transformers (общее семейство)

Что это Библиотека и экосистема открытых embedding-моделей (all-MiniLM-L6-v2, multi-qa-mpnet, distiluse-base-multilingual и др.).

МодельРазмерностьТокеновMTEBРусскийРазмер
all-MiniLM-L6-v238425656Нет80 MB
multi-qa-mpnet-base76851257Нет400 MB
distiluse-base-multilingual512512~50Да250 MB
paraphrase-multilingual-MiniLM384512~50Да120 MB

Плюсы

  • Очень лёгкие (80-400 MB)
  • Быстрые (даже на CPU)
  • Простота использования (sentence-transformers)

Минусы

  • Качество значительно хуже, чем у BGE-m3 и OpenAI
  • Ограничение 256-512 токенов
  • Мультиязычные версии хуже качеством

Когда использовать Прототипы, POC, крайне ограниченные ресурсы (Raspberry Pi, edge devices).


3. Сводная таблица

МодельOpen-sourceРусскийМакс токеновMTEBРазмер (GB)Цена (1M токенов)GPU нужен?Когда выбрать
OpenAI text-embedding-3-largeОтлично819264.6$0.13Макс. качество
OpenAI text-embedding-3-smallОтлично819262.3$0.02Качество + бюджет
BAAI/bge-m3Отлично819263.31.1Бесплатно (self-hosted)Лучший self-hosted
Cohere embed-multilingual-v3Хорошо512~62$0.10Сжатие памяти
intfloat/multilingual-e5Хорошо512~580.55Бесплатно❌ (CPU)Лёгкий self-hosted
distiluse-base-multilingualСредне512~500.25Бесплатно❌ (CPU)Прототипы, эдж

4. Как я выбирал embedding-модель для своих проектов

Кейс 1: Production RAG для международной поддержки (50 языков)

Выбор OpenAI text-embedding-3-large (через API)

Почему

  • Требовалось отличное качество для 50 языков
  • Был бюджет на API (30k запросов/день)
  • Нет DevOPS для поддержки GPU

Результат Качество retrieval (MRR@10) = 0.89


Кейс 2: RAG для внутренней документации (только русский, 1 млн документов)

Выбор BAAI/bge-m3 (self-hosted на T4 GPU)

Почему

  • 1 млн документов через API стоило бы $1000 в месяц
  • Есть GPU в инфраструктуре
  • Русский язык поддерживается отлично

Результат Качество (MRR@10) = 0.85, стоимость = $50/мес (GPU + электричество)


Кейс 3: Прототип чат-бота для малого бизнеса (1000 документов)

Выбор intfloat/multilingual-e5 (на CPU)

Почему

  • Нет GPU
  • Бюджета на API нет
  • 1000 документов, не критично качество

Результат Качество (MRR@10) = 0.72 (достаточно для POC)


5. Рекомендации по выбору

СценарийРекомендацияПочему
Production, высокое качество, нет GPUOpenAI text-embedding-3-largeЛучшее качество, API
Production, высокое качество, есть GPUBAAI/bge-m3Лучшее open-source качество
Production, много языков (>20)BAAI/bge-m3 или OpenAIМультиязычность
Production, ограниченный бюджетBAAI/bge-m3 self-hostedДешевле API
Прототип, мало ресурсовintfloat/multilingual-e5 (CPU)Легко, бесплатно
Миллиарды векторов, мало памятиCohere (сжатие) или BGE-m3 с квантованиемЭкономия памяти
Edge / Raspberry Pidistiluse-base-multilingualОчень лёгкая

6. Пет-проект для закрепления

Задача Сравнить 3 embedding-модели на своих данных.

Инструменты Python, Qdrant, sentence-transformers, API ключи (OpenAI, Cohere — опционально)

Шаги

  1. Взять 100 документов на русском языке и 50 тестовых запросов
  2. Вручную разметить для каждого запроса релевантные документы (gold standard)
  3. Выбрать 3 модели для сравнения:
    • BAAI/bge-m3 (self-hosted, если есть GPU) или intfloat/multilingual-e5 (CPU)
    • 3 Какие стратегии chunking'а вы знаете и когда какую применяете|3]] Какие стратегии chunking'а вы знаете и когда какую применяете|3]] Какие стратегии chunking'а вы знаете и когда какую применяете|3]]-small|OpenAI text-embedding-3-small]] (через API)
    • distiluse-base-multilingual (базовый baseline)
  4. Для каждой модели:
    • Индексировать 100 документов
    • Для каждого запроса найти top-10 чанков
    • Посчитать MRR@10 и Recall@10
  5. Замерить время индексации и поиска
  6. Построить таблицу: качество vs скорость vs стоимость

Ожидаемый результат BGE-m3 даст качество близкое к OpenAI, distiluse — значительно хуже. Вы поймёте trade-off для своего домена.


Связь с другими вопросами

ВопросТема
1RAG архитектура (embedding этап)
4Векторная БД (размерность влияет на память)
5Оценка retrieval (MRR, Recall — покажут качество)
6Гибридный поиск (спарс эмбеддинги в BGE-m3)
13Батчинг эмбеддингов для ускорения
77Оптимизация embedding генерации

15. Какие embedding-модели вы использовали и почему|15. Какие embedding-модели вы использовали и почему|15. Какие embedding-модели вы использовали и почему|15 полностью разобран. Переходим к вопросу 16, когда будете готовы|Вопрос 15 полностью разобран. Переходим к вопросу 16, когда будете готовы]]


Навигация