RAG-система
Материал из MachineLearning.
(Новая: '''Генерация с дополненной выборкой''' (англ. ''Retrieval-Augmented Generation'', сокр. '''RAG''') — метод в [[Обработка естес...) |
|||
| (6 промежуточных версий не показаны.) | |||
| Строка 1: | Строка 1: | ||
| - | ''' | + | {{well|Статья написана с использованием LLM '''DeepSeek-V4''' и проверена участником [[Участник:Dan-Кhaiaa Lakpazhap]] 18:29, 9 июля 2026 (MSD). |
| + | Промпт приводится полностью в [[Обсуждение:RAG-система]]. | ||
| + | }} | ||
| + | {{TOCright}} | ||
| + | '''Retrieval-Augmented Generation''' ( англ. ''RAG'') — это архитектурный подход в [[Обработка естественного языка|обработке естественного языка]] и [[Машинное обучение|машинном обучении]], объединяющий предварительно обученные [[языковая модель|языковые модели]] с механизмом доступа к внешней, непараметрической памяти (англ. external memory) — базе знаний или коллекции документов. При генерации ответа модель сначала находит в этой памяти релевантные фрагменты информации (этап ''retrieval'', поиск), а затем на их основе синтезирует итоговый текст (этап ''generation'', генерация). Такой подход позволяет модели использовать актуальные факты, не заложенные в её [[Параметр (машинное обучение)|параметры]] во время обучения, и существенно снижает частоту [[Галлюцинация (искусственный интеллект)|галлюцинаций]]<ref name="lewis2020">{{статья |автор=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}}</ref>. Идея восходит к концепции открытой доменной вопросно-ответной системы, но в RAG она реализуется как [[Дифференцируемое программирование|дифференцируемый]] (англ. differentiable) сквозной процесс, доступный для обучения методами [[Градиентный спуск|градиентного спуска]]. | ||
| - | + | Парадигма RAG заняла центральное место в современных больших языковых моделях ([[Большая языковая модель|LLM]]), позволяя им обращаться к документальным источникам без увеличения числа обучаемых параметров. Её используют такие системы, как [[Microsoft Copilot]], [[ChatGPT]] с веб-поиском, [[You.com]] и многие корпоративные ассистенты. | |
| - | == | + | == История и контекст == |
| - | + | Предпосылки к появлению RAG возникли при решении задач, требующих опоры на внешние знания (knowledge-intensive tasks): открытый диалог, [[вопросно-ответная система|ответы на вопросы]], проверка фактов. Классические нейросетевые модели хранили все знания в своих весах, что ограничивало их объём и делало обновление информации трудоёмким. Параллельно развивались два направления: [[информационный поиск]] и генеративные языковые модели. Первые нейронные системы, объединяющие их, — REALM<ref name="guu2020">{{статья |автор=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}}</ref> и RAG<ref name="lewis2020" /> — были предложены в 2020 году почти одновременно. REALM впервые показал, что поисковый модуль можно предобучить совместно с языковой моделью, а классический RAG от Facebook AI (Meta) популяризировал архитектуру, в которой документы извлекаются дискретно, но генерация ответа использует их как латентную переменную. | |
| - | + | В последующие годы появились высокомасштабируемые варианты: RETRO<ref name="borgeaud2022">{{статья |автор=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}}</ref> (DeepMind) использовал корпус из триллионов токенов, FiD (Fusion-in-Decoder)<ref name="izacard2021">{{статья |автор=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}}</ref> предложил обрабатывать множество документов в энкодере-декодере, а Atlas<ref name="izacard2022">{{статья |автор=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}}</ref> продемонстрировал эффективное малоизвестное обучение с помощью поиска. Параллельно Self-RAG<ref name="asai2023">{{статья |автор=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}}</ref> внедрил механизм, при котором модель сама решает, когда необходимо обращаться к поиску. | |
| + | |||
| + | == Постановка задачи и математическая основа == | ||
| + | Пусть дан входной запрос <tex>x</tex> (вопрос, инструкция) и требуется сгенерировать целевой ответ <tex>y</tex>. Традиционная генеративная модель параметризует распределение <tex>p_\theta(y | x)</tex> напрямую. В RAG-подходе вводится латентная переменная <tex>z</tex> — релевантный документ (или несколько документов) из внешней коллекции <tex>\mathcal{Z}</tex>, которая может быть очень большой (миллиарды записей). Полное распределение маргинализируется по всем возможным документам: | ||
| + | |||
| + | <tex>p_\text{RAG}(y | x) = \sum_{z \in \mathcal{Z}} p_\eta(z | x) \, p_\theta(y | z, x),</tex> | ||
| + | |||
| + | где: | ||
| + | * <tex>p_\eta(z | x)</tex> — вероятностная модель поиска (retriever), выдающая распределение над коллекцией для входного запроса; | ||
| + | * <tex>p_\theta(y | z, x)</tex> — генеративная модель (generator), принимающая на вход запрос и извлечённый документ. | ||
| + | |||
| + | Поскольку прямое суммирование по всей коллекции вычислительно невозможно, на практике ограничиваются <tex>k</tex> наиболее вероятными документами, полученными с помощью приближённого поиска (например, по максимальному внутреннему произведению, MIPS): | ||
| + | |||
| + | <tex>p_\text{RAG}(y | x) \approx \sum_{z \in \text{top-}k(p_\eta(\cdot | x))} p_\eta(z | x) \, p_\theta(y | z, x).</tex> | ||
| + | |||
| + | Генератор может использовать один документ (RAG-Sequence) или для каждого сгенерированного токена выбирать свой документ (RAG-Token). Последнее формализуется как: | ||
| + | |||
| + | <tex>p_\text{RAG-Token}(y | x) = \prod_{t} \sum_{z \in \text{top-}k} p_\eta(z | x) \, p_\theta(y_t | y_{<t}, z, x).</tex> | ||
| + | |||
| + | В современных реализациях чаще применяют детерминированный подход: несколько релевантных фрагментов просто конкатенируются с запросом, образуя расширенный контекст, а генератор <tex>p_\theta</tex> обучается как стандартная [[Языковая модель#Авторегрессионные модели|авторегрессионная модель]] на таких расширенных последовательностях. | ||
== Архитектура == | == Архитектура == | ||
| - | + | Типичная RAG-система состоит из трёх ключевых компонентов. | |
=== Модуль поиска (Retriever) === | === Модуль поиска (Retriever) === | ||
| - | + | Чаще всего используется двухкодировщик (dual encoder), отдельно преобразующий запрос <tex>x</tex> и каждый документ <tex>z</tex> в векторы фиксированной размерности <tex>d</tex>: <tex>\mathbf{q} = E_Q(x)</tex>, <tex>\mathbf{d} = E_D(z)</tex>. Релевантность оценивается как скалярное произведение (или косинусное сходство): | |
| - | + | <tex>\text{sim}(x, z) = \mathbf{q}^\top \mathbf{d}.</tex> | |
| - | + | Модели поиска могут быть обучены на основе [[BERT (языковая модель)|BERT]]-подобных энкодеров, например, DPR (Dense Passage Retrieval)<ref>{{статья |автор=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}}</ref>. Для ускорения поиска по многомиллионным коллекциям применяются библиотеки приближённого поиска ближайших соседей, такие как [[FAISS]] или ScaNN. Альтернативой плотному поиску служит разреженный (например, [[BM25]]), иногда используемый гибридно<ref>{{статья |автор=Ma, Y., Sun, Y., Yu, X., Zhang, Y., & Cohan, A. |заглавие=SPLADE v2: Sparse Lexical and Expansion Model for Information Retrieval |издание=Proceedings of the 44th International ACM SIGIR Conference on Research and Development in Information Retrieval |год=2021}}</ref>. | |
| - | + | === База знаний (внешняя память, англ. external memory) === | |
| - | + | Документы могут быть произвольными текстовыми сегментами (абзацы, статьи, таблицы), предварительно векторизованными и проиндексированными. Источниками служат [[Википедия]], веб-страницы, корпоративные документы, графы знаний. Индексация может обновляться независимо от обучения генератора, что обеспечивает фактическую актуальность системы. | |
| - | + | ||
| - | + | ||
| - | + | ||
=== Генератор (Generator) === | === Генератор (Generator) === | ||
| - | + | Генеративная часть <tex>p_\theta</tex> — это обычно предварительно обученная модель архитектуры encoder-decoder ([[T5 (языковая модель)|T5]], BART) или decoder-only ([[GPT (языковая модель)|GPT]], LLaMA). Документы либо подаются в энкодер вместе с запросом (FiD-стиль), где каждый документ обрабатывается отдельно, а результаты объединяются в декодере, либо конкатенируются с запросом в единый промпт для декодера. Второй вариант проще в реализации и доминирует в коммерческих приложениях, но объём контекстного окна (англ. context window) ограничивает количество документов. | |
| - | == | + | == Обучение == |
| - | + | Возможны несколько стратегий обучения компонентов RAG. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | * '''Совместное сквозное обучение (end-to-end)''': веса и ретривера, и генератора обновляются одновременно. Так как выборка из дискретного набора документов недифференцируема, используют методы оценки градиентов, такие как REINFORCE или подход на основе латентных переменных, где градиент распространяется через маргинальное правдоподобие <tex>\log p(y|x)</tex> и параметры <tex>\eta</tex> обновляются путём взвешивания правдоподобий документов из top-k. RAG и REALM показали эффективность такого обучения<ref name="lewis2020" /><ref name="guu2020" />. | |
| - | + | * '''Замораживание ретривера (frozen retriever)''': используется готовый, предварительно обученный поисковый модуль (например, на основе DPR или даже [[BM25]]), а генератор дообучается на задачах с извлечёнными документами. Это снижает вычислительные затраты и упрощает масштабирование. Так обучался Atlas<ref name="izacard2022" />, где ретривер периодически «освежается» асинхронно. | |
| - | + | ||
| - | + | ||
| - | + | * '''Многоэтапное обучение''': сначала независимо тренируется поисковый модуль на парах запрос-документ, затем обучается генератор на расширенных контекстах, и, наконец, возможно тонкое совместное дотюнивание. | |
| - | + | Важный элемент — поддержание качества ретривера при росте индекса: применяется асинхронное переиндексирование документов по мере обновления энкодера<ref name="guu2020" />. | |
| - | == | + | == Современные варианты и расширения == |
| - | + | * '''RETRO''' (Retrieval-Enhanced TRansfOrmer)<ref name="borgeaud2022" />: интегрирует поиск в архитектуру [[Трансформер (архитектура)|трансформера]]-декодера через блоки chunked cross-attention. Для каждого фрагмента генерируемого текста выбираются близкие соседи из внешней памяти (~2 трлн токенов), и их ключи и значения подаются в дополнительный кросс-внимательный слой. | |
| - | + | * '''FiD''' (Fusion-in-Decoder)<ref name="izacard2021" />: обрабатывает каждый документ независимо в энкодере, а затем декодер имеет кросс-внимание ко всем скрытым состояниям сразу, эффективно объединяя информацию из десятков документов. | |
| - | * ''' | + | * '''Self-RAG'''<ref name="asai2023" />: обучает языковую модель рефлексивно выбирать, нужно ли обращаться к поиску, критически оценивать релевантность найденного и качество собственного ответа, используя специальные токены размышления (reflection tokens). |
| - | + | * '''REPLUG'''<ref>{{статья |автор=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}}</ref>: предлагает использовать RAG с закрытыми (black-box) LLM, обновляя лишь отдельный лёгкий ретривер, что снижает зависимость от доступа к параметрам генератора. | |
| - | + | * '''Мультимодальный RAG'''<ref>{{статья |автор=Chen, W., Hu, H., Chen, X., Wang, Z., & Chang, S. F. |заглавие=MuRAG: Multimodal Retrieval-Augmented Generator for Open Question Answering over Images and Text |издание=Proceedings of the 2022 Conference on Empirical Methods in Natural Language Processing |год=2022}}</ref>: расширяет подход на изображения, видео и смешанные документы. | |
| - | * ''' | + | |
| - | * '''Self-RAG''' | + | |
| - | * ''' | + | |
| - | + | ||
| - | * ''' | + | |
| - | + | ||
| - | + | ||
== Применения == | == Применения == | ||
| - | RAG-системы | + | RAG-системы стали основой для множества реальных продуктов и исследовательских прототипов: |
| - | * ''' | + | * '''Вопросно-ответные системы''': открытые и доменно-специфичные (медицинские, юридические) ассистенты, где критична опора на актуальные источники. |
| - | * '''Диалоговые агенты и чат-боты''' | + | * '''Диалоговые агенты и чат-боты''': интеграция с корпоративной документацией (Microsoft 365 Copilot), веб-поиском (ChatGPT Browse, Perplexity AI). |
| - | * ''' | + | * '''Генерация с обоснованием (grounded generation)''': системы, которые не только дают ответ, но и предоставляют цитаты на исходные документы, что важно для научных, финансовых и новостных приложений. |
| - | + | * '''Обновляемые знания''': RAG позволяет развернуть модель, не переобучая её, обновляя только векторный индекс, — критично для быстро меняющихся новостей, цен, нормативных актов. | |
| - | * ''' | + | |
| - | == | + | == Ограничения и вызовы == |
| - | ''' | + | Несмотря на эффективность, RAG-подход сталкивается с рядом проблем. |
| - | * ''' | + | * '''Качество поиска''': ошибки на этапе извлечения напрямую ухудшают ответ. При шумном или нерелевантном документе модель может «поверить» ложной информации. |
| - | * ''' | + | * '''Задержка (latency)''': поиск по крупномасштабной коллекции добавляет десятки или сотни миллисекунд, что критично для интерактивных приложений. Используются кэширование и приближённые алгоритмы. |
| - | * ''' | + | * '''Контекстное окно''': генератор ограничен максимальной длиной входа; обработка многих документов требует либо фильтрации, либо архитектур типа FiD. |
| - | * ''' | + | * '''Конфликт знаний''': внутренние знания модели (из предобучения) могут противоречить извлечённой информации, что приводит к непоследовательным ответам. Self-RAG и обучение с подкреплением помогают частично решить эту проблему<ref name="asai2023" />. |
| + | * '''Обслуживание индекса''': непрерывное обновление, удаление дубликатов, обеспечение свежести данных требуют отдельных инженерных решений. | ||
| - | + | == Направления развития == | |
| - | * | + | Текущие исследования концентрируются на: |
| - | + | * повышении эффективности за счёт поиска на лету и инкрементного индексирования; | |
| - | + | * активном поиске (agentic RAG), где модель сама формулирует поисковые запросы и решает, когда остановиться; | |
| - | + | * обучаемых стратегиях агрегации множества найденных фрагментов (например, с использованием графов знаний<ref>{{статья |автор=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}}</ref>); | |
| - | + | * уменьшении галлюцинаций через кросс-проверку (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}} | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
Текущая версия
| | Статья написана с использованием LLM DeepSeek-V4 и проверена участником Участник:Dan-Кhaiaa Lakpazhap 18:29, 9 июля 2026 (MSD).
Промпт приводится полностью в Обсуждение:RAG-система. |
|
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.

