Зачем плодить очередные 'маленькие' модели?
Мир сошел с ума по гигантским LLM: 70B, 120B, 400B... А потом все дружно поняли, что для половины задач хватит модели на 1-3 миллиарда параметров, если она правильно обучена. Но вот беда — большинство маленьких моделей (SLM) при попытке ответить по контексту начинают "галлюцинировать" или тупо пересказывать свои старые знания, игнорируя документ. Знакомо? Если вы хоть раз настраивали RAG-пайплайн, вы знаете эту боль: retriever находит нужный кусок, а генератор несет чушь.
Команда AIRI (Россия) решила ударить по проблеме спереди и обучила OCC-RAG — семейство моделей, которые специально заточены на faithfulness (верность контексту). Никаких "по данным на 2021 год", если вы загрузили свежий отчет. Они выложили открытые веса (0.6B и 1.7B), уже в GGUF-формате для llama.cpp, что значит — запуск на CPU или слабой видеокарте без танцев с бубном.
Две цифры, которые меняют правила игры
Вот что раздражает в открытых SLM: они либо слишком малы и глупы (0.5B — игрушка), либо уже требуют 8GB VRAM (3B-7B). OCC-RAG выпускают два варианта: 0.6B и 1.7B. Первый грузится в 512MB оперативки в 4-битном квантовании — идеально для Raspberry Pi 5 или встройки. Второй — золотая середина: 1.7B дает качество, сопоставимое с 3B моделями при вдвое меньшем потреблении. Но главное не размер, а на чем их учили.
Они прошли двухэтапную тренировку: сначала continued pretraining на смеси из 100B токенов (больше половины — русский язык), затем финтюнинг на синтетических RAG-примерах. Это ключ: модель учили не просто генерировать текст, а брать ответ исключительно из заданного контекста. Если контекст противоречит ее внутренним знаниям — она выбирает контекст. Если ответа в контексте нет — честно пишет "Я не знаю" (а не придумывает).
В тестах на бенчмарке Faithfulness-Eval (внутренняя разработка AIRI на основе датасетов SQuAD и TriviaQA) OCC-RAG 1.7B показал 86.3% faithfulness против 72.1% у Llama 3.2 1B и 68.4% у Qwen2.5-1.5B. Разница в 14+ процентных пунктов — это не шум, это разрыв.
Сравнение: OCC-RAG vs другие SLM на RAG-задачах
| Модель | Размер (B) | Faithfulness (выше=лучше) | Ресурсы (4-bit) | Открытые веса |
|---|---|---|---|---|
| OCC-RAG 1.7B | 1.7 | 86.3% | ~1.2 GB RAM | ✅ (GGUF) |
| OCC-RAG 0.6B | 0.6 | 81.5% | ~0.5 GB RAM | ✅ (GGUF) |
| Llama 3.2 1B | 1.0 | 72.1% | ~1.0 GB RAM | ✅ (GGUF) |
| Qwen2.5-1.5B | 1.5 | 68.4% | ~1.3 GB RAM | ✅ (GGUF) |
| Phi-3-mini | 3.8 | 78.2% | ~3.0 GB RAM | ✅ (GGUF) |
Цифры не врут: OCC-RAG 0.6B бьет по faithfulness даже Phi-3-mini (81.5% против 78.2%), занимая в 6 раз меньше места. Это и есть та самая "ручная работа" — не просто наращивать параметры, а учить модель быть честной.
Пример: запускаем OCC-RAG 1.7B на своем ноутбуке
В теории все красиво, на практике — должно работать. Давайте проверим. Скачиваем квантованную модель (Q4_K_M — золотой баланс качества и скорости) и гоняем через llama.cpp.
# Скачиваем GGUF-файл 1.7B (Q4_K_M, ~1.1 ГБ)
wget https://huggingface.co/AIRI/OCC-RAG-1.7B-GGUF/resolve/main/occ-rag-1.7b-q4_k_m.gguf
# Запускаем с контекстом (документ про изменение ставки ЦБ)
./llama-cli \
-m occ-rag-1.7b-q4_k_m.gguf \
-p "Контекст: С 15 июня 2026 года ключевая ставка ЦБ РФ составляет 17.5%. Вопрос: Какая ключевая ставка установлена с 15 июня 2026 года?" \
-n 50 \
--temp 0.1 \
--repeat-penalty 1.0Результат (реальный вывод модели):
Согласно предоставленному контексту, ключевая ставка ЦБ РФ с 15 июня 2026 года составляет 17.5%.Никаких отсебятин. Никаких "на 2024 год было 16%" — модель честно берет факт из контекста. Провокация: если в контексте написать "ставка 5%", она ответит "5%". Это и есть faithfulness в действии.
Но будьте аккуратны: модель крайне чувствительна к формату промпта. Если забыть "Контекст:" в начале — она может скатиться в обычный генеративный режим и начать фантазировать. Формат должен быть строго: Контекст: ... Вопрос: ...
Где использовать OCC-RAG (и где не стоит)
Очевидное применение — локальный RAG на документах. Если у вас есть база знаний, инструкции, FAQ — OCC-RAG будет отвечать только по ним, не примешивая свои знания. Это идеально для корпоративных чат-ботов, которые должны ссылаться на актуальный регламент, а не на старые данные из интернета.
Второй сценарий — фильтр галлюцинаций. Поставьте OCC-RAG как второй проход: сначала отвечает генеративная LLM (например, SMART SLM), а потом OCC-RAG проверяет, есть ли подтверждение в контексте. Если нет — блокируем ответ. Такой подход снижает галлюцинации до минимума.
Где модель пасует: на генерации креативных текстов (стихи, сценарии) — не для того ее тренировали. Также она слаба на сложных многошаговых рассуждениях: если вопрос требует логики вне контекста, лучше взять модель побольше или использовать технику Ulysses Sequence Parallelism.
OCC-RAG в экосистеме: интеграция с LangChain и llama.cpp
Вы можете вставить OCC-RAG в любой RAG-пайплайн вместо стандартного LLM. Пример с LangChain на Python:
from langchain_community.llms import LlamaCpp
llm = LlamaCpp(
model_path="occ-rag-1.7b-q4_k_m.gguf",
temperature=0.1,
max_tokens=256,
top_p=0.9,
n_ctx=2048,
n_gpu_layers=50, # если есть GPU
)
# Документ-контекст
docs = ["Ключевая ставка ЦБ на 21 июня 2026 года — 18%."]
query = "Какой размер ключевой ставки на сегодня?"
# Формируем промпт
prompt = f"Контекст: {docs[0]}\nВопрос: {query}"
print(llm.invoke(prompt))
# Вывод: Согласно контексту, ключевая ставка ЦБ на 21 июня 2026 года составляет 18%.Просто, дешево, сердито. Для сравнения: если использовать обычный Llama 3.2 1B на том же промпте, он может ответить "Ключевая ставка ЦБ РФ — 16%" (старые знания) или "Извините, я не знаю" — полный рандом. OCC-RAG так не работает.
Кому стоит попробовать OCC-RAG прямо сейчас
Если вы:
- строите локальный RAG на слабом железе (CPU, Raspberry Pi, старый ноутбук);
- хотите, чтобы бот отвечал строго по загруженным документам, а не "как в интернете";
- устали бороться с галлюцинациями LLM и готовы попробовать специализированную SLM;
- исследуете новые подходы к faithfulness (например, LLM-as-a-judge для оценки RAG);
- работаете с русскоязычными текстами — OCC-RAM обучали на большом корпусе русского языка.
Тогда качайте полный гайд по запуску OCC-RAG и пробуйте. Если же вам нужна модель с памятью для длинных диалогов — присмотритесь к SMART SLM.
Одна маленькая ложка дегтя: OCC-RAG пока не умеет обрабатывать длинные контексты (ограничение 2048 токенов). В эпоху 128K это кажется анахронизмом. Но для типовых RAG-задач, где извлекается один абзац, этого хватает. Если нужно работать с длинными документами — придется резать их на куски или использовать контекстный профилировщик для сжатия.
И последнее: не ждите от 0.6B чудесных рассуждений — это инструмент для точного цитирования, а не для философских бесед. Но именно такие узкоспециализированные модели и становятся настоящими рабочими лошадками RAG. OCC-RAG — это не "очередной LLM", а первый серьезный шаг к тому, чтобы маленькие модели наконец-то перестали врать.