Предисловие от переводчика
Специалисты по RAG и LLM вряд ли найдут что-то новое в этой статье — она больше предназначена для моих коллег, ИТ-переводчиков, которые только погружаются в терминологию языковых моделей. Само содержание статьи (точнее цикла статей) — адаптированный перевод с arxiv.org статьи китайских исследователей Retrieval-Augmented Generation for Large Language Models: A Survey. Помимо терминов на английском, в скобках, я также добавлял туда же, в скобки, краткие пояснения по сложным терминам. Картинки переводить не стал — поленился. Аннотацию и предисловие из оригинальной статьи я опустил — их содержание полностью дублируется в этой и последующих статьях.
Обзор подходов RAG
Технология RAG быстро развивается в последние годы, а её технологическое дерево с обзором исследований представлено на Рисунке 1.

Рис. 1. Технологическое дерево исследований RAG. Основные этапы применения RAG включают предобучение, дообучение и инференс. С появлением языковых моделей исследования RAG сосредоточились на использовании их способности к обучению в контексте, преимущественно на этапе инференса. Позже работы углубились в интеграцию с дообучением языковых моделей. Также изучаются методы улучшения моделей на этапе предобучения с помощью RAG.
Типичный пример применения RAG [Retrieval-Augmented Generation, метода генерации с дополнением данными] показан на рисунке 2.

Рис. 2. Пример применения RAG для генерации ответов на вопросы. Процесс включает три этапа: 1) Индексирование: документы разбиваются на чанки, преобразуются в векторы и сохраняются в векторную базу данных. 2) Извлечение: выбор Top-k чанков, наиболее релевантных вопросу по семантическому сходству. 3) Генерация: вопрос и найденные чанки подаются в языковую модель для формирования ответа.
В примере пользователь задает ChatGPT вопрос о недавнем и активно обсуждаемом новостном событии. Поскольку ChatGPT опирается на предобученные данные, изначально он не может предоставить информацию о последних событиях. RAG устраняет этот пробел, извлекая и интегрируя знания из внешних баз данных. В данном сценарии система собирает релевантные новостные статьи, соответствующие запросу пользователя. Эти статьи вместе с исходным вопросом формируют расширенный промпт [prompt], позволяющий LLM [Large Language Model, большим языковым моделям] генерировать информативный ответ. Исследовательский подход RAG постоянно развивается и делится на три этапа (см. рис. 3):
1. наивный RAG,
2. продвинутый RAG,
3. модульный RAG.

