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
└─ Да → финальный ответ
- Запрос. Пользователь задает вопрос.
- Первичная генерация. Модель начинает строить ответ и по reflection signals определяет, нужен ли внешний контекст.
- Adaptive retrieval. Если внешние данные нужны, модель запрашивает passages. Если не нужны, retrieval можно пропустить.
- Генерация сегмента. Модель пишет очередной кусок ответа с учетом найденных passages или без них.
- Critique. Модель оценивает собственный промежуточный вывод через self-reflection.
- Повтор цикла. При необходимости 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» пайплайна.
Практический пример
Сценарий: вы делаете помощника по внутренней документации. Одни вопросы он должен отвечать сразу, другие — только после обращения к базе.
- Пользователь задает вопрос в чат.
- Модель начинает формировать ответ.
- Если для ответа не хватает уверенности или подтверждающих passages, модель инициирует retrieval.
- Полученные passages встраиваются в следующий сегмент ответа.
- Затем включается self-critique: достаточно ли опоры на документы, не нужен ли еще один retrieval.
- Если нужен — цикл повторяется. Если нет — модель завершает ответ.
Для практиков важен еще один момент: официальная карточка 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 реальную прибавку именно в вашей задаче.
Связанные материалы
- RAG (Retrieval-Augmented Generation) — базовый термин, без которого Self-RAG легко трактовать слишком широко.
- Как собрать RAG-систему: пошагово — если вам нужен практический старт до экспериментов с более сложной логикой retrieval.
- Flowise: визуальный конструктор для RAG и LLM-агентов — полезен, если вы сначала хотите быстро проверить сам RAG-сценарий без глубокого кода.
Источники
- GitHub – AkariAsai/self-rag
- Self-RAG
- arXiv:2310.11511 [cs.CL]
- selfrag/selfrag_llama2_7b · Hugging Face
- selfrag/selfrag_llama2_13b · Hugging Face
- selfrag/selfrag_train_data · Hugging Face Datasets
- Releases · AkariAsai/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 отсутствуют. Если вам важна воспроизводимость, проверяйте состояние репозитория и карточек моделей вручную.