COMRAD404 / GLOSSARY

Self-RAG

Self-RAG

Self-RAG — это framework, где одна языковая модель сама решает, когда выполнять retrieval, когда отвечать без поиска и когда критиковать свой черновик через reflection tokens.

TL;DR

Self-RAG — это framework, в котором одна языковая модель адаптивно решает, когда извлекать passages, когда генерировать ответ и когда критиковать свой вывод через reflection tokens.

Self-RAG — это framework для retrieval-augmented generation, в котором одна языковая модель учится по требованию извлекать passages, генерировать ответ и критиковать собственный вывод через reflection tokens. В отличие от фиксированного сценария «сначала поиск, потом ответ», Self-RAG может вообще не вызывать retrieval или делать его несколько раз по ходу ответа, если это нужно для задачи.

По официальному описанию Self-RAG обучает модель retrieve, generate, and critique through self-reflection. На странице проекта отдельно подчеркиваются adaptive on-demand retrieval и стратегия вывода с tree-decoding / segment-level beam search.

Английский термин: Self-RAG. В официальных материалах рядом встречаются формулировки self-reflection, reflection tokens, adaptive on-demand retrieval, а также описание retrieve, generate, and critique.

Простыми словами

Грубо говоря, Self-RAG можно представить как ассистента, который не лезет в базу знаний автоматически на каждый вопрос. Сначала он прикидывает, хватит ли ему уже имеющихся знаний для ответа, потом при необходимости идет за источниками, а после этого еще и проверяет собственный черновик.

Для обычного RAG типичный сценарий выглядит так: вы всегда сначала ищете документы, а потом кормите их модели. Self-RAG делает этот процесс более гибким: поиск становится не обязательным стартовым шагом, а инструментом, который модель вызывает по мере надобности.

Как это работает

Технически Self-RAG объединяет три действия внутри одной языковой модели: retrieval, generation и critique. Ключевая идея из официального репозитория и страницы проекта — модель использует reflection tokens, чтобы сигнализировать, когда ей нужен внешний passage, когда можно продолжать генерацию и когда стоит оценить собственный ответ.

Запрос пользователя
    ↓
Модель начинает ответ
    ↓
Решение: нужен ли retrieval?
    ├─ Нет → продолжить генерацию
    └─ Да  → получить passages
                ↓
           использовать passages в ответе
                ↓
           critique / self-reflection
                ↓
     Решение: достаточно ли данных?
        ├─ Нет → новый retrieval
        └─ Да  → финальный ответ
  1. Запрос. Пользователь задает вопрос.
  2. Первичная генерация. Модель начинает строить ответ и по reflection signals определяет, нужен ли внешний контекст.
  3. Adaptive retrieval. Если внешние данные нужны, модель запрашивает passages. Если не нужны, retrieval можно пропустить.
  4. Генерация сегмента. Модель пишет очередной кусок ответа с учетом найденных passages или без них.
  5. Critique. Модель оценивает собственный промежуточный вывод через self-reflection.
  6. Повтор цикла. При необходимости retrieval вызывается снова, после чего ответ дорабатывается.

Официальная страница проекта также упоминает tree-decoding и segment-level beam search как часть вывода. Практически это важно потому, что Self-RAG — не просто «поиск перед промптом», а отдельная схема inference, в которой промежуточные сигналы модели участвуют в выборе продолжения.

Где применяется

  • Ассистенты по базе знаний. Если часть вопросов можно закрыть без внешних документов, а часть требует точных passages, Self-RAG полезен тем, что retrieval можно не запускать автоматически.
  • Сценарии, где одного поиска мало. По официальному описанию Self-RAG может retrieve несколько раз. Это уместно там, где ответ собирается поэтапно, а одного прохода поиска недостаточно.
  • Исследовательские и прикладные эксперименты. Для Self-RAG доступны официальные checkpoints selfrag/selfrag_llama2_7b и selfrag/selfrag_llama2_13b, а также официальный датасет selfrag/selfrag_train_data.
  • Пайплайны, чувствительные к лишнему retrieval. Если вы хотите не дергать поиск на каждом запросе, идея adaptive on-demand retrieval может быть практичнее жесткого «search-first» пайплайна.

Практический пример

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

  1. Пользователь задает вопрос в чат.
  2. Модель начинает формировать ответ.
  3. Если для ответа не хватает уверенности или подтверждающих passages, модель инициирует retrieval.
  4. Полученные passages встраиваются в следующий сегмент ответа.
  5. Затем включается self-critique: достаточно ли опоры на документы, не нужен ли еще один retrieval.
  6. Если нужен — цикл повторяется. Если нет — модель завершает ответ.

Для практиков важен еще один момент: официальная карточка selfrag/selfrag_llama2_7b на Hugging Face опубликована под лицензией MIT и содержит примеры использования с Transformers и vLLM. В этих примерах вывод включает reflection-token markers вроде retrieve и critique, поэтому при интеграции имеет смысл смотреть не только на финальный текст, но и на промежуточные сигналы модели.

Если вы хотите сначала выстроить базовую механику retrieval, полезно освежить термин RAG (Retrieval-Augmented Generation): Self-RAG проще понять как следующий слой управления поверх этой базовой идеи.

Чем отличается от…

