RAG-система
Материал из MachineLearning.
Генерация с дополненной выборкой (англ. Retrieval-Augmented Generation, сокр. RAG) — метод в обработке естественного языка и машинном обучении, объединяющий информационный поиск и генеративные языковые модели для создания текстов, основанных на внешних знаниях. В отличие от обычных глубоких нейросетей, которые полагаются исключительно на информацию, зафиксированную в их параметрах на этапе обучения, RAG-система в момент генерации ответа динамически извлекает релевантные документы из заранее подготовленной базы знаний (например, Википедии или корпоративного хранилища) и использует их как контекст. Это позволяет уменьшить галлюцинации (вымышленные факты) и актуализировать ответ без переобучения всей модели.
Метод был предложен в 2020 году Патриком Льюисом и коллегами из Facebook AI Research (ныне Meta AI)Шаблон:Sfn и с тех пор стал одной из ключевых парадигм современного глубокого обучения, особенно в задачах, требующих фактологической точности: вопросно-ответных системах, диалоговых агентах и инструментах для автоматического реферирования. Архитектура RAG находится на стыке статистики и машинного обучения: она опирается на вероятностное моделирование последовательностей, но вводит дискретный латентный механизм доступа к памяти, оптимизируемый сквозным образом (англ. end-to-end).
Содержание |
Основная идея
Представьте себе студента на экзамене, которому разрешено пользоваться библиотекой. Он может не помнить точную дату исторического события, но способен быстро найти нужный учебник, прочитать абзац и сформулировать грамотный ответ. RAG работает аналогично: генеративная трансформерная модель (студент) получает от поискового модуля несколько релевантных отрывков (учебников) и на их основе генерирует итоговый текст. Такой подход позволяет «отвязать» знания от параметров сети: факты хранятся в явном виде в индексе, и их можно обновлять независимо, просто заменив документы.
С точки зрения машинного обучения, RAG формализует идею дополнения языковой модели непараметрической памятью. Параметрическая часть (генератор) обучается преобразовывать запрос и найденный контекст в ответ, а непараметрическая (индекс документов) выступает в роли внешней базы знаний. Обучение при этом часто происходит сквозным образом: сигнал от ошибки генерации передаётся и в генератор, и в поисковый модуль, заставляя последний находить более полезные документы.
Архитектура
Классическая RAG-система состоит из трёх главных компонентов: модуля поиска (англ. retriever), генератора (англ. generator) и механизма объединения информации.
Модуль поиска (Retriever)
Задача retriever’а — по входному тексту (например, вопросу пользователя) вернуть
наиболее релевантных документов из заранее проиндексированного корпуса
. Чаще всего используется плотный поиск (англ. dense retrieval), основанный на архитектуре двух энкодеров (англ. bi-encoder):
- Документный энкодер
превращает каждый документ
в вектор фиксированной размерности.
- Запросный энкодер
вычисляет эмбеддинг входного запроса.
Релевантность оценивается косинусным сходством:
Индекс всех документов обычно хранится в виде матрицы, для которой с помощью FAISS или аналогичных библиотек выполняется поиск приближённых ближайших соседей. Эффективность плотного поиска была продемонстрирована в модели Dense Passage Retrieval (DPR)Шаблон:Sfn, которая стала стандартным компонентом многих RAG-реализаций.
В более простых системах могут использоваться разреженные классические методы вроде BM25, однако они не обучаются сквозным образом и обычно уступают плотным аналогам при совместной оптимизации.
Генератор (Generator)
Генератор — это, как правило, предварительно обученная sequence-to-sequence (seq2seq) модель (BART, T5 или авторегрессионный GPT), которая получает на вход объединённые строку запроса и тексты извлечённых документов
. Её задача — выдать целевую последовательность
. В отличие от обычной языковой модели, генератор в RAG учится явно учитывать найденный контекст, что сближает его с архитектурами, читающими текст (англ. reading comprehension).
Объединение информации
Способ, которым генератор использует документы, определяет две базовые разновидности RAG, предложенные в пионерской работеШаблон:Sfn:
- RAG-Sequence — использует один и тот же документ
для порождения всей целевой последовательности
. Вероятность ответа вычисляется как взвешенная сумма по всем отобранным документам:
где
![]()
- RAG-Token — допускает, что разные токены ответа могут опираться на разные документы. Для каждого генерируемого токена выполняется маргинализация по всем отобранным документам:
RAG-Token даёт генератору бо́льшую гибкость, но требует больше вычислений. На практике обычно выбирают небольшим (5–10 документов).
Математическая формализация и обучение
Пусть имеется обучающая выборка пар «запрос – целевой ответ» . RAG максимизирует логарифмическое правдоподобие правильных ответов:
Ключевой технический вызов — вычисление градиента по параметрам поискового модуля. Поскольку суммирование ведётся по документам из топ-
, а сам индекс
может содержать миллионы элементов, сквозное обратное распространение на все документы вычислительно невозможно. В классической RAG применяется схема с асинхронным обновлением индекса: векторы документов пересчитываются лишь периодически, тогда как запросный энкодер
обновляется на каждом шаге градиентным спуском, а градиент через дискретную операцию выбора top-
«просачивается» благодаря тому, что
входит в итоговую сумму в явном виде как вес. Фактически, модель учится повышать вероятности тех документов, которые приводят к успешной генерации правильного ответа, что реализует форму обучения с подкреплением или контрастивного обучения (англ. contrastive learning) без явного REINFORCE.
Позднее в моделях REALMШаблон:Sfn и AtlasШаблон:Sfn использовался полностью сквозной контрастивный loss для retriever’а, где положительными примерами служат документы, содержащие правильный ответ, а отрицательными — все остальные. Генератор при этом обучается стандартным методом учителя (англ. teacher forcing) на основе правильно найденных документов.
Варианты и развитие метода
С момента появления оригинального RAG предложено множество усовершенствований, превративших его в обширное семейство методов.
- REALM (Guu et al., 2020Шаблон:Sfn) — предшественник RAG, в котором поиск знаний был встроен в процесс предобучения языковой модели. REALM показал, что сквозное обучение retriever’а улучшает качество ответов на вопросы.
- FiD (Fusion-in-Decoder) (Izacard & Grave, 2021Шаблон:Sfn) — генератор обрабатывает все извлечённые документы независимо кодировщиком, а перекрёстное внимание к ним осуществляется только в декодере. Это позволяет масштабировать количество документов до сотни без взрывного роста вычислительной сложности.
- RETRO (Borgeaud et al., 2022Шаблон:Sfn) — демонстрирует, что механизм поиска можно интегрировать в архитектуру авторегрессионного трансформера через блоки фрагментированного перекрёстного внимания (англ. chunked cross-attention) к ближайшим соседям, извлечённым из гигантского хранилища токенов. RETRO, обладая в 25 раз меньшим числом параметров, сравнялся по качеству с моделью GPT-3.
- Atlas (Izacard et al., 2022Шаблон:Sfn) — специализирован на обучении по нескольким примерам (англ. few-shot learning). Совместно обучает ретривер и генератор с контрастивной функцией потерь, достигая высокой точности в задачах закрытого тестирования.
- Self-RAG (Asai et al., 2023Шаблон:Sfn) — модель обучается самостоятельно определять, нужен ли поиск для текущего шага генерации, и критически оценивать полезность найденных фрагментов. Это уменьшает число лишних запросов к индексу и повышает точность.
- Corrective RAG (Yan et al., 2024Шаблон:Sfn) — перед генерацией ответа проверяет релевантность извлечённых документов и, при необходимости, уточняет поисковый запрос, используя знания самой языковой модели.
- REPLUG (Shi et al., 2023Шаблон:Sfn) — позволяет применять RAG с чёрными ящиками (англ. black-box LLM), когда доступ к параметрам генератора закрыт. Ретривер обучается отдельно, а генератор вызывается как внешний API.
- Graph RAG и многошаговые (англ. multi-hop) варианты — включают в процесс поиска графы знаний и итеративное переспрашивание, позволяя системе «рассуждать» с привлечением нескольких фактов.
Обширный обзор современного состояния области можно найти в работе Gao et al. (2023)Шаблон:Sfn.
Применения
RAG-системы нашли применение практически во всех сферах, где требуется фактологически точная генерация текста:
- Открытые вопросно-ответные системы — ответы на фактологические вопросы в режиме реального времени без тонкой настройки на конкретный домен.
- Диалоговые агенты и чат-боты — поддержка длинных диалогов с доступом к динамически обновляемым документам (техническая документация, базы знаний).
- Поисковое дополнение — генерация развёрнутых ответов прямо на странице результатов поиска (как в Bing Chat).
- Корпоративный искусственный интеллект — анализ внутренних документов компании с соблюдением конфиденциальности: документы хранятся в защищённом индексе, а генеративная модель может быть развёрнута локально.
- Научная и медицинская литература — помощь в реферировании, поиске связей между публикациями и составлении обзоров.
Преимущества и ограничения
Преимущества:
- Фактологическая точность. Описанные факты можно явно проследить до исходного документа, что снижает вероятность галлюцинаций.
- Обновляемость. База знаний обновляется без переобучения модели (достаточно перестроить индекс).
- Интерпретируемость. Можно показать пользователю, на какой источник опирался ответ.
- Эффективность параметров. Относительно небольшая генеративная модель, оснащённая ретривером, способна конкурировать с гигантскими языковыми моделями (показано в RETROШаблон:Sfn).
Ограничения:
- Качество поиска. Если релевантный документ не попал в топ-
, ответ может оказаться неверным или устаревшим.
- Зашумлённость контекста. Слишком большое количество извлечённых документов может сбить генератор с толку и ухудшить качество.
- Зависимость от индекса. Построение и обновление плотного индекса для миллиардов документов требует значительных вычислительных ресурсов и инженерной инфраструктуры.
- Склонность к «копированию». Генератор может дословно заимствовать фрагменты из найденных текстов, что нежелательно в задачах реферирования.
Активные исследования направлены на преодоление именно этих ограничений — через адаптивный поиск, фильтрацию документов и улучшенные стратегии слияния информации.
См. также
- Глубокая нейронная сеть
- Языковая модель
- Трансформер (модель машинного обучения)
- Информационный поиск
- Обучение с учителем
- Галлюцинация (искусственный интеллект)
Примечания
Литература
Lewis P., Perez E., Piktus A., Petroni F., Karpukhin V., Goyal N., … , Kiela D. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks // Advances in Neural Information Processing Systems 33 (NeurIPS 2020). — 2020. — P. 9459–9474.
Karpukhin V., Oğuz B., Min S., Lewis P., Wu L., Edunov S., … , Yih W.-t. Dense Passage Retrieval for Open-Domain Question Answering // Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). — 2020. — P. 6769–6781.
Guu K., Lee K., Tung Z., Pasupat P., Chang M.-W. REALM: Retrieval-Augmented Language Model Pre-Training // Proceedings of the 37th International Conference on Machine Learning (ICML). — 2020.
Izacard G., Grave E. Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering // Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics (EACL). — 2021. — P. 874–880.
Izacard G., Lewis P., Lomeli M., Hosseini L., Petroni F., Schick T., … , Grave E. Atlas: Few-shot Learning with Retrieval Augmented Models // arXiv preprint arXiv:2208.03299. — 2022.
Borgeaud S., Mensch A., Hoffmann J., Cai T., Rutherford E., Millican K., … , Sifre L. Improving language models by retrieving from trillions of tokens // Proceedings of the 39th International Conference on Machine Learning (ICML). — 2022.
Asai A., Wu Z., Wang Y., Sil A., Hajishirzi H. Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection // arXiv preprint arXiv:2310.11511. — 2023.
Shi W., Min S., Yasunaga M., Seo M., James R., Lewis M., … , Yih W.-t. REPLUG: Retrieval-Augmented Black-Box Language Models // arXiv preprint arXiv:2301.12652. — 2023.
Yan S.-Q., Gu S., Liu Z., Zhang Y., Yang Y., Hu X. Corrective Retrieval Augmented Generation // arXiv preprint arXiv:2401.15884. — 2024.
Gao Y., Xiong Y., Gao X., Jia K., Pan J., Bi Y., … , Wang H. Retrieval-Augmented Generation for Large Language Models: A Survey // arXiv preprint arXiv:2312.10997. — 2023.

