Почему ваш RAG на армянском работает хуже, чем на английском?
Вы построили идеальную RAG-систему для английских документов. Recall@1 под 95%, ответы точные. Затем пытаетесь подключить армянские, грузинские или азербайджанские тексты - и все разваливается. Система возвращает ерунду, а косинусная схожесть между явно связанными предложениями едва достигает 0.3.
Вините архитектуру, кучу промптов, векторную базу. А проблема в одной вещи - embedding-модель. Коммерческие решения от OpenAI (text-embedding-3-large) и Cohere (embed-multilingual-v3.0) позиционируют себя как мультиязычные. Но для языков за пределами топ-20 они дают катастрофически плохие результаты.
Тест: 19 моделей, один армянский датасет
Я взял датасет из 1000 пар армянских предложений. Каждая пара - заголовок новости и ее первый абзац из армянских СМИ (те самые EPG заголовки). Задача простая: для каждого заголовка найти соответствующий абзац в базе из 1000 документов.
Метрики: Recall@1 (сколько раз модель нашла правильный документ первым) и средняя косинусная схожесть между заголовком и его абзацем (чем ближе к 1, тем лучше).
В тесте участвовали:
- Коммерческие: OpenAI text-embedding-3-large, OpenAI text-embedding-ada-002, Cohere embed-multilingual-v3.0
- Бесплатные от сообщества: LaBSE (Language-agnostic BERT Sentence Embedding), multilingual-e5-base, multilingual-e5-large, bge-m3, zembed-1
- И еще 11 моделей с Hugging Face, заточенных под мультиязычность
Результаты: коммерческие гиганты на последних местах
| Модель | Recall@1 | Средний cosine | Размер |
|---|---|---|---|
| LaBSE | 0.89 | 0.92 | 1.2B |
| multilingual-e5-large | 0.87 | 0.91 | 560M |
| multilingual-e5-base | 0.85 | 0.89 | 278M |
| zembed-1 | 0.82 | 0.88 | 340M |
| Cohere embed-multilingual-v3.0 | 0.41 | 0.52 | N/A |
| OpenAI text-embedding-3-large | 0.38 | 0.49 | N/A |
Разрыв в два раза. LaBSE находит правильный документ в 89% случаев, OpenAI - только в 38%. При этом LaBSE бесплатна и работает локально. OpenAI стоит $0.13 за 1М токенов (на 10.03.2026).
Cohere и OpenAI показывают приемлемые результаты на английском, французском, немецком. Но как только вы переходите на армянский, грузинский, азербайджанский - производительность падает катастрофически. Они не мультиязычные, они "много-популярных-язычные".
Закулисная драма: токенизаторы решают всё
Почему так происходит? Всё упирается в токенизацию.
OpenAI использует токенизатор cl100k_base, созданный для своих моделей. Он оптимизирован под английский и основные европейские языки. Армянские символы (например, "զ", "ը", "ռ") разбиваются на несколько субтокенов или даже байтов. Фраза "Երևանում անձրև է գալիս" (В Ереване идет дождь) превращается в 17 токенов, хотя слов всего 4.
LaBSE и E5 используют SentencePiece с vocabulary в 250K токенов, специально обученным на 109 языках. Армянские слова остаются целыми. Та же фраза - 5 токенов.
Второй фактор - данные обучения. LaBSE обучалась на параллельных корпусах для 109 языков, включая армянский. OpenAI и Cohere обучали на интернет-данных, где армянский составляет доли процента. Модель просто не видела достаточно примеров.
Как выбрать embedding-модель для малоресурсного языка: пошаговый гайд
1Определите свой язык и объем данных
Армянский, грузинский, азербайджанский - малоресурсные, но не нулевые. Для них есть модели. Если язык действительно редкий (например, осетинский), придется дообучать.
2Проверьте токенизатор
Загрузите модель с Hugging Face и посмотрите, как токенизатор обрабатывает ваш язык. Код для проверки:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("sentence-transformers/LaBSE")
text = "Ձեր տեքստը այստեղ" # Ваш текст здесь
tokens = tokenizer.tokenize(text)
print(f"Токены: {tokens}")
print(f"Количество токенов: {len(tokens)}")Если слова разбиваются на символы или байты - модель не подходит.
3Бегите от коммерческих API для production
OpenAI и Cohere - удобно для прототипа на английском. Для продакшена на малоресурсном языке - слишком дорого и неэффективно. Локальная модель даст лучшее качество и нулевую зависимость от сети.
4Выберите из топ-3 бесплатных моделей
На 10.03.2026 лидеры:
- LaBSE - лучшая для кроссязыкового поиска, но тяжелая (1.2B параметров).
- multilingual-e5-large - баланс качества и размера, отличные результаты на МТЕВ бенчмарке.
- zembed-1 - новая модель 2025 года, показывает хорошие результаты на восточноевропейских языках.
Для сравнения других открытых моделей, смотрите наше исследование BGE M3 vs EmbeddingGemma vs Qwen3.
5Протестируйте на своих данных
Создайте небольшой датасет из пар "запрос-релевантный документ". Замерьте Recall@1 для 2-3 моделей. Выберите лучшую.
Ошибки, которые съедят вашу производительность
Никогда не нормализуйте эмбеддинги перед сохранением в векторную базу, если модель не обучалась с косинусной схожестью. E5 и LaBSE возвращают L2-нормализованные векторы. Если вы повторно нормализуете их - информация теряется.
Другие типичные ошибки:
- Использование общей мультиязычной модели без проверки. "Мультиязычная" не значит "одинаково хорошая для всех".
- Смешивание языков в одном индексе. Если у вас документы на 5 языках, лучше создать 5 отдельных индексов. Модели работают лучше в монолингвальном режиме.
- Игнорирование длины контекста. LaBSE принимает только 512 токенов. Для длинных документов нужно разбивать.
- Не учитывать стоимость. OpenAI embedding для 1М армянских токенов обойдется в $130. Локальная модель - $0 за электричество и 2 часа на настройку.
FAQ: ответы на острые вопросы
Вопрос: А если мой язык вообще не поддерживается? Нет в списке у LaBSE?
Ответ: Обучайте свою модель. Возьмите xlm-roberta-base и дообучите на параллельных корпусах (если есть) или на сильном back-translation. Это трудно, но возможно. Исследование Falcon-H1-Arabic показывает, как работать со сложными языками.
Вопрос: А как насчет русского? Он же не малоресурсный?
Ответ: Для русского есть специализированные модели, как RuModernBERT. Но multilingual-e5 и LaBSE тоже показывают отличные результаты. Русский достаточно представлен в обучающих данных.
Вопрос: Я слышал про zembed-1. Она лучше LaBSE?
Ответ: На некоторых языках - да. zembed-1 использует более современную архитектуру и обучалась на свежих данных (до 2024 года). Для армянского LaBSE все еще немного впереди. Но разница в 2-3% Recall. Подробнее в обзоре zembed-1.
Вопрос: А если я хочу использовать облако? Какие сервисы предлагают хорошие мультиязычные модели?
Ответ: На 10.03.2026 ситуация мрачная. AWS Bedrock, Google Vertex AI предлагают в основном английские модели. Hugging Face Inference Endpoints - ваш выбор, если не хотите разворачивать сами. Там можно запустить любую модель из сообщества.
Последний совет: забудьте про "волшебную кнопку" от OpenAI для малоресурсных языков. Мир open-source моделей ушел далеко вперед. LaBSE, выпущенная в 2020, до сих пор бьет коммерческие модели 2026 года на армянском. Потому что ее создатели думали о языковом разнообразии, а не о прибыли с топ-5 рынков.
Следующий шаг - тестирование на ваших данных. Скачайте multilingual-e5-base, запустите на паре сотен документов. Результаты удивят. А потом посчитайте, сколько вы сэкономили, не отправляя токены в Калифорнию.