Опубликовано
RAG от простого к сложному: как построить систему знаний которая не умрёт
Автор: Гусев Николай [портфолио]
Темы: agent-memory, ai-agents, llm-api, prompting
Строим RAG-систему которая переживёт полгода. Три ступени эволюции - от простого к сложному.
Часть 1: Naive RAG - собрать за вечер
Почему обычные заметки - это не навсегда
Знакомая картина: Obsidian с сотней заметок, поиск по тегам, backlinks. Первые месяцы всё летает. Потом приходит боль - нужная информация теряется в хаосе.
Три конкретные проблемы:
-
Поиск по ключам не равно поиск по смыслу. Если не помните точную формулировку - не найдёте. LLM не может промптом обработать 500 файлов - контекстное окно не резиновое.
-
Нет инкрементальной индексации. Добавили 50 новых файлов? Пользы ноль пока не прочитаете глазами. Переиндексация всей базы - 30+ минут.
-
Нет наблюдательности. Какой документ устарел? Где противоречия между файлами? Без мониторинга система деградирует незаметно.
Пример из практики: менеджер проекта ищет "требования к интеграции с 1С". В базе 12 документов где упоминается 1С - от технических спецификаций до писем клиенту. Naive RAG найдёт 3-4 чанка, но не поймёт что нужна именно спецификация а не переписка.
Собираем naive RAG
Базовая архитектура: запрос → embed → top-k чанков → промпт → ответ.
Минимальный стек: Chroma DB + sentence-transformers + FastAPI + Nginx.
Ресурсы: ~2GB RAM, 1 CPU. Индексация 1000 файлов - 10 минут. Поиск - менее 100ms.
Где упираемся
Naive RAG работает для простых фактологических вопросов. Ломается на точных терминах, многошаговых запросах, устаревших данных.
Что делать: добавлять слои - hybrid search, reranking, incremental indexing, observability.
Для менеджера это значит: система начинает понимать что "статус проекта Альфа" и "Альфа текущий статус" - это один и тот же запрос, даже если формулировки разные.
Часть 2: Agentic RAG - когда система думает
Что изменилось
LLM в naive RAG - пассивный потребитель чанков. В agentic RAG она управляет процессом поиска: планирует, ищет, оценивает, при необходимости повторяет.
Как работает
Агент получает запрос → уточняет неоднозначности → решает где искать → получает документы → оценивает релевантность → если мало или плохо - переформулирует и повторяет → генерирует ответ.
Self-RAG и CRAG - два важных паттерна
Self-RAG: LLM сам оценивает релевантность найденных документов. CRAG: если документы нерелевантны - система делает web-поиск или уточняет запрос.
LangGraph: агент как граф состояний
query → classify → retrieve → grade → generate → answer
↑ ↓
└── rewrite ──┘ (если not relevant)
Цикл 2-3 раза. Это и есть agentic reasoning - система итеративно улучшает результат.
Пример для менеджера: запрос "сравни требования по проектам Альфа и Бета, найди конфликты в сроках". Naive RAG вернёт 4 случайных чанка. Agentic RAG сначала найдёт требования по Альфе, потом по Бете, сравнит, определит конфликт в сроках и сформулирует ответ.
Цена вопроса
Naive RAG: ~$0.001 за запрос, менее 1с, точность ~75%. Agentic: в 5-10x дороже, 3-10с, но точность 85-95%.
Часть 3: Adaptive RAG - система выбирает стратегию
Проблема: не каждый запрос нуждается в агенте
Простой вопрос "сколько дней до дедлайна проекта X?" не нуждается в agentic reasoning. Сложный "проанализируй риски по всем активным проектам и предложи митигацию" - не решить одним проходом.
Adaptive RAG классифицирует запрос и маршрутизирует на подходящую стратегию.
Как работает
Query analysis: классификатор определяет тип запроса (фактологический, аналитический, суммаризация).
Strategy selection:
-
Простой → direct answer или naive RAG (дёшево, быстро)
-
Средний → advanced RAG с hybrid search + reranking
-
Сложный → agentic RAG с циклами и валидацией
Retrieval и generation: выбранная стратегия выполняется.
Исследование (arXiv:2604.03455, RAGRouter-Bench, 2026)
TF-IDF + SVM классификатор достигает 85% accuracy для маршрутизации. Лексические признаки лучше семантических эмбеддингов. Экономия до 60% токенов по сравнению с всегда-agentic подходом.
Пример для менеджера: утром - 50 простых запросов (статусы, сроки, контакты), днём - 5 сложных (аналитика, сравнения, риски). Adaptive RAG обрабатывает утренние запросы дёшево и быстро, а сложные включает на полную мощность.
Три ступени - три уровня зрелости
Naive RAG: собрать за вечер. Работает для простых фактов.
Agentic RAG: LLM думает над поиском. Решает сложные аналитические запросы.
Adaptive RAG: система выбирает стратегию. Оптимизирует стоимость и качество.
Не прыгайте сразу в adaptive. Начните с naive, добавьте agentic когда данных станет больше, потом - adaptive routing.
Николай Гусев, 2026. Инфраструктура на Hermes/Autolycus.
Источники: Arpit Bhayani "What Matters in Production RAG", n8n "RAG System Architecture", NerdLevelTech "Complete Guide to RAG 2026", Instinctools "Agentic RAG", arXiv:2604.03455 "RAGRouter-Bench", LangChain Blog, DataCamp, Meilisearch