Генерация с дополненной выборкой (, RAG) — это подход, при котором генерация ответа большой языковой модели (LLM) осуществляется на основе данных, полученных в результате поиска во внешних источниках (Интернет, корпоративные базы данных и справочники, файлы и другие источники), которые таким образом дополняют выборку обучения модели. RAG-система работает в два основных этапа: сначала происходит извлечение релевантных документов или их частей из внешней базы знаний на основе запроса пользователя, а затем полученная информация подставляется вместе со специальными подсказками, указывающими как модель должна использовать эти данные, в контекст языковой модели для генерации итогового ответа. В зависимости от указаний в подсказках, сгенерированный ответ может включать цитаты или ссылки на исходные документы, что повышает прозрачность и доверие пользователей, позволяя проверить информацию. RAG помогает устранить ограничения LLM, такие как устаревание информации, наличие неточностей или появления галлюцинаций.

Основное преимущество RAG в том, что этот архитектурный шаблон расширяет базу знаний LLM до неограниченных размеров (Интернет), даёт быстрый доступ к специализированным базам знаний или к корпоративным базам данных без необходимости переобучения модели. RAG сочетает в себе сильные стороны традиционных систем поиска информации (поисковые системы и системы управления базами данных) с возможностями больших языковых моделей.

С появлением больших языковых моделей исследования RAG первоначально фокусировались на использовании их способности к обучению в контексте, преимущественно затрагивая этап вывода. Последующие работы углубили анализ, постепенно интегрируя методы RAG в процесс тонкой настройки LLM. Учёные также изучают возможности улучшения языковых моделей на этапе предварительного обучения.

Парадигмы RAG Развитие методов генерации с дополненной выборкой начинается с базовой парадигмы Naive RAG, основанной на простом цикле индексации, извлечения и генерации. Парадигма Advanced RAG внедряет этапы предварительной и последующей обработки извлекаемой информации, направленных на повышение качества и релевантности контекста. Современный этап, парадигма Modular RAG, представляет собой гибкую и адаптивную архитектуру, позволяющую интегрировать новые функциональные модули, изменять паттерны взаимодействия компонентов и сочетать RAG с другими методами, такими как тонкая настройка, что обещает дальнейшее повышение точности, надежности и универсальности генеративных моделей при работе с внешними источниками знаний.

Базовый подход (Naive RAG) Базовый подход к генерации с дополненной выборкой представляет собой первоначальную и наиболее простую реализацию парадигмы RAG, функционирующую по принципу последовательного извлечения информации (Retrieve) и последующей генерации текста на её основе. Включает три основных функциональных этапа:

Индексация (Indexing): На этом этапе происходит подготовка внешней базы знаний. Исходные данные, представленные в различных форматах, проходят процедуры очистки и извлечения текстового содержимого. Полученный текст сегментируется на информационные блоки (чанки). Каждый чанк преобразуется в векторное представление (эмбеддинг) с использованием предобученной модели эмбеддингов. Сгенерированные векторы вместе с соответствующими текстовыми фрагментами индексируются и сохраняются в специализированной векторной базе данных, оптимизированной для поиска по сходству. Извлечение (Retrieval): При поступлении пользовательского запроса он векторизуется с использованием той же модели эмбеддингов, что и на этапе индексации. Затем система выполняет поиск в векторной базе данных, вычисляя метрику сходства (например, косинусное расстояние или скалярное произведение) между вектором запроса и векторами проиндексированных чанков. Извлекается заранее определённое количество (K) наиболее релевантных чанков, имеющих наивысший показатель сходства с запросом. Генерация (Generation): На заключительном этапе формируется входной контекст (промпт) для большой языковой модели. Этот промпт обычно состоит из исходного пользовательского запроса и текстового содержимого извлеченных на предыдущем шаге K чанков. LLM обрабатывает данный промпт и генерирует конечный ответ. В процессе генерации модель может использовать как информацию из предоставленного контекста, так и свои внутренние параметрические знания, либо быть инструктирована строго придерживаться только извлеченных данных.

Несмотря на простоту, Naive RAG обладает рядом ограничений:

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

Advanced RAG Advanced RAG нацелен на устранение недостатков, присущих базовым реализациям. Фундаментальное отличие заключается во внедрении техник, преимущественно для повышения качества и релевантности этапа информационного поиска (retrieval). Данные усовершенствования охватывают как предварительную обработку (pre-retrieval), так и постобработку (post-retrieval) относительно основного шага извлечения информации.

Этап предварительной обработки (Pre-retrieval) включает оптимизацию двух ключевых компонентов: индекса данных и пользовательского запроса. Оптимизация индексации достигается за счет применения таких техник, как:

Сегментация данных методом скользящего окна (sliding window chunking). Более гранулярная сегментация (fine-grained segmentation). Включение и использование метаданных при индексации. Оптимизация выравнивания векторных представлений (embedding alignment). Использование гибридного поиска (hybrid search), сочетающего различные методы поиска (например, семантический и лексический).

Оптимизация запроса преследует цель повышения его информативности и точности посредством техник перефразирования (query rewriting), трансформации (query transformation) и расширения (query expansion).

