Что такое генерация с дополнением извлечением (RAG)?

RAG объединяет языковую модель с поиском по документам, благодаря чему ответы опираются на найденные источники, а не только на память, заложенную при обучении модели.

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

Как работает генерация с дополнением извлечением

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

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

Почему это важно

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

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

Ключевые типы и шаблоны

  • Наивный RAG (или «извлечь и прочитать»): один шаг извлечения, при котором top-k фрагментов напрямую подаются в промпт генератора.
  • Продвинутый RAG: добавляет перезапись запросов, реранжирование и фильтрацию на уровне фрагментов перед генерацией для повышения точности.
  • Модульный RAG: компонует конвейер из взаимозаменяемых компонентов, таких как веб-поиск, SQL-запросы или вызовы API, и может переключаться между извлечением и генерацией в цикле.
  • Графовый RAG: строит граф знаний по корпусу и извлекает подграфы связанных сущностей, что позволяет получать более контекстные ответы по связанным данным.
  • Агентский RAG: позволяет языковой модели решать, когда и что извлекать, зачастую с использованием нескольких инструментов, прежде чем выдать итоговый ответ.

Благодаря разделению хранения знаний и движка рассуждений RAG стал фундаментальным строительным блоком для промышленных ИИ-приложений, которым необходимы точность, актуальность и возможность аудита. Оригинальное исследование описано в работе Lewis et al., «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks» (2020), а текущие лучшие практики задокументированы в таких фреймворках, как LlamaIndex и LangChain.

You might also like

Похожие статьи