RAG

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником ~~~~}} {{TOCright}} '''RAG''' (англ. ''retr...)
 
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником [[Участник:Iaroslav Lyakhov|Iaroslav Lyakhov]] 20:16, 1 июля 2026 (MSD)}}
+
{{well|Статья написана с использованием LLM '''Claude Opus 4.8''' и проверена участником [[Участник:Iaroslav Lyakhov|Iaroslav Lyakhov]] 21:21, 5 июля 2026 (MSD)}}
{{TOCright}}
{{TOCright}}
-
'''RAG''' (англ. ''retrieval-augmented generation'' - генерация с дополнением извлечёнными знаниями) - архитектурный подход, при котором [[Большая языковая модель|языковая модель]] перед формированием ответа извлекает релевантные документы из внешнего хранилища и использует их как контекст. RAG соединяет '''параметрическую память''' модели (знания в весах) с '''непараметрической''' (внешняя база), что повышает фактическую точность и снижает [[Галлюцинация|галлюцинации]]. Термин введён в работе Facebook AI Research (Lewis et al., 2020).
+
'''RAG''' (англ. ''retrieval-augmented generation'' - генерация с дополнением извлечёнными знаниями) - архитектурный подход, при котором [[Большая языковая модель|языковая модель]] перед формированием ответа извлекает релевантные документы из внешнего хранилища и использует их как контекст. RAG соединяет '''параметрическую память''' модели (знания, «зашитые» в её веса) с '''непараметрической''' (внешняя база, которую можно менять в любой момент). Такой подход повышает фактическую точность ответов, позволяет ссылаться на источники и заметно снижает [[Галлюцинация|галлюцинации]]. Термин введён в работе Facebook AI Research (Lewis et al., 2020).
== Зачем нужен ==
== Зачем нужен ==
-
Знания LLM «заморожены» на момент обучения, их трудно обновлять, а источник конкретного утверждения невозможно проследить. RAG решает эти проблемы:
+
Знания обычной LLM «заморожены» на момент обучения: их трудно обновлять, а проследить, откуда взялось конкретное утверждение, невозможно. RAG решает сразу несколько проблем:
-
* '''Актуальность''' - базу можно обновлять без переобучения модели.
+
* '''Актуальность.''' Внешнюю базу можно обновлять без переобучения модели.
-
* '''Достоверность''' - ответ опирается на конкретные документы, которые можно процитировать.
+
* '''Достоверность.''' Ответ опирается на конкретные документы, которые можно процитировать и проверить.
-
* '''Приватность и специализация''' - подключение закрытых корпоративных или предметных данных.
+
* '''Приватность и специализация.''' К модели подключают закрытые корпоративные или узкопредметные данные, не вливая их в обучающую выборку.
-
* '''Экономичность''' - не нужно дорогостоящее дообучение под каждую новую коллекцию знаний.
+
* '''Экономичность.''' Не нужно дорогостоящее дообучение под каждую новую коллекцию знаний.
== Как устроен ==
== Как устроен ==
Строка 15: Строка 15:
=== Индексация (офлайн) ===
=== Индексация (офлайн) ===
-
# Документы разбиваются на фрагменты (chunking).
+
# Документы нарезаются на фрагменты (chunking).
# Каждый фрагмент кодируется в [[Embedding|векторное представление]] моделью-эмбеддером.
# Каждый фрагмент кодируется в [[Embedding|векторное представление]] моделью-эмбеддером.
-
# Векторы сохраняются в [[Векторная база данных|векторной базе данных]] (FAISS, Milvus, Qdrant и др.).
+
# Векторы складываются в [[Векторная база данных|векторную базу данных]] (FAISS, Milvus, Qdrant и др.), где по ним можно быстро искать ближайших соседей.
=== Извлечение и генерация (онлайн) ===
=== Извлечение и генерация (онлайн) ===
-
# Запрос пользователя кодируется в вектор.
+
# Запрос пользователя кодируется в вектор тем же эмбеддером.
-
# По мере близости (например, косинусной) находятся <tex>k</tex> наиболее релевантных фрагментов - '''семантический поиск'''.
+
# По близости (обычно косинусной) находятся <tex>k</tex> наиболее релевантных фрагментов - это '''семантический поиск''': ищут по смыслу, а не по точному совпадению слов.
# Найденные фрагменты добавляются в промпт вместе с вопросом.
# Найденные фрагменты добавляются в промпт вместе с вопросом.
-
# LLM генерирует ответ, опираясь на предоставленный контекст, и при необходимости приводит ссылки на источники.
+
# Модель генерирует ответ, опираясь на предоставленный контекст, и при необходимости приводит ссылки на источники.
== Ключевые компоненты ==
== Ключевые компоненты ==
-
* '''Ретривер''' (retriever) - отвечает за поиск. Бывает разреженным (BM25, по ключевым словам) и плотным (dense, по эмбеддингам); часто используют гибрид.
+
* '''Ретривер''' (retriever) отвечает за поиск. Разреженный ретривер (например, BM25) ищет по совпадению ключевых слов; плотный (dense) - по близости эмбеддингов и находит смысловые совпадения даже при разных формулировках; на практике часто комбинируют оба (гибридный поиск).
-
* '''Реранкер''' (re-ranker) - переупорядочивает кандидатов более точной, но дорогой моделью.
+
* '''Реранкер''' (re-ranker) переупорядочивает найденных кандидатов более точной, но дорогой моделью, чтобы наверх попали действительно релевантные фрагменты.
-
* '''Генератор''' - собственно LLM.
+
* '''Генератор''' - собственно LLM, которая формирует итоговый ответ.
-
== Проблемы и развитие ==
+
== Нарезка и качество поиска ==
-
* Качество ответа ограничено качеством поиска: нерелевантные фрагменты ухудшают результат («garbage in - garbage out»).
+
Качество ответа в RAG во многом определяется поиском: если наверх попали нерелевантные фрагменты, модель ответит по ним же неверно (принцип «мусор на входе - мусор на выходе»). Поэтому важны и способ нарезки документов (слишком мелкие куски теряют контекст, слишком крупные размывают релевантность), и качество эмбеддера, и наличие реранкера.
-
* Чувствительность к способу нарезки документов и размеру фрагментов.
+
-
* Ограничение длины контекста модели.
+
-
Развитие направления включает '''agentic RAG''' (модель сама решает, что и когда искать), графовый RAG (GraphRAG) на основе [[Граф знаний|графов знаний]] и итеративный поиск.
+
-
== Сравнение с дообучением ==
+
== Проблемы ==
-
RAG и [[Дообучение|дообучение]] (fine-tuning) решают разные задачи: дообучение меняет ''поведение'' и ''стиль'' модели, RAG снабжает её ''фактами''. На практике подходы дополняют друг друга.
+
* Ответ ограничен качеством поиска: пропущенный или нерелевантный фрагмент портит результат.
 +
* Чувствительность к способу нарезки и размеру фрагментов.
 +
* Ограничение длины контекста: в промпт помещается лишь несколько фрагментов.
 +
* Модель может проигнорировать переданный контекст и ответить «из памяти».
 +
 
 +
== Развитие ==
 +
Направление активно развивается: '''agentic RAG''' (модель сама решает, что и когда искать, и делает несколько итераций поиска), '''GraphRAG''' (поиск по [[Граф знаний|графу знаний]], а не только по отдельным фрагментам), итеративное и многошаговое извлечение для сложных вопросов.
 +
 
 +
== RAG или дообучение ==
 +
RAG и [[Дообучение|дообучение]] (fine-tuning) решают разные задачи: дообучение меняет ''поведение'' и ''стиль'' модели, а RAG снабжает её свежими ''фактами''. На практике подходы дополняют друг друга: модель дообучают под формат и тон ответов, а актуальные знания подают через RAG.
== См. также ==
== См. также ==
Строка 47: Строка 53:
== Литература ==
== Литература ==
-
* {{статья |автор=Lewis P. и др. |часть=Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks |заглавие=Advances in Neural Information Processing Systems (NeurIPS) |год=2020 |ссылка=https://arxiv.org/abs/2005.11401}}
+
* {{статья |автор=Lewis P. и др. |заглавие=Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2020 |ссылка=https://arxiv.org/abs/2005.11401}}
-
* {{статья |автор=Gao Y. и др. |часть=Retrieval-Augmented Generation for Large Language Models: A Survey |заглавие=Препринт arXiv:2312.10997 |год=2023 |ссылка=https://arxiv.org/abs/2312.10997}}
+
* {{статья |автор=Karpukhin V. и др. |заглавие=Dense Passage Retrieval for Open-Domain Question Answering |издание=Proc. of EMNLP |год=2020 |ссылка=https://arxiv.org/abs/2004.04906}}
 +
* {{статья |автор=Gao Y. и др. |заглавие=Retrieval-Augmented Generation for Large Language Models: A Survey |издание=Препринт arXiv:2312.10997 |год=2023 |ссылка=https://arxiv.org/abs/2312.10997}}
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
[[Категория:Анализ текстов]]
[[Категория:Анализ текстов]]

Текущая версия

Статья написана с использованием LLM Claude Opus 4.8 и проверена участником Iaroslav Lyakhov 21:21, 5 июля 2026 (MSD)


Содержание

RAG (англ. retrieval-augmented generation - генерация с дополнением извлечёнными знаниями) - архитектурный подход, при котором языковая модель перед формированием ответа извлекает релевантные документы из внешнего хранилища и использует их как контекст. RAG соединяет параметрическую память модели (знания, «зашитые» в её веса) с непараметрической (внешняя база, которую можно менять в любой момент). Такой подход повышает фактическую точность ответов, позволяет ссылаться на источники и заметно снижает галлюцинации. Термин введён в работе Facebook AI Research (Lewis et al., 2020).

Зачем нужен

Знания обычной LLM «заморожены» на момент обучения: их трудно обновлять, а проследить, откуда взялось конкретное утверждение, невозможно. RAG решает сразу несколько проблем:

  • Актуальность. Внешнюю базу можно обновлять без переобучения модели.
  • Достоверность. Ответ опирается на конкретные документы, которые можно процитировать и проверить.
  • Приватность и специализация. К модели подключают закрытые корпоративные или узкопредметные данные, не вливая их в обучающую выборку.
  • Экономичность. Не нужно дорогостоящее дообучение под каждую новую коллекцию знаний.

Как устроен

Типичный конвейер RAG состоит из двух фаз.

Индексация (офлайн)

  1. Документы нарезаются на фрагменты (chunking).
  2. Каждый фрагмент кодируется в векторное представление моделью-эмбеддером.
  3. Векторы складываются в векторную базу данных (FAISS, Milvus, Qdrant и др.), где по ним можно быстро искать ближайших соседей.

Извлечение и генерация (онлайн)

  1. Запрос пользователя кодируется в вектор тем же эмбеддером.
  2. По близости (обычно косинусной) находятся k наиболее релевантных фрагментов - это семантический поиск: ищут по смыслу, а не по точному совпадению слов.
  3. Найденные фрагменты добавляются в промпт вместе с вопросом.
  4. Модель генерирует ответ, опираясь на предоставленный контекст, и при необходимости приводит ссылки на источники.

Ключевые компоненты

  • Ретривер (retriever) отвечает за поиск. Разреженный ретривер (например, BM25) ищет по совпадению ключевых слов; плотный (dense) - по близости эмбеддингов и находит смысловые совпадения даже при разных формулировках; на практике часто комбинируют оба (гибридный поиск).
  • Реранкер (re-ranker) переупорядочивает найденных кандидатов более точной, но дорогой моделью, чтобы наверх попали действительно релевантные фрагменты.
  • Генератор - собственно LLM, которая формирует итоговый ответ.

Нарезка и качество поиска

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

Проблемы

  • Ответ ограничен качеством поиска: пропущенный или нерелевантный фрагмент портит результат.
  • Чувствительность к способу нарезки и размеру фрагментов.
  • Ограничение длины контекста: в промпт помещается лишь несколько фрагментов.
  • Модель может проигнорировать переданный контекст и ответить «из памяти».

Развитие

Направление активно развивается: agentic RAG (модель сама решает, что и когда искать, и делает несколько итераций поиска), GraphRAG (поиск по графу знаний, а не только по отдельным фрагментам), итеративное и многошаговое извлечение для сложных вопросов.

RAG или дообучение

RAG и дообучение (fine-tuning) решают разные задачи: дообучение меняет поведение и стиль модели, а RAG снабжает её свежими фактами. На практике подходы дополняют друг друга: модель дообучают под формат и тон ответов, а актуальные знания подают через RAG.

См. также

Литература

Личные инструменты