Архитектурные паттерны RAG: от классики к автономным системам
RAG (Retrieval-Augmented Generation) давно перестал быть просто «добавлением поиска к ChatGPT». Сегодня это сложные системы, в которых алгоритмы поиска, стратегии чанкинга и логика генерации сплетаются в единый механизм, способный отвечать на вопросы о том, чего модель никогда не видела. В этой статье разберём ключевые архитектурные паттерны RAG — от простых конвейеров до агентных систем с самооптимизацией.
Эволюция RAG: от «костыля» к «мозгу»
В 2020 году RAG воспринимался как временное решение для доступа к актуальным данным. Сегодня он стал основой для:
- корпоративных ассистентов, работающих с внутренними документами;
- медицинских систем, в которых ошибка в поиске может стоить жизни;
- финансовых аналитиков, обрабатывающих новости в реальном времени.
Но чтобы RAG перешёл от «костыля» к «мозгу», требуется правильная архитектура.
Паттерн 1. Классический RAG
Структура: Поиск → Вставка в промпт → Генерация.
Как работает:
- Пользователь задаёт вопрос.
- Система ищет релевантные чанки (часто через векторный поиск, как в статье о методах).
- Топ-N результатов добавляются в контекст БЯМ.
- Модель генерирует ответ на основе найденного.
- хрупкость: если поиск вернул мусор, ответ будет неверным;
- ограничение контекста: нельзя добавить все релевантные чанки.
Пример: Первые версии ChatGPT Plugins.
Паттерн 2. Гибридный поиск
Структура: Векторный поиск + ключевые слова → Ранжирование → Генерация.
Как работает:
- Запрос разбивается на векторное представление и ключевые термины.
- Поиск выполняется параллельно в векторной БД (например, с HNSW) и полнотекстовом индексе (Elasticsearch).
- Результаты объединяются и переранжируются кросс-энкодером (нейросетью, оценивающей релевантность).
- лучшее покрытие: сочетает смысловой и лексический поиск;
- снижает риск пропустить важный документ из-за плохого чанкинга.
Пример: Perplexity.ai, в котором ответы подкрепляются как нейросетевым поиском, так и точным соответствием.
Паттерн 3. Агентно-ориентированный RAG
Структура: Поиск → Валидация → Уточнение → Генерация.
Как работает:
- Поисковый агент находит первоначальные чанки.
- Валидатор проверяет источники (например, отсеивает новости старше 3 дней).
- Агент-аналитик решает, нужно ли уточнить запрос (например: «Ищете ли вы API для Python или Java?»).
- Генерация происходит только после подтверждения релевантности.
Пример: Медицинские системы вроде IBM Watson, в которых каждый диагноз проверяется по нескольким источникам.
Паттерн 4. Итеративный или рекурсивный RAG
Структура: Поиск → Генерация промежуточного ответа → Новый поиск → Финальный ответ.
Как работает:
- Первый поиск по исходному запросу.
- БЯМ генерирует промежуточный ответ и выделяет ключевые термины для уточнения.
- Новый поиск по уточнённым терминам.
- Финальный синтез ответа.
- подходит для сложных вопросов типа «Сравните X и Y»;
- автоматически исправляет ошибки начального поиска.
Пример: AlphaCode 2 от DeepMind, в которой код генерируется через несколько итераций поиска и исправлений.
Паттерн 5. Автономный RAG с самооптимизацией
Структура: Поиск → Анализ качества → Оптимизация индекса → Генерация.
Как работает:
- После каждого запроса система оценивает, насколько найденные чанки помогли дать правильный ответ (например, через метрики RAGAS).
- Если качество падает, перестраивает индекс: меняет параметры чанкинга, пересматривает кластеры в IVF, обновляет граф HNSW.
- Постепенно адаптируется под тематику запросов.
Пример: Экспериментальные системы вроде Self-RAG от UCLA.
Ключевые элементы схем:
- Прямоугольники — участники процесса (пользователь, модули системы).
- Стрелки — направление взаимодействия.
- Разделители:
Что дальше? RAG 3.0: когда поиск и генерация сливаются воедино
- Неразделимые энкодеры: одна модель и ищет, и генерирует, без разделения на этапы.
- Когнитивные индексы: векторные базы, которые обновляются в реальном времени на основе обратной связи.
- RAG-as-a-Service: облачные платформы, на которых пользователь указывает данные, а система сама выбирает паттерн.
Заключение
RAG — это не архитектура, а конструктор. Выбор паттерна зависит от задачи:
- Классический RAG подойдёт для FAQ-ботов;
- Автономный RAG — для научных исследований;
- Агентный подход — для критически важных систем.
Но какой бы паттерн вы ни выбрали, помните: RAG лишь усиливает БЯМ. Если на входе мусор — на выходе будет галлюцинация. Как гениально сказал один инженер: «RAG не делает модель умнее — он делает её более начитанной».
Подписывайтесь на Telegram-канал «Технооптимисты» (https://t.me/drv_official) — следующая статья расскажет, как измерить, что ваш RAG не врёт.