Рынок RAG-решений перенасыщен базовыми туториалами, которые часто упускают из виду ключевые проблемы: потерю контекста, галлюцинации при сложных запросах и отсутствие обратной связи. Новый репозиторий agentic-rag-for-dummies закрывает этот пробел, предлагая архитектуру, где агент не просто ищет документы, а планирует действия, уточняет намерения пользователя и самостоятельно исправляет ошибки поиска.
Архитектура: Иерархический индекс и Multi-Agent Map-Reduce
Главное техническое отличие проекта — использование иерархического индексирования. Документы разбиваются на два уровня:
- Child Chunks (Дочерние чанки): Маленькие фрагменты для высокоточного поиска по ключевым словам.
- Parent Chunks (Родительские чанки): Большие смысловые блоки (на основе заголовков H1-H3), которые подгружаются только если дочерние чанки нашли релевантные данные. Это сохраняет контекст, не перегружая память модели.
Процесс обработки запроса разделен на четыре этапа, управляемые через LangGraph:
- Understanding: Поддержание истории диалога без бесконечного роста контекста.
- Clarification: Агент переписывает запросы, разрешает неоднозначности (например, «как это обновить?» → «как обновить SQL?») и запрашивает уточнения у человека, если запрос слишком размыт.
- Retrieval (Map-Reduce): Сложный запрос разбивается на подзапросы, которые выполняются параллельно разными агентами. Каждый агент может выполнить самокоррекцию, если первоначальный поиск дал слабый результат.
- Generation: Агрегация ответов в единый ответ.
Технический стек и интеграции
Система спроектирована как провайдер-агностичная, но по умолчанию использует локальный Ollama с моделью Granite 4.1 8B (рекомендуется для надежного вызова инструментов) и эмбеддинги Qwen3-Embedding-0.6B в связке с векторной базой Qdrant (гибридный поиск dense + sparse).
Ниже приведена сравнительная таблица поддерживаемых LLM-провайдеров и моделей, которые можно интегрировать в эту архитектуру:
| Провайдер | Модель (пример) | Ключевая особенность |
|---|---|---|
| Ollama (Local) | granite4.1:8b | Работа офлайн, контроль данных, требует GPU для 8B+ |
| OpenAI | gpt-4o-mini | Высокая скорость, низкая стоимость, отличная логика |
| Anthropic | claude-sonnet-4-5-20250929 | Улучшенное следование инструкциям и безопасность |
| gemini-2.5-flash | Быстрый отклик, хорошая работа с длинными контекстами |
Инструменты оценки и наблюдаемости
Проект не ограничивается только запуском. В него встроена интеграция с Langfuse для отслеживания вызовов LLM и использования инструментов. Для оценки качества ответов используется метрика RAGAS, которая позволяет количественно измерить точность извлечения (retrieval) и качество генерации (answer quality) на реальных данных.
Для разработчиков, желающих быстро начать, проект предлагает два пути: интерактивный Jupyter Notebook для обучения основам и модульный проект для продакшн-разработки, где каждый компонент (конвертер PDF, эмбеддер, агент) можно заменить независимо.
Источник: Github ↗
