Разработка
May 11

Архитектурные паттерны RAG: от классики к автономным системам

RAG (Retrieval-Augmented Generation) давно перестал быть просто «добавлением поиска к ChatGPT». Сегодня это сложные системы, в которых алгоритмы поиска, стратегии чанкинга и логика генерации сплетаются в единый механизм, способный отвечать на вопросы о том, чего модель никогда не видела. В этой статье разберём ключевые архитектурные паттерны RAG — от простых конвейеров до агентных систем с самооптимизацией.


Эволюция RAG: от «костыля» к «мозгу»

В 2020 году RAG воспринимался как временное решение для доступа к актуальным данным. Сегодня он стал основой для:

  • корпоративных ассистентов, работающих с внутренними документами;
  • медицинских систем, в которых ошибка в поиске может стоить жизни;
  • финансовых аналитиков, обрабатывающих новости в реальном времени.

Но чтобы RAG перешёл от «костыля» к «мозгу», требуется правильная архитектура.


Паттерн 1. Классический RAG

Структура: Поиск → Вставка в промпт → Генерация.
Как работает:

  1. Пользователь задаёт вопрос.
  2. Система ищет релевантные чанки (часто через векторный поиск, как в статье о методах).
  3. Топ-N результатов добавляются в контекст БЯМ.
  4. Модель генерирует ответ на основе найденного.

Плюсы:

  • простота реализации (подходит для MVP);
  • низкие задержки.

Минусы:

  • хрупкость: если поиск вернул мусор, ответ будет неверным;
  • ограничение контекста: нельзя добавить все релевантные чанки.

Пример: Первые версии ChatGPT Plugins.


Паттерн 2. Гибридный поиск

Структура: Векторный поиск + ключевые слова → Ранжирование → Генерация.
Как работает:

  1. Запрос разбивается на векторное представление и ключевые термины.
  2. Поиск выполняется параллельно в векторной БД (например, с HNSW) и полнотекстовом индексе (Elasticsearch).
  3. Результаты объединяются и переранжируются кросс-энкодером (нейросетью, оценивающей релевантность).

Плюсы:

  • лучшее покрытие: сочетает смысловой и лексический поиск;
  • снижает риск пропустить важный документ из-за плохого чанкинга.

Минусы:

  • высокие вычислительные затраты;
  • сложность настройки.

Пример: Perplexity.ai, в котором ответы подкрепляются как нейросетевым поиском, так и точным соответствием.


Паттерн 3. Агентно-ориентированный RAG

Структура: Поиск → Валидация → Уточнение → Генерация.
Как работает:

  1. Поисковый агент находит первоначальные чанки.
  2. Валидатор проверяет источники (например, отсеивает новости старше 3 дней).
  3. Агент-аналитик решает, нужно ли уточнить запрос (например: «Ищете ли вы API для Python или Java?»).
  4. Генерация происходит только после подтверждения релевантности.

Плюсы:

  • высокая точность за счёт многоэтапной проверки;
  • возможность обработки сложных многошаговых запросов.

Минусы:

  • высокие задержки;
  • сложность отладки цепочки агентов.

Пример: Медицинские системы вроде IBM Watson, в которых каждый диагноз проверяется по нескольким источникам.


Паттерн 4. Итеративный или рекурсивный RAG

Структура: Поиск → Генерация промежуточного ответа → Новый поиск → Финальный ответ.
Как работает:

  1. Первый поиск по исходному запросу.
  2. БЯМ генерирует промежуточный ответ и выделяет ключевые термины для уточнения.
  3. Новый поиск по уточнённым терминам.
  4. Финальный синтез ответа.

Плюсы:

  • подходит для сложных вопросов типа «Сравните X и Y»;
  • автоматически исправляет ошибки начального поиска.

Минусы:

  • требует мощных БЯМ для анализа промежуточных результатов;
  • риск зацикливания.

Пример: AlphaCode 2 от DeepMind, в которой код генерируется через несколько итераций поиска и исправлений.


Паттерн 5. Автономный RAG с самооптимизацией

Структура: Поиск → Анализ качества → Оптимизация индекса → Генерация.
Как работает:

  1. После каждого запроса система оценивает, насколько найденные чанки помогли дать правильный ответ (например, через метрики RAGAS).
  2. Если качество падает, перестраивает индекс: меняет параметры чанкинга, пересматривает кластеры в IVF, обновляет граф HNSW.
  3. Постепенно адаптируется под тематику запросов.

Плюсы:

  • не требует ручной настройки;
  • улучшается со временем.

Минусы:

  • риск «переобучения» на узкий набор запросов;
  • вычислительно дорогой.

Пример: Экспериментальные системы вроде Self-RAG от UCLA.


Ключевые элементы схем:

  1. Прямоугольники — участники процесса (пользователь, модули системы).
  2. Стрелки — направление взаимодействия.
  3. Разделители:
    • ->> для синхронных запросов,
    • -->> для ответов,
    • loop для циклических процессов.

Что дальше? RAG 3.0: когда поиск и генерация сливаются воедино

Современные тренды:

  • Неразделимые энкодеры: одна модель и ищет, и генерирует, без разделения на этапы.
  • Когнитивные индексы: векторные базы, которые обновляются в реальном времени на основе обратной связи.
  • RAG-as-a-Service: облачные платформы, на которых пользователь указывает данные, а система сама выбирает паттерн.

Заключение

RAG — это не архитектура, а конструктор. Выбор паттерна зависит от задачи:

  • Классический RAG подойдёт для FAQ-ботов;
  • Автономный RAG — для научных исследований;
  • Агентный подход — для критически важных систем.

Но какой бы паттерн вы ни выбрали, помните: RAG лишь усиливает БЯМ. Если на входе мусор — на выходе будет галлюцинация. Как гениально сказал один инженер: «RAG не делает модель умнее — он делает её более начитанной».

Читайте также:

Подписывайтесь на Telegram-канал «Технооптимисты» (https://t.me/drv_official) — следующая статья расскажет, как измерить, что ваш RAG не врёт.