RAG-система

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

(Различия между версиями)
Перейти к: навигация, поиск
(Содержимое страницы заменено на «<!-- Публикуется под заголовком: RAG-система Это страница-перенаправлени...»)
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''DeepSeek-V4''' и проверена участником [[Участник:Dan-Кhaiaa Lakpazhap]] 18:29, 9 июля 2026 (MSD).
+
<!-- Публикуется под заголовком: RAG-система
-
Промпт приводится полностью в [[Обсуждение:RAG]].
+
Это страница-перенаправление на основную статью «RAG».
-
}}
+
Весь текст страницы - одна строка ниже. -->
-
{{TOCright}}
+
#REDIRECT [[RAG]]
-
'''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) ===
+
-
Чаще всего используется двухкодировщик (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) ===
+
-
Генеративная часть <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>: расширяет подход на изображения, видео и смешанные документы.
+
-
 
+
-
== Применения ==
+
-
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}}
+

Версия 15:28, 26 июля 2026

  1. REDIRECT RAG