RAG-система
Материал из MachineLearning.
| | Статья написана с использованием LLM DeepSeek-V4 и проверена участником Участник:Dan-Кhaiaa Lakpazhap 18:29, 30 июня 2026 (MSD).
Промпт приводится полностью в Обсуждение:Байесовский вывод. |
|
Retrieval-Augmented Generation ( англ. RAG) — это архитектурный подход в обработке естественного языка и машинном обучении, объединяющий предварительно обученные языковые модели с механизмом доступа к внешней, непараметрической памяти (англ. external memory) — базе знаний или коллекции документов. При генерации ответа модель сначала находит в этой памяти релевантные фрагменты информации (этап retrieval, поиск), а затем на их основе синтезирует итоговый текст (этап generation, генерация). Такой подход позволяет модели использовать актуальные факты, не заложенные в её параметры во время обучения, и существенно снижает частоту галлюцинаций[1]. Идея восходит к концепции открытой доменной вопросно-ответной системы, но в RAG она реализуется как дифференцируемый (англ. differentiable) сквозной процесс, доступный для обучения методами градиентного спуска.
Парадигма RAG заняла центральное место в современных больших языковых моделях (LLM), позволяя им обращаться к документальным источникам без увеличения числа обучаемых параметров. Её используют такие системы, как Microsoft Copilot, ChatGPT с веб-поиском, You.com и многие корпоративные ассистенты.
История и контекст
Предпосылки к появлению RAG возникли при решении задач, требующих опоры на внешние знания (knowledge-intensive tasks): открытый диалог, ответы на вопросы, проверка фактов. Классические нейросетевые модели хранили все знания в своих весах, что ограничивало их объём и делало обновление информации трудоёмким. Параллельно развивались два направления: информационный поиск и генеративные языковые модели. Первые нейронные системы, объединяющие их, — REALM[1] и RAG[1] — были предложены в 2020 году почти одновременно. REALM впервые показал, что поисковый модуль можно предобучить совместно с языковой моделью, а классический RAG от Facebook AI (Meta) популяризировал архитектуру, в которой документы извлекаются дискретно, но генерация ответа использует их как латентную переменную.
В последующие годы появились высокомасштабируемые варианты: RETRO[1] (DeepMind) использовал корпус из триллионов токенов, FiD (Fusion-in-Decoder)[1] предложил обрабатывать множество документов в энкодере-декодере, а Atlas[1] продемонстрировал эффективное малоизвестное обучение с помощью поиска. Параллельно Self-RAG[1] внедрил механизм, при котором модель сама решает, когда необходимо обращаться к поиску.
Постановка задачи и математическая основа
Пусть дан входной запрос (вопрос, инструкция) и требуется сгенерировать целевой ответ
. Традиционная генеративная модель параметризует распределение
напрямую. В RAG-подходе вводится латентная переменная
— релевантный документ (или несколько документов) из внешней коллекции
, которая может быть очень большой (миллиарды записей). Полное распределение маргинализируется по всем возможным документам:
где:
-
— вероятностная модель поиска (retriever), выдающая распределение над коллекцией для входного запроса;
-
— генеративная модель (generator), принимающая на вход запрос и извлечённый документ.
Поскольку прямое суммирование по всей коллекции вычислительно невозможно, на практике ограничиваются наиболее вероятными документами, полученными с помощью приближённого поиска (например, по максимальному внутреннему произведению, MIPS):
Генератор может использовать один документ (RAG-Sequence) или для каждого сгенерированного токена выбирать свой документ (RAG-Token). Последнее формализуется как:
В современных реализациях чаще применяют детерминированный подход: несколько релевантных фрагментов просто конкатенируются с запросом, образуя расширенный контекст, а генератор обучается как стандартная авторегрессионная модель на таких расширенных последовательностях.
Архитектура
Типичная RAG-система состоит из трёх ключевых компонентов.
Модуль поиска (Retriever)
Чаще всего используется двухкодировщик (dual encoder), отдельно преобразующий запрос и каждый документ
в векторы фиксированной размерности
:
,
. Релевантность оценивается как скалярное произведение (или косинусное сходство):
Модели поиска могут быть обучены на основе BERT-подобных энкодеров, например, DPR (Dense Passage Retrieval)[1]. Для ускорения поиска по многомиллионным коллекциям применяются библиотеки приближённого поиска ближайших соседей, такие как FAISS или ScaNN. Альтернативой плотному поиску служит разреженный (например, BM25), иногда используемый гибридно[1].
База знаний (внешняя память, англ. external memory)
Документы могут быть произвольными текстовыми сегментами (абзацы, статьи, таблицы), предварительно векторизованными и проиндексированными. Источниками служат Википедия, веб-страницы, корпоративные документы, графы знаний. Индексация может обновляться независимо от обучения генератора, что обеспечивает фактическую актуальность системы.
Генератор (Generator)
Генеративная часть — это обычно предварительно обученная модель архитектуры encoder-decoder (T5, BART) или decoder-only (GPT, LLaMA). Документы либо подаются в энкодер вместе с запросом (FiD-стиль), где каждый документ обрабатывается отдельно, а результаты объединяются в декодере, либо конкатенируются с запросом в единый промпт для декодера. Второй вариант проще в реализации и доминирует в коммерческих приложениях, но объём контекстного окна (англ. context window) ограничивает количество документов.
Обучение
Возможны несколько стратегий обучения компонентов RAG.
- Совместное сквозное обучение (end-to-end): веса и ретривера, и генератора обновляются одновременно. Так как выборка из дискретного набора документов недифференцируема, используют методы оценки градиентов, такие как REINFORCE или подход на основе латентных переменных, где градиент распространяется через маргинальное правдоподобие
и параметры
обновляются путём взвешивания правдоподобий документов из top-k. RAG и REALM показали эффективность такого обучения[1][1].
- Замораживание ретривера (frozen retriever): используется готовый, предварительно обученный поисковый модуль (например, на основе DPR или даже BM25), а генератор дообучается на задачах с извлечёнными документами. Это снижает вычислительные затраты и упрощает масштабирование. Так обучался Atlas[1], где ретривер периодически «освежается» асинхронно.
- Многоэтапное обучение: сначала независимо тренируется поисковый модуль на парах запрос-документ, затем обучается генератор на расширенных контекстах, и, наконец, возможно тонкое совместное дотюнивание.
Важный элемент — поддержание качества ретривера при росте индекса: применяется асинхронное переиндексирование документов по мере обновления энкодера[1].
Современные варианты и расширения
- RETRO (Retrieval-Enhanced TRansfOrmer)[1]: интегрирует поиск в архитектуру трансформера-декодера через блоки chunked cross-attention. Для каждого фрагмента генерируемого текста выбираются близкие соседи из внешней памяти (~2 трлн токенов), и их ключи и значения подаются в дополнительный кросс-внимательный слой.
- FiD (Fusion-in-Decoder)[1]: обрабатывает каждый документ независимо в энкодере, а затем декодер имеет кросс-внимание ко всем скрытым состояниям сразу, эффективно объединяя информацию из десятков документов.
- Self-RAG[1]: обучает языковую модель рефлексивно выбирать, нужно ли обращаться к поиску, критически оценивать релевантность найденного и качество собственного ответа, используя специальные токены размышления (reflection tokens).
- REPLUG[1]: предлагает использовать RAG с закрытыми (black-box) LLM, обновляя лишь отдельный лёгкий ретривер, что снижает зависимость от доступа к параметрам генератора.
- Мультимодальный RAG[1]: расширяет подход на изображения, видео и смешанные документы.
Применения
RAG-системы стали основой для множества реальных продуктов и исследовательских прототипов:
- Вопросно-ответные системы: открытые и доменно-специфичные (медицинские, юридические) ассистенты, где критична опора на актуальные источники.
- Диалоговые агенты и чат-боты: интеграция с корпоративной документацией (Microsoft 365 Copilot), веб-поиском (ChatGPT Browse, Perplexity AI).
- Генерация с обоснованием (grounded generation): системы, которые не только дают ответ, но и предоставляют цитаты на исходные документы, что важно для научных, финансовых и новостных приложений.
- Обновляемые знания: RAG позволяет развернуть модель, не переобучая её, обновляя только векторный индекс, — критично для быстро меняющихся новостей, цен, нормативных актов.
Ограничения и вызовы
Несмотря на эффективность, RAG-подход сталкивается с рядом проблем.
- Качество поиска: ошибки на этапе извлечения напрямую ухудшают ответ. При шумном или нерелевантном документе модель может «поверить» ложной информации.
- Задержка (latency): поиск по крупномасштабной коллекции добавляет десятки или сотни миллисекунд, что критично для интерактивных приложений. Используются кэширование и приближённые алгоритмы.
- Контекстное окно: генератор ограничен максимальной длиной входа; обработка многих документов требует либо фильтрации, либо архитектур типа FiD.
- Конфликт знаний: внутренние знания модели (из предобучения) могут противоречить извлечённой информации, что приводит к непоследовательным ответам. Self-RAG и обучение с подкреплением помогают частично решить эту проблему[1].
- Обслуживание индекса: непрерывное обновление, удаление дубликатов, обеспечение свежести данных требуют отдельных инженерных решений.
Направления развития
Текущие исследования концентрируются на:
- повышении эффективности за счёт поиска на лету и инкрементного индексирования;
- активном поиске (agentic RAG), где модель сама формулирует поисковые запросы и решает, когда остановиться;
- обучаемых стратегиях агрегации множества найденных фрагментов (например, с использованием графов знаний[1]);
- уменьшении галлюцинаций через кросс-проверку (cross-checking) найденных источников;
- гибридных моделях, комбинирующих плотный и разреженный поиск, а также символьные базы знаний (symbolic knowledge bases).
См. также
- Языковая модель
- Трансформер (архитектура)
- Информационный поиск
- Вопросно-ответная система
- Большая языковая модель
- FAISS
- BERT (языковая модель)
- GPT (языковая модель)
Примечания
Литература
- 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. — 2020. — Т. 33. — С. 9459–9474.
- 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. — 2020.
- Izacard, G., Grave, E., Joulin, A., & Usunier, N. 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. — 2021. — С. 874–880.
- 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. — 2022.
- Izacard, G., Lewis, P., Lomeli, M., Hosseini, H., Petroni, F., Schick, T., ... & Grave, E. Atlas: Few-shot Learning with Retrieval Augmented Language Models // arXiv preprint arXiv:2208.03299. — 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.
- 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. — С. 6769–6781.
- 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.
- 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.
- Edge, D., Trinh, H., Cheng, N., Bradley, J., Chao, A., Mody, A., ... & Larson, J. From Local to Global: A Graph RAG Approach to Query-Focused Summarization // arXiv preprint arXiv:2404.16130. — 2024.

