Не просто RAG, а RAG с рефлексией: опенсорс от Google для умных research-агентов
Все уже немного устали от чат-ботов, которые уверенно врут, придумывают несуществующие факты и отвечают на сложные вопросы так, будто просто пересказывают первый абзац из Википедии. Классический подход RAG (Retrieval-Augmented Generation) решает эту проблему лишь частично, часто ограничиваясь поверхностным поиском. Кажется, в Google решили копнуть глубже.
Они выложили в опенсорс gemini-fullstack-langgraph-quickstart — готовый фуллстек-шаблон для создания продвинутого research-агента. Его главная фишка не в том, чтобы просто найти ответ, а в том, чтобы провести полноценное мини-исследование, отрефлексировать найденное и выдать результат с пруфами.
Что это такое и зачем оно нужно?
На первый взгляд, это просто очередной пример fullstack-приложения. Фронтенд на React, бэкенд на Python с FastAPI. Но вся магия кроется в бэкенд-агенте, построенном на LangGraph. Это не просто чат-бот, а автономная система, которая превращает пользовательский запрос в итеративный исследовательский процесс.
Основная задача этого стека — показать, как построить AI, который:
- Не доверяет первому найденному источнику.
- Умеет выявлять «пробелы в знаниях».
- Динамически адаптирует свой поиск, чтобы эти пробелы закрыть.
- Предоставляет итоговый ответ с цитатами, чтобы пользователь мог всё проверить.
Как работает «мозг» агента: цикл с рефлексией
Вся соль проекта — в логике работы бэкенд-агента. Это не линейный процесс «запрос -> поиск -> ответ», а циклический граф, управляемый LangGraph. Вот как он устроен:
- Генерация запросов. Получив вопрос от пользователя, агент с помощью Gemini генерирует несколько первоначальных поисковых запросов.
- Веб-поиск. Каждый запрос отправляется в Google Search API для сбора релевантной информации.
- Рефлексия и анализ пробелов. А вот тут начинается самое интересное. Вместо того чтобы сразу генерировать ответ, агент анализирует полученные результаты. Он использует Gemini, чтобы задать себе вопросы: «Достаточно ли этой информации? Все ли аспекты исходного запроса раскрыты? Нет ли противоречий? Чего не хватает?».
- Итеративное уточнение. Если агент решает, что информации недостаточно, он генерирует новые, уточняющие запросы и возвращается к шагу 2. Этот цикл повторяется до тех пор, пока агент не сочтет исследование завершенным (или пока не достигнет лимита итераций, чтобы не уйти в бесконечность).
- Синтез итогового ответа. Только после того, как все «пробелы в знаниях» закрыты, система собирает всю найденную информацию и генерирует связный ответ, подкрепляя его ссылками на использованные источники.
Ключевая идея — рефлексия. Агент не просто собирает факты, а активно анализирует, чего ему не хватает для полного ответа, и ищет дальше. Это отличает его от большинства простых RAG-систем.
Технологический стек и готовность к продакшену
Проект представляет собой готовый к развертыванию шаблон.
- Фронтенд: React (собранный с помощью Vite), Tailwind CSS для стилей и Shadcn UI для компонентов. Быстро, модно, молодёжно.
- Бэкенд: LangGraph для оркестрации графа, FastAPI для создания API, и, конечно, модели Google Gemini в качестве «мозга».
- Продакшен-окружение: Для реального развертывания авторы предусмотрели использование Redis (в качестве брокера для стриминга ответов в реальном времени) и PostgreSQL (для хранения состояний, ассистентов, тредов и т.д.). Всё упаковывается в Docker.
Естественно, для работы всего этого чуда потребуются API-ключи к Google Gemini и LangSmith (для отладки и мониторинга).