Подход Как работает с retrieval Чем отличается от Self-RAG
Классический RAG Обычно retrieval делается до генерации как обязательный шаг Self-RAG делает retrieval адаптивным: его можно пропустить или повторить несколько раз
Длинный контекст Документы просто помещаются в prompt или контекстное окно Self-RAG не сводится к увеличению контекста: у него есть отдельные сигналы retrieve и critique, а также on-demand retrieval
Однократный retrieval перед ответом Поиск выполняется один раз и дальше не пересматривается Self-RAG допускает повторный retrieval по ходу ответа и self-critique между сегментами

Если вы выбираете между большим контекстом и retrieval-подходом, пригодится материал Длинный контекст vs RAG: что выбрать.

Ограничения и заблуждения

  • Заблуждение: «Self-RAG — это любой RAG с постпроверкой». В официальных источниках речь идет не просто о внешнем валидаторе, а об обучении одной модели retrieve, generate и critique через self-reflection.
  • Заблуждение: «retrieval там обязателен всегда». Нет. Официальное описание прямо говорит, что модель может пропустить retrieval или вызывать его несколько раз.
  • Заблуждение: «self-critique гарантирует истинность». Источники описывают механизм critique, но не дают основания трактовать его как абсолютную гарантию корректности ответа.
  • Ограничение по данным. Официальная карточка датасета selfrag/selfrag_train_data указывает 145,619 строк, формат JSON, язык English и общий размер около 256 MB. Для русскоязычных сценариев это не запрет, но это явный повод отдельно проверять качество.
  • Ограничение по артефактам. Официальный репозиторий в разделе Updates отмечает initial release code, models and paper в 2023.10, но на странице GitHub Releases по состоянию на 2026-08-15 указано, что formal releases отсутствуют. Если вам нужна строгая версия для воспроизводимости, это нужно проверять вручную.
  • Ограничение по воспроизведению обучения. Карточка 7B-модели сообщает, что обучение использовало 8 A100 40GB GPUs на Stability HPC. Это не универсальное требование для любого inference-сценария, но полезный ориентир: полноценное воспроизведение обучения — не «легкий запуск на одной машине».

Редакционное ограничение: в исходном пакете есть официальный репозиторий, страница проекта, arXiv-препринт, карточки моделей и карточка датасета, но нет подтвержденной полной продакшен-документации с формальными versioned releases и коммерческими условиями эксплуатации. Поэтому этот материал описывает концепцию и официальные артефакты, а не зрелость enterprise-внедрения.

Практический вердикт: Self-RAG стоит рассматривать, когда вам нужен RAG-пайплайн, который сам решает, когда искать документы, и умеет встроить self-critique в генерацию. Если же у вас работает простой сценарий «один retrieval перед ответом», начинать обычно проще с базового RAG и только потом проверять, дает ли Self-RAG реальную прибавку именно в вашей задаче.

Связанные материалы

Источники

Вопросы и ответы

Self-RAG — это просто обычный RAG?

Нет. В официальных материалах Self-RAG описан как framework, где одна модель учится retrieve, generate и critique через self-reflection. Ключевое отличие — adaptive on-demand retrieval: поиск можно пропустить или повторить несколько раз.

Self-RAG — это агент?

По исходным источникам это прежде всего framework для retrieval, generation и critique внутри одной языковой модели. Его можно использовать в агентных сценариях, но сам термин Self-RAG не означает готовую агентную платформу.

Есть ли официальные готовые модели?

Да. Официально опубликованы checkpoints selfrag/selfrag_llama2_7b и selfrag/selfrag_llama2_13b. Карточка 7B-модели также содержит примеры для Transformers и vLLM.

Можно ли использовать Self-RAG на русском?

Экспериментировать можно, но официальный train dataset помечен как English и содержит 145,619 строк в JSON. Поэтому качество на русском не стоит считать подтвержденным без собственной проверки.

Есть ли у проекта формальные релизы и стабильное versioning?

Репозиторий отмечает initial release code, models and paper в 2023.10, но страница GitHub Releases по состоянию на 2026-08-15 сообщает, что releases отсутствуют. Если вам важна воспроизводимость, проверяйте состояние репозитория и карточек моделей вручную.

Источники

SOURCES

Вопросы и ответы

FAQ
Self-RAG — это просто обычный RAG?

Нет. В официальных материалах Self-RAG описан как framework, где одна модель учится retrieve, generate и critique через self-reflection. Поиск можно пропустить или повторить несколько раз.

Self-RAG — это агент?

По исходным источникам это прежде всего framework для retrieval, generation и critique внутри одной языковой модели. Сам по себе термин Self-RAG не означает готовую агентную платформу.

Есть ли официальные готовые модели Self-RAG?

Да. Официально опубликованы checkpoints selfrag/selfrag_llama2_7b и selfrag/selfrag_llama2_13b. Карточка 7B-модели также содержит примеры для Transformers и vLLM.

Можно ли использовать Self-RAG на русском?

Экспериментировать можно, но официальный train dataset помечен как English и содержит 145,619 строк в JSON. Поэтому качество на русском нужно проверять отдельно.

Есть ли у проекта формальные релизы и стабильное versioning?

Репозиторий отмечает initial release code, models and paper в 2023.10, но страница GitHub Releases по состоянию на 2026-08-15 сообщает, что releases отсутствуют. Для воспроизводимости состояние проекта нужно перепроверять вручную.

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

LINKS