Этап постобработки (Post-retrieval) активируется после извлечения набора потенциально релевантных контекстных фрагментов. Его задача — оптимизировать интеграцию этого контекста с исходным запросом перед подачей в генеративную языковую модель. Ключевые методы постобработки включают:

Переранжирование (Re-ranking): Изменение порядка извлеченных фрагментов для повышения их влияния на генерацию, часто путем размещения наиболее релевантных фрагментов в стратегически важных позициях промпта (например, в начале и конце). Сжатие контекста (Context Compression): Методы, направленные на экстракцию наиболее существенной информации из извлеченных фрагментов и сокращение общего объёма передаваемого контекста, что позволяет избежать превышения лимитов контекстного окна модели и снизить риск информационной перегрузки.

Интеграция стратегий предварительной и постобработки в рамках Advanced RAG демонстрирует более глубокое понимание сложностей, связанных с информационным обеспечением генеративных языковых моделей. Этот подход признает критическую важность как качества самой извлеченной информации, так и эффективности её представления для достижения высокой производительности RAG-системы.

Modular RAG Modular RAG представляет собой наиболее продвинутую парадигму RAG, предлагающую повышенную адаптивность и универсальность за счет включения разнообразных стратегий улучшения компонентов RAG. Этот подход опирается на принципы Naive и Advanced RAG, но вводит специализированные модули и паттерны взаимодействия между ними.

Модули:

Модуль поиска (Search module): Обеспечивает прямой поиск информации по различным источникам данных. RAG-Fusion: Реализует стратегии множественных запросов для повышения эффективности поиска. Модуль памяти (Memory module): Использует возможности памяти большой языковой модели (LLM) для улучшения контекстуализации. Модуль маршрутизации (Routing): Предназначен для навигации по разнообразным источникам данных, позволяя системе выбирать наиболее подходящий источник для конкретного запроса. Модуль предсказания (Predict module): Генерирует контекст с помощью LLM, который затем может быть использован в процессе поиска или генерации. Модуль адаптации задач (Task Adapter module): Позволяет настраивать RAG-систему для выполнения различных downstream-задач, оптимизируя её производительность для конкретных приложений.

Паттерны взаимодействия

Rewrite-Retrieve-Read: Переписывание запроса перед поиском для повышения его релевантности. Generate-Read: Генерация гипотетического ответа или документа, который затем используется для поиска дополнительной информации. Recite-Read: Извлечение конкретных фактов или фрагментов текста, которые затем используются для поиска более подробной информации. Гибридные стратегии поиска: Комбинирование различных методов поиска (например, семантического и полнотекстового) для повышения точности и полноты извлечения информации. Подзапросы (Sub-queries): Разбиение сложного запроса на несколько более простых подзапросов, результаты которых затем объединяются. Hypothetical Document Embeddings (HyDE): Использование LLM для генерации гипотетического документа на основе запроса, а затем использование векторного представления этого документа для поиска релевантной информации.

Гибкая оркестрация: Modular RAG обеспечивает гибкое управление процессом поиска и генерации с помощью адаптивных методов, таких как FLARE и Self-RAG. Эти методы позволяют системе самостоятельно определять необходимость поиска дополнительной информации на различных этапах генерации, что делает процесс более эффективным и контекстуально-зависимым.

Преимущества RAG Использование RAG предоставляет ряд существенных преимуществ для улучшения больших языковых моделей.

Повышенная точность и надежность: RAG обеспечивает доступ LLM к самым актуальным и надежным фактам, что значительно снижает вероятность генерации неверного или вводящего в заблуждение контента. За счет обоснования ответов на внешних, проверенных источниках информации, RAG гарантирует, что LLM оперирует наиболее точными данными.

Уменьшение галлюцинаций: Одним из ключевых преимуществ RAG является минимизация риска «галлюцинаций» — генерации LLMs вымышленной или неточной информации. Предоставляя LLM конкретные, извлеченные факты, RAG значительно снижает вероятность создания ответов, не основанных на реальных данных.

Улучшение контекстуальности ответов: RAG позволяет LLM получать доступ к свежей информации в режиме реального времени, преодолевая ограничения, связанные с датой отсечения знаний, присущей их обучающим данным. Это обеспечивает LLMs возможность предоставлять ответы, основанные на самой последней доступной информации, что особенно важно в динамичных областях.

Повышение доверия пользователей: RAG способствует повышению доверия пользователей к сгенерированному контенту за счет предоставления источников информации, использованных для формирования ответа. Возможность проверить источники информации позволяет пользователям убедиться в достоверности полученных сведений.

Экономическая эффективность: В отличие от тонкой настройки, требующей дообучения LLM на новых данных, RAG позволяет избежать этого дорогостоящего и ресурсоемкого процесса. RAG обеспечивает более экономичный способ адаптации LLMs к новым данным и доменам знаний.

Интеграция с разными моделями, агентами и чат-ботами: RAG интегрируется в любую LLM и не зависит только от одного производителя моделей. Интегрируется с LLM-приложениями, включая чат-боты и разговорных агентов, предоставляя им доступ к внешним, свежим, частным или специализированным данным.