|
|
| (9 промежуточных версий не показаны.) |
| Строка 1: |
Строка 1: |
| - | '''Генерация с дополненной выборкой''' (англ. ''Retrieval-Augmented Generation'', сокр. '''RAG''') — метод в [[Обработка естественного языка|обработке естественного языка]] и [[Машинное обучение|машинном обучении]], объединяющий [[Информационный поиск|информационный поиск]] и [[Языковая модель|генеративные языковые модели]] для создания текстов, основанных на внешних знаниях. В отличие от обычных [[Глубокая нейронная сеть|глубоких нейросетей]], которые полагаются исключительно на информацию, зафиксированную в их параметрах на этапе обучения, RAG-система в момент генерации ответа динамически извлекает релевантные документы из заранее подготовленной базы знаний (например, [[Википедия|Википедии]] или корпоративного хранилища) и использует их как контекст. Это позволяет уменьшить [[Галлюцинация (искусственный интеллект)|галлюцинации]] (вымышленные факты) и актуализировать ответ без переобучения всей модели.
| + | #REDIRECT [[RAG]] |
| - | | + | |
| - | Метод был предложен в 2020 году Патриком Льюисом и коллегами из Facebook AI Research (ныне Meta AI){{sfn|lewis2020}} и с тех пор стал одной из ключевых парадигм современного [[Глубокое обучение|глубокого обучения]], особенно в задачах, требующих фактологической точности: [[Вопросно-ответная система|вопросно-ответных системах]], [[Диалоговая система|диалоговых агентах]] и инструментах для автоматического реферирования. Архитектура RAG находится на стыке [[Статистика|статистики]] и машинного обучения: она опирается на вероятностное моделирование последовательностей, но вводит дискретный латентный механизм доступа к памяти, оптимизируемый сквозным образом (англ. ''end-to-end'').
| + | |
| - | | + | |
| - | == Основная идея ==
| + | |
| - | Представьте себе студента на экзамене, которому разрешено пользоваться библиотекой. Он может не помнить точную дату исторического события, но способен быстро найти нужный учебник, прочитать абзац и сформулировать грамотный ответ. RAG работает аналогично: генеративная [[Трансформер (модель машинного обучения)|трансформерная]] модель (студент) получает от поискового модуля несколько релевантных отрывков (учебников) и на их основе генерирует итоговый текст. Такой подход позволяет «отвязать» знания от параметров сети: факты хранятся в явном виде в индексе, и их можно обновлять независимо, просто заменив документы.
| + | |
| - | | + | |
| - | С точки зрения машинного обучения, RAG формализует идею ''дополнения языковой модели непараметрической памятью''. Параметрическая часть (генератор) обучается преобразовывать запрос и найденный контекст в ответ, а непараметрическая (индекс документов) выступает в роли внешней базы знаний. Обучение при этом часто происходит сквозным образом: сигнал от ошибки генерации передаётся и в генератор, и в поисковый модуль, заставляя последний находить более полезные документы.
| + | |
| - | | + | |
| - | == Архитектура ==
| + | |
| - | Классическая RAG-система состоит из трёх главных компонентов: модуля поиска (англ. ''retriever''), генератора (англ. ''generator'') и механизма объединения информации.
| + | |
| - | | + | |
| - | === Модуль поиска (Retriever) ===
| + | |
| - | Задача retriever’а — по входному тексту <tex>x</tex> (например, вопросу пользователя) вернуть <tex>K</tex> наиболее релевантных документов из заранее проиндексированного корпуса <tex>\mathcal{Z}</tex>. Чаще всего используется ''плотный поиск'' (англ. ''dense retrieval''), основанный на архитектуре двух [[Кодировщик-декодировщик|энкодеров]] (англ. ''bi-encoder''):
| + | |
| - | * '''Документный энкодер''' <tex>d(z)</tex> превращает каждый документ <tex>z \in \mathcal{Z}</tex> в вектор фиксированной размерности.
| + | |
| - | * '''Запросный энкодер''' <tex>q(x)</tex> вычисляет эмбеддинг входного запроса.
| + | |
| - | | + | |
| - | Релевантность оценивается [[Косинусное сходство|косинусным сходством]]:
| + | |
| - | <tex>p_\eta(z|x) \propto \exp\left( d(z)^\top q(x) \right).</tex>
| + | |
| - | Индекс всех документов обычно хранится в виде матрицы, для которой с помощью [[FAISS]] или аналогичных библиотек выполняется поиск приближённых ближайших соседей. Эффективность плотного поиска была продемонстрирована в модели Dense Passage Retrieval (DPR){{sfn|karpukhin2020}}, которая стала стандартным компонентом многих RAG-реализаций.
| + | |
| - | | + | |
| - | В более простых системах могут использоваться разреженные классические методы вроде [[BM25]], однако они не обучаются сквозным образом и обычно уступают плотным аналогам при совместной оптимизации.
| + | |
| - | | + | |
| - | === Генератор (Generator) ===
| + | |
| - | Генератор — это, как правило, предварительно обученная [[Seq2seq|sequence-to-sequence]] (seq2seq) модель ([[BART]], [[T5]] или авторегрессионный [[GPT]]), которая получает на вход объединённые строку запроса <tex>x</tex> и тексты извлечённых документов <tex>z_1, \dots, z_K</tex>. Её задача — выдать целевую последовательность <tex>y</tex>. В отличие от обычной языковой модели, генератор в RAG учится явно учитывать найденный контекст, что сближает его с архитектурами, читающими текст (англ. ''reading comprehension'').
| + | |
| - | | + | |
| - | === Объединение информации ===
| + | |
| - | Способ, которым генератор использует документы, определяет две базовые разновидности RAG, предложенные в пионерской работе{{sfn|lewis2020}}:
| + | |
| - | * '''RAG-Sequence''' — использует ''один и тот же'' документ <tex>z</tex> для порождения всей целевой последовательности <tex>y</tex>. Вероятность ответа вычисляется как взвешенная сумма по всем отобранным документам:
| + | |
| - | <tex>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),</tex>
| + | |
| - | где <tex>p_\theta(y|x,z) = \prod_{t} p_\theta(y_t | x, z, y_{<t}).</tex>
| + | |
| - | * '''RAG-Token''' — допускает, что разные токены ответа могут опираться на ''разные'' документы. Для каждого генерируемого токена выполняется маргинализация по всем отобранным документам:
| + | |
| - | <tex>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}).</tex>
| + | |
| - | | + | |
| - | RAG-Token даёт генератору бо́льшую гибкость, но требует больше вычислений. На практике <tex>K</tex> обычно выбирают небольшим (5–10 документов).
| + | |
| - | | + | |
| - | == Математическая формализация и обучение ==
| + | |
| - | Пусть имеется обучающая выборка пар «запрос – целевой ответ» <tex>\{(x_i, y_i)\}</tex>. RAG максимизирует логарифмическое правдоподобие правильных ответов:
| + | |
| - | <tex>\mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N} \log p(y_i | x_i).</tex>
| + | |
| - | | + | |
| - | Ключевой технический вызов — вычисление градиента по параметрам <tex>\eta</tex> поискового модуля. Поскольку суммирование ведётся по документам из топ-<tex>K</tex>, а сам индекс <tex>\mathcal{Z}</tex> может содержать миллионы элементов, сквозное [[Обратное распространение ошибки|обратное распространение]] на все документы вычислительно невозможно. В классической RAG применяется схема с ''асинхронным обновлением индекса'': векторы документов пересчитываются лишь периодически, тогда как запросный энкодер <tex>q(x)</tex> обновляется на каждом шаге градиентным спуском, а градиент через дискретную операцию выбора top-<tex>K</tex> «просачивается» благодаря тому, что <tex>p_\eta(z|x)</tex> входит в итоговую сумму в явном виде как вес. Фактически, модель учится повышать вероятности тех документов, которые приводят к успешной генерации правильного ответа, что реализует форму [[Обучение с подкреплением|обучения с подкреплением]] или контрастивного обучения (англ. ''contrastive learning'') без явного REINFORCE.
| + | |
| - | | + | |
| - | Позднее в моделях REALM{{sfn|guu2020}} и Atlas{{sfn|izacard2022atlas}} использовался полностью сквозной контрастивный loss для retriever’а, где положительными примерами служат документы, содержащие правильный ответ, а отрицательными — все остальные. Генератор при этом обучается стандартным методом учителя (англ. ''teacher forcing'') на основе правильно найденных документов.
| + | |
| - | | + | |
| - | == Варианты и развитие метода ==
| + | |
| - | С момента появления оригинального RAG предложено множество усовершенствований, превративших его в обширное семейство методов.
| + | |
| - | | + | |
| - | * '''REALM''' (Guu et al., 2020{{sfn|guu2020}}) — предшественник RAG, в котором поиск знаний был встроен в процесс предобучения языковой модели. REALM показал, что сквозное обучение retriever’а улучшает качество ответов на вопросы.
| + | |
| - | * '''FiD (Fusion-in-Decoder)''' (Izacard & Grave, 2021{{sfn|izacard2021fid}}) — генератор обрабатывает все извлечённые документы независимо кодировщиком, а перекрёстное внимание к ним осуществляется только в декодере. Это позволяет масштабировать количество документов до сотни без взрывного роста вычислительной сложности.
| + | |
| - | * '''RETRO''' (Borgeaud et al., 2022{{sfn|borgeaud2022}}) — демонстрирует, что механизм поиска можно интегрировать в архитектуру авторегрессионного трансформера через блоки фрагментированного перекрёстного внимания (англ. ''chunked cross-attention'') к ближайшим соседям, извлечённым из гигантского хранилища токенов. RETRO, обладая в 25 раз меньшим числом параметров, сравнялся по качеству с моделью GPT-3.
| + | |
| - | * '''Atlas''' (Izacard et al., 2022{{sfn|izacard2022atlas}}) — специализирован на обучении по нескольким примерам (англ. ''few-shot learning''). Совместно обучает ретривер и генератор с контрастивной функцией потерь, достигая высокой точности в задачах закрытого тестирования.
| + | |
| - | * '''Self-RAG''' (Asai et al., 2023{{sfn|asai2023}}) — модель обучается самостоятельно определять, ''нужен ли'' поиск для текущего шага генерации, и критически оценивать полезность найденных фрагментов. Это уменьшает число лишних запросов к индексу и повышает точность.
| + | |
| - | * '''Corrective RAG''' (Yan et al., 2024{{sfn|yan2024}}) — перед генерацией ответа проверяет релевантность извлечённых документов и, при необходимости, уточняет поисковый запрос, используя знания самой языковой модели.
| + | |
| - | * '''REPLUG''' (Shi et al., 2023{{sfn|shi2023}}) — позволяет применять RAG с ''чёрными ящиками'' (англ. ''black-box LLM''), когда доступ к параметрам генератора закрыт. Ретривер обучается отдельно, а генератор вызывается как внешний API.
| + | |
| - | * '''Graph RAG''' и многошаговые (англ. ''multi-hop'') варианты — включают в процесс поиска [[Граф знаний|графы знаний]] и итеративное переспрашивание, позволяя системе «рассуждать» с привлечением нескольких фактов.
| + | |
| - | | + | |
| - | Обширный обзор современного состояния области можно найти в работе Gao et al. (2023){{sfn|gao2023survey}}.
| + | |
| - | | + | |
| - | == Применения ==
| + | |
| - | RAG-системы нашли применение практически во всех сферах, где требуется фактологически точная генерация текста:
| + | |
| - | * '''Открытые вопросно-ответные системы''' — ответы на фактологические вопросы в режиме реального времени без тонкой настройки на конкретный домен.
| + | |
| - | * '''Диалоговые агенты и чат-боты''' — поддержка длинных диалогов с доступом к динамически обновляемым документам (техническая документация, базы знаний).
| + | |
| - | * '''Поисковое дополнение''' — генерация развёрнутых ответов прямо на странице результатов поиска (как в Bing Chat).
| + | |
| - | * '''Корпоративный искусственный интеллект''' — анализ внутренних документов компании с соблюдением конфиденциальности: документы хранятся в защищённом индексе, а генеративная модель может быть развёрнута локально.
| + | |
| - | * '''Научная и медицинская литература''' — помощь в реферировании, поиске связей между публикациями и составлении обзоров.
| + | |
| - | | + | |
| - | == Преимущества и ограничения ==
| + | |
| - | '''Преимущества:'''
| + | |
| - | * '''Фактологическая точность.''' Описанные факты можно явно проследить до исходного документа, что снижает вероятность галлюцинаций.
| + | |
| - | * '''Обновляемость.''' База знаний обновляется без переобучения модели (достаточно перестроить индекс).
| + | |
| - | * '''Интерпретируемость.''' Можно показать пользователю, на какой источник опирался ответ.
| + | |
| - | * '''Эффективность параметров.''' Относительно небольшая генеративная модель, оснащённая ретривером, способна конкурировать с гигантскими языковыми моделями (показано в RETRO{{sfn|borgeaud2022}}).
| + | |
| - | | + | |
| - | '''Ограничения:'''
| + | |
| - | * '''Качество поиска.''' Если релевантный документ не попал в топ-<tex>K</tex>, ответ может оказаться неверным или устаревшим.
| + | |
| - | * '''Зашумлённость контекста.''' Слишком большое количество извлечённых документов может сбить генератор с толку и ухудшить качество.
| + | |
| - | * '''Зависимость от индекса.''' Построение и обновление плотного индекса для миллиардов документов требует значительных вычислительных ресурсов и инженерной инфраструктуры.
| + | |
| - | * '''Склонность к «копированию».''' Генератор может дословно заимствовать фрагменты из найденных текстов, что нежелательно в задачах реферирования.
| + | |
| - | | + | |
| - | Активные исследования направлены на преодоление именно этих ограничений — через адаптивный поиск, фильтрацию документов и улучшенные стратегии слияния информации.
| + | |
| - | | + | |
| - | == См. также ==
| + | |
| - | * [[Глубокая нейронная сеть]]
| + | |
| - | * [[Языковая модель]]
| + | |
| - | * [[Трансформер (модель машинного обучения)]]
| + | |
| - | * [[Информационный поиск]]
| + | |
| - | * [[Обучение с учителем]]
| + | |
| - | * [[Галлюцинация (искусственный интеллект)]]
| + | |
| - | | + | |
| - | == Примечания ==
| + | |
| - | <references />
| + | |
| - | | + | |
| - | == Литература ==
| + | |
| - | <span id="lewis2020"></span> '''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.
| + | |
| - | | + | |
| - | <span id="karpukhin2020"></span> '''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.
| + | |
| - | | + | |
| - | <span id="guu2020"></span> '''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.
| + | |
| - | | + | |
| - | <span id="izacard2021fid"></span> '''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.
| + | |
| - | | + | |
| - | <span id="izacard2022atlas"></span> '''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.
| + | |
| - | | + | |
| - | <span id="borgeaud2022"></span> '''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.
| + | |
| - | | + | |
| - | <span id="asai2023"></span> '''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.
| + | |
| - | | + | |
| - | <span id="shi2023"></span> '''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.
| + | |
| - | | + | |
| - | <span id="yan2024"></span> '''Yan S.-Q., Gu S., Liu Z., Zhang Y., Yang Y., Hu X.''' Corrective Retrieval Augmented Generation // arXiv preprint arXiv:2401.15884. — 2024.
| + | |
| - | | + | |
| - | <span id="gao2023survey"></span> '''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.
| + | |