RAG-система

Материал из MachineLearning.

Версия от 21:51, 2 июля 2026; Dan-Кhaiaa Lakpazhap (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Генерация с дополненной выборкой (англ. Retrieval-Augmented Generation, сокр. RAG) — метод в обработке естественного языка и машинном обучении, объединяющий информационный поиск и генеративные языковые модели для создания текстов, основанных на внешних знаниях. В отличие от обычных глубоких нейросетей, которые полагаются исключительно на информацию, зафиксированную в их параметрах на этапе обучения, RAG-система в момент генерации ответа динамически извлекает релевантные документы из заранее подготовленной базы знаний (например, Википедии или корпоративного хранилища) и использует их как контекст. Это позволяет уменьшить галлюцинации (вымышленные факты) и актуализировать ответ без переобучения всей модели.

Метод был предложен в 2020 году Патриком Льюисом и коллегами из Facebook AI Research (ныне Meta AI)Шаблон:Sfn и с тех пор стал одной из ключевых парадигм современного глубокого обучения, особенно в задачах, требующих фактологической точности: вопросно-ответных системах, диалоговых агентах и инструментах для автоматического реферирования. Архитектура RAG находится на стыке статистики и машинного обучения: она опирается на вероятностное моделирование последовательностей, но вводит дискретный латентный механизм доступа к памяти, оптимизируемый сквозным образом (англ. end-to-end).

Содержание

Основная идея

Представьте себе студента на экзамене, которому разрешено пользоваться библиотекой. Он может не помнить точную дату исторического события, но способен быстро найти нужный учебник, прочитать абзац и сформулировать грамотный ответ. RAG работает аналогично: генеративная трансформерная модель (студент) получает от поискового модуля несколько релевантных отрывков (учебников) и на их основе генерирует итоговый текст. Такой подход позволяет «отвязать» знания от параметров сети: факты хранятся в явном виде в индексе, и их можно обновлять независимо, просто заменив документы.

С точки зрения машинного обучения, RAG формализует идею дополнения языковой модели непараметрической памятью. Параметрическая часть (генератор) обучается преобразовывать запрос и найденный контекст в ответ, а непараметрическая (индекс документов) выступает в роли внешней базы знаний. Обучение при этом часто происходит сквозным образом: сигнал от ошибки генерации передаётся и в генератор, и в поисковый модуль, заставляя последний находить более полезные документы.

Архитектура

Классическая RAG-система состоит из трёх главных компонентов: модуля поиска (англ. retriever), генератора (англ. generator) и механизма объединения информации.

Модуль поиска (Retriever)

Задача retriever’а — по входному тексту x (например, вопросу пользователя) вернуть K наиболее релевантных документов из заранее проиндексированного корпуса \mathcal{Z}. Чаще всего используется плотный поиск (англ. dense retrieval), основанный на архитектуре двух энкодеров (англ. bi-encoder):

  • Документный энкодер d(z) превращает каждый документ z \in \mathcal{Z} в вектор фиксированной размерности.
  • Запросный энкодер q(x) вычисляет эмбеддинг входного запроса.

Релевантность оценивается косинусным сходством: p_\eta(z|x) \propto \exp\left( d(z)^\top q(x) \right). Индекс всех документов обычно хранится в виде матрицы, для которой с помощью FAISS или аналогичных библиотек выполняется поиск приближённых ближайших соседей. Эффективность плотного поиска была продемонстрирована в модели Dense Passage Retrieval (DPR)Шаблон:Sfn, которая стала стандартным компонентом многих RAG-реализаций.

В более простых системах могут использоваться разреженные классические методы вроде BM25, однако они не обучаются сквозным образом и обычно уступают плотным аналогам при совместной оптимизации.

Генератор (Generator)

Генератор — это, как правило, предварительно обученная sequence-to-sequence (seq2seq) модель (BART, T5 или авторегрессионный GPT), которая получает на вход объединённые строку запроса x и тексты извлечённых документов z_1, \dots, z_K. Её задача — выдать целевую последовательность y. В отличие от обычной языковой модели, генератор в RAG учится явно учитывать найденный контекст, что сближает его с архитектурами, читающими текст (англ. reading comprehension).

Объединение информации

Способ, которым генератор использует документы, определяет две базовые разновидности RAG, предложенные в пионерской работеШаблон:Sfn:

  • RAG-Sequence — использует один и тот же документ z для порождения всей целевой последовательности y. Вероятность ответа вычисляется как взвешенная сумма по всем отобранным документам:
 p_{\text{RAG-Seq}}(y|x) = \sum_{z \in \text{Top-K}(p_\eta(\cdot|x))} p_\eta(z|x) \, p_\theta(y | x, z),
 где p_\theta(y|x,z) = \prod_{t} p_\theta(y_t | x, z, y_{<t}).
  • RAG-Token — допускает, что разные токены ответа могут опираться на разные документы. Для каждого генерируемого токена выполняется маргинализация по всем отобранным документам:
 p_{\text{RAG-Tok}}(y|x) = \prod_{t=1}^{T} \sum_{z \in \text{Top-K}(p_\eta(\cdot|x))} p_\eta(z|x) \, p_\theta(y_t | x, z, y_{<t}).

RAG-Token даёт генератору бо́льшую гибкость, но требует больше вычислений. На практике K обычно выбирают небольшим (5–10 документов).

Математическая формализация и обучение

Пусть имеется обучающая выборка пар «запрос – целевой ответ» \{(x_i, y_i)\}. RAG максимизирует логарифмическое правдоподобие правильных ответов: \mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N} \log p(y_i | x_i).

Ключевой технический вызов — вычисление градиента по параметрам \eta поискового модуля. Поскольку суммирование ведётся по документам из топ-K, а сам индекс \mathcal{Z} может содержать миллионы элементов, сквозное обратное распространение на все документы вычислительно невозможно. В классической RAG применяется схема с асинхронным обновлением индекса: векторы документов пересчитываются лишь периодически, тогда как запросный энкодер q(x) обновляется на каждом шаге градиентным спуском, а градиент через дискретную операцию выбора top-K «просачивается» благодаря тому, что p_\eta(z|x) входит в итоговую сумму в явном виде как вес. Фактически, модель учится повышать вероятности тех документов, которые приводят к успешной генерации правильного ответа, что реализует форму обучения с подкреплением или контрастивного обучения (англ. 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).

Ограничения:

  • Качество поиска. Если релевантный документ не попал в топ-K, ответ может оказаться неверным или устаревшим.
  • Зашумлённость контекста. Слишком большое количество извлечённых документов может сбить генератор с толку и ухудшить качество.
  • Зависимость от индекса. Построение и обновление плотного индекса для миллиардов документов требует значительных вычислительных ресурсов и инженерной инфраструктуры.
  • Склонность к «копированию». Генератор может дословно заимствовать фрагменты из найденных текстов, что нежелательно в задачах реферирования.

Активные исследования направлены на преодоление именно этих ограничений — через адаптивный поиск, фильтрацию документов и улучшенные стратегии слияния информации.

См. также

Примечания


Литература

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.