← На главную
Guides· 6/19/2026· 4 мин чтения

Модель на 1.7B параметров бьёт 32B по верности контексту — как запустить OCC-RAG от AIRI

AIRI выпустила OCC-RAG-0.6B и 1.7B — модели для RAG, которые отвечают строго по документам и бьют модели в 6 раз крупнее по faithfulness. Гайд по запуску.

Модель на 1.7B параметров бьёт 32B по верности контексту — как запустить OCC-RAG от AIRI
AI-assisted, edited by a human reviewer

Команда AIRI выпустила OCC-RAG-0.6B и OCC-RAG-1.7B — компактные модели, заточенные под одну задачу: отвечать строго по переданным документам и честно молчать, когда ответа в контексте нет. Если вы строите RAG-пайплайн и устали от галлюцинаций, это стоит попробовать.

Почему обычные модели плохо работают в RAG

Проблема не в размере модели, а в том, как она расставляет приоритеты. LLM обучены на огромных корпусах и по умолчанию доверяют собственной «памяти» больше, чем тексту в контексте. Когда контекст противоречит параметрическим знаниям модели — она часто игнорирует документ.

Классический пример от команды AIRI: в контексте написано «в 2022 году Шарль де Голль был избран первым президентом США». Вопрос — «Кто первый президент США?». Llama-3-8B отвечает «Джордж Вашингтон» (игнорирует контекст), Llama-3.2-1B галлюцинирует «Дональд Трамп», а OCC-RAG-1.7B отвечает «де Голль» — строго по источнику. Именно это называется faithfulness, и именно это нужно в корпоративных RAG-системах, где документ важнее энциклопедии.

Что внутри OCC-RAG

Модель обучена на трёх навыках одновременно.

Multi-hop рассуждение — собрать ответ из нескольких фрагментов контекста, связав факты между собой. Для этого авторы строили граф знаний из текстов методом Wikontic (триплеты «сущность — отношение — сущность») и генерировали вопросы, требующие нескольких шагов логики.

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

Калиброванный отказ — если ответа в контексте нет, модель говорит об этом явно, а не придумывает. Примеры для отказа генерировались так: брали исходный пример, удаляли из контекста нужный источник, проверяли DeBERTa (дообученной на SQuAD), что ответ действительно исчез — и помечали как «требует отказа».

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

Как запустить модель

Оба чекпойнта доступны на Hugging Face. Есть стандартные веса, ONNX- и GGUF-сборки для локального запуска.

Установка зависимостей:

``bash pip install transformers torch ``

Базовый запуск через transformers:

```python from transformers import AutoTokenizer, AutoModelForCausalLM import torch

model_id = "AIRI-Institute/OCC-RAG-1.7B" # или OCC-RAG-0.6B

tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, torch_dtype=torch.bfloat16, device_map="auto" )

context = """ Согласно отчёту за Q1 2025, выручка компании составила 4,2 млрд рублей. Операционная прибыль выросла на 18% год к году. """

question = "Какова операционная прибыль компании по сравнению с прошлым годом?"

prompt = f"""Ответь на вопрос строго по контексту.

Контекст: {context}

Вопрос: {question} Ответ:"""

inputs = tokenizer(prompt, return_tensors="pt").to(model.device) outputs = model.generate(**inputs, max_new_tokens=256, do_sample=False) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ```

Для локального запуска через llama.cpp с GGUF-сборкой:

``bash ./llama-cli \ -m occ-rag-1.7b.gguf \ -p "Контекст: {ваш текст}\n\nВопрос: {вопрос}\nОтвет:" \ -n 256 \ --temp 0 ``

Флаг --temp 0 здесь принципиален: для задач faithfulness нужна детерминированная генерация, а не творческая.

Как встроить в RAG-пайплайн

OCC-RAG хорошо ложится на стандартную схему: retriever достаёт релевантные чанки, модель отвечает по ним. Ключевое отличие от обычного промптинга — модель сама цитирует источники в ответе, что упрощает верификацию.

Минимальная схема с langchain:

```python from langchain.chains import RetrievalQA from langchain_community.llms import HuggingFacePipeline from transformers import pipeline

pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer, max_new_tokens=256, do_sample=False )

llm = HuggingFacePipeline(pipeline=pipe)

retriever — ваш существующий компонент (FAISS, Chroma и т.д.)

qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=retriever, return_source_documents=True )

result = qa_chain.invoke({"query": "Ваш вопрос"}) print(result["result"]) ```

Системный промпт менять не нужно — модель обучена работать с контекстом в стандартном формате.

Где это ломается

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

Очень длинный контекст. Модели компактные — окно контекста ограничено. При большом числе чанков качество multi-hop рассуждения деградирует. Оптимальный размер контекста — проверяйте на своей задаче, начните с 2-4 чанков по 512 токенов.

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

Температура выше нуля. При temperature > 0 модель начинает «творить» — faithfulness падает. Для продакшена используйте жадную генерацию (do_sample=False).

Что попробовать дальше

Сравните OCC-RAG-0.6B и 1.7B на вашем бенчмарке — авторы утверждают, что 0.6B уже конкурирует с моделями общего назначения в 2-3 раза крупнее. Если ресурсы ограничены, это может быть достаточно.

Посмотрите на ONNX-сборку для инференса без GPU — для корпоративных RAG-систем, где нужна предсказуемая задержка, это практичный вариант. Оба чекпойнта и сборки доступны на странице AIRI-Institute на Hugging Face.

Источники

By: PLai AI