Рис. 3. Сравнение трёх парадигм RAG. Слева: наивный RAG включает индексирование, извлечение и генерацию. В центре: продвинутый RAG добавляет оптимизации до и после извлечения, сохраняя цепочечную структуру. Справа: модульный RAG вводит гибкие функциональные модули, замену компонентов и поддерживает итеративный/адаптивный поиск.
Несмотря на экономичность наивного RAG и более высокую производительность по сравнению с базовыми LLM, этот подход имеет ряд ограничений. Создание продвинутого RAG и модульного RAG стало ответом на недостатки наивного RAG.
А. Наивный RAG
Наивный RAG представляет собой ранний подход, получивший распространение после массового внедрения ChatGPT. Этот подход включает три этапа: индексирование, поиск и генерацию, образуя так называемую архитектуру «Retrieve-Read» («поиск-чтение»).
Индексирование начинается с очистки и извлечения сырых данных из PDF, HTML, Word и Markdown, которые конвертируются в единый текстовый формат. Для преодоления ограничений контекста языковых моделей [LLM] текст разбивается на чанки [chunks: небольшие удобные для обработки фрагменты]. Чанки преобразуются в векторные представления [embedding] с помощью модели эмбеддингов [embedding model] и сохраняются в векторной базе данных [vector database].
Поиск. При получении запроса система кодирует его в вектор с помощью той же модели, что использовалась на этапе индексирования. Затем вычисляется степень схожести вектора запроса с векторами чанков в индексированном корпусе данных. Система извлекает K наиболее релевантных чанков [top-K chunks: фрагментов с максимальным сходством].
Генерация. Запрос и выбранные документы объединяются в промпт, на основе которого языковая модель формирует ответ. Модель может использовать как внутренние знания, так и ограничиваться информацией из предоставленных документов, в зависимости от задачи.
Б. Продвинутый RAG
Продвинутый RAG предлагает целенаправленные улучшения для устранения ограничений наивного RAG. Основной акцент сделан на улучшении качества поиска через предпоисковые [pre-retrieval] и постпоисковые [post-retrieval] стратегии. Для решения проблем индексации используется скользящее окно [sliding window: метод последовательного анализа данных], тонкая сегментация [fine-grained segmentation] и добавление метаданных [metadata]. Также внедрены методы оптимизации для ускорения процесса поиска.
Предпоисковый этап [pre-retrieval]: оптимизация структуры индексов и исходных запросов. Цель оптимизации индексации — повышение качества индексируемого контента. Методы включают: повышение детализации данных, улучшение структур индексов, добавление метаданных, оптимизацию выравнивания и гибридный поиск [mixed retrieval]. Оптимизация запросов [query optimization] направлена на уточнение исходных вопросов для повышения релевантности поиска. Основные методы такой оптимизации: переформулирование [query rewriting], трансформация [query transformation] и расширение запросов [query expansion].
Постпоисковый этап [post-retrieval]: интеграция найденного контекста с запросом. Ключевые методы: реранжирование чанков [rerank chunks: пересортировка фрагментов по релевантности] и сжатие контекста [context compressing]. Стратегия: перемещение наиболее релевантных данных в начало промпта. Реализовано в фреймворках: LlamaIndex, LangChain и Haystack.
Прямая передача всех документов в LLM вызывает перегрузку из-за избытка данных. Проблема решается через фильтрацию ключевой информации, выделение значимых частей и сокращение контекста.
В. Модульный RAG
Модульный RAG превосходит предыдущие парадигмы наивного и продвинутого RAG, обеспечивая повышенную адаптивность и универсальность. Архитектура включает различные стратегии улучшения компонентов: добавление модуля поиска [search module: специализированный компонент для поиска схожих данных], тонкую настройку ретривера [retriever: механизма извлечения информации] и другие оптимизации. Для решения конкретных задач внедряются инновации: реструктуризация модулей RAG и изменение последовательности этапов в пайплайнах [pipeline: последовательность обработки данных].
Переход к модульному подходу набирает популярность, позволяя сочетать последовательную обработку с сквозным обучением компонентов Несмотря на уникальность, модульный RAG развивает принципы продвинутого и наивного RAG, демонстрируя эволюцию методов в рамках RAG-технологий.
Новые модули: модульный RAG включает специализированные компоненты для улучшения поиска и обработки данных. Модуль поиска адаптируется к сценариям, позволяя напрямую обращаться к источникам данных (поисковым системам, базам данных, графам знаний) через код и языки запросов, сгенерированные языковой моделью.
RAG-Fusion [RAG-Fusion: метод мультизапросного поиска с параллельным векторным поиском и реранжированием] преодолевает ограничения традиционного поиска, расширяя запросы пользователя и комбинируя результаты для выявления скрытых взаимосвязей.
Модуль памяти использует память языковой модели для создания динамического пула данных, который итеративно адаптируется к распределению информации через самоулучшение.
Маршрутизация в системе RAG выбирает оптимальный путь обработки запроса: суммаризация, поиск в конкретной базе или объединение данных из разных источников.
Модуль Predict [Predict: генерация контекста напрямую через языковую модель] снижает шум и избыточность, повышая релевантность результатов.
Модуль Task Adapter [Task Adapter: адаптация RAG под задачи] автоматизирует подбор промптов для zero-shot сценариев [без предварительных примеров для обучения] и создает специализированные ретриверы через few-shot генерацию запросов [т. е. используя несколько примеров для такой генерации]. Такой подход оптимизирует поиск, повышает качество и релевантность данных, обеспечивая гибкость для разнообразных задач.
Новые паттерны: модульный RAG позволяет заменять или перестраивать компоненты для решения специфических задач. Возможности такой архитектуры превосходят возможности фиксированных архитектур наивного и продвинутого RAG с их базовой схемой «Найти-Прочитать». Гибкость усиливается благодаря добавлению новых модулей или изменению взаимодействия между ними, что расширяет область применения.
Инновации вроде Rewrite-Retrieve-Read [переписать-найти-прочитать: переписывание запросов и обратная связь для улучшения поиска] используют возможности языковой модели для оптимизации запросов. Методы Generate-Read [генерировать-прочитать: замена поиска на генерацию контента] и Recite-Read [цитировать-прочитать: поиск в весах модели] улучшают обработку сложных задач. Гибридный поиск объединяет ключевые слова, семантику и векторные методы для работы с разными типами запросов.
Использование подзапросов и гипотетических эмбеддингов документов [HyDE, hypothetical document embeddings: генерация эталонных эмбеддингов для улучшения поиска] повышает релевантность через сравнение с реальными данными.
Настройка взаимодействия модулей (например, DSP [demonstrate-search-predict — демонстрация,поиск, предсказание] и ITER-RETGEN [iterative retrieve-read-retrieve-read — итеративный поиск, генерация]) демонстрирует синергию между компонентами для улучшения функциональности.
Гибкая организация модульной архитектуры RAG демонстрирует преимущества адаптивного извлечения данных с использованием методов вроде FLARE и Self-RAG. Этот подход превосходит фиксированный процесс извлечения в RAG, оценивая необходимость поиска в зависимости от сценария.
Ещё одно преимущество гибкой архитектуры — возможность интеграции RAG-систем с другими технологиями (например, дообучением [fine-tuning] или обучением с подкреплением [reinforcement learning]). Например, такая интеграция может включать дообучение поискового модуля для улучшения результатов, настройку генератора для персонализации выводов или совместное дообучение компонентов.
Г. Сравнение RAG и дообучения
Расширение возможностей LLM привлекает значительное внимание благодаря их растущей распространённости. Среди подходов оптимизации LLM, RAG часто сравнивают с дообучением и промт-инжинирингом [prompt engineering: проектирование входных запросов]. Каждый метод имеет уникальные характеристики, как показано на Рисунке 4.

На рис. 4. показано сравнение RAG с другими методами оптимизации моделей по параметрам «Необходимость внешних знаний» и «Требуемая адаптация модели». Промт-инжиниринг требует минимальных изменений модели и внешних данных, концентрируясь на использовании возможностей самой языковой модели. Дообучение, напротив, подразумевает дополнительное обучение модели. На ранних этапах развития RAG (в частности наивного RAG) изменений модели практически не требовалось. По мере развития исследований модульный RAG стал глубже интегрироваться с методами дообучения.
Для визуализации различий между тремя методами по двум параметрам (потребность во внешних знаниях и адаптации модели) использована квадрантная диаграмма. Промт-инжиниринг использует встроенные возможности модели с минимальной зависимостью от внешних данных и дообучения.
RAG можно сравнить с предоставлением модели специально подобранного учебника для поиска информации, что идеально для точных задач извлечения данных. В отличие от этого, дообучение похоже на постепенное усвоение знаний учеником, что подходит для сценариев, требующих воспроизведения специфических структур или стилей.
RAG лучше проявляет себя в динамичных средах благодаря обновлению знаний в реальном времени и интерпретируемому использованию внешних источников. Однако метод имеет повышенную задержку и этические вопросы при извлечении данных (Прим. пер.: «задержка» может быть связана с долгими поисками при ответе на сложный вопрос; «этические соображения» могут возникнуть, если RAG выдаст недостоверные данные для медицинских вопросов или конфиденциальные данные при извлечении информации из соцсети).
Дообучение более статично: требует переобучения для обновлений, но позволяет глубже кастомизировать поведение модели. Метод требует значительных ресурсов для подготовки данных и обучения, снижает галлюцинации, но может ошибаться на новых данных.
Исследования показывают, что по производительности RAG стабильно превосходит дообучение как на известных, так и на новых данных. Также обнаружено, что LLM плохо усваивают новые факты через дообучение без учителя. Выбор между RAG и дообучением зависит от динамичности данных, уровня кастомизации и доступности вычислительных ресурсов. Методы не исключают друг друга: их комбинация усиливает возможности модели на разных уровнях. В некоторых случаях совместное использование даёт оптимальный результат. Оптимизация с использованием RAG и дообучения может потребовать нескольких итераций.
Пока всё, продолжение следует.
В следующих 4 статьях про RAG мы углубимся в механизмы технологий:
-
извлечения данных;
-
генерации данных;
-
дополнения данных.
Кроме того, мы поговорим о методологиях оценки и перспективах развития RAG.
ссылка на оригинал статьи https://habr.com/ru/articles/893650/
Добавить комментарий