← На главную

Опубликовано

RAG от простого к сложному: как построить систему знаний которая не умрёт

Автор: Гусев Николай [портфолио]

Темы: agent-memory, ai-agents, llm-api, prompting

Строим RAG-систему которая переживёт полгода. Три ступени эволюции - от простого к сложному.

Часть 1: Naive RAG - собрать за вечер

Почему обычные заметки - это не навсегда

Знакомая картина: Obsidian с сотней заметок, поиск по тегам, backlinks. Первые месяцы всё летает. Потом приходит боль - нужная информация теряется в хаосе.

Три конкретные проблемы:

  1. Поиск по ключам не равно поиск по смыслу. Если не помните точную формулировку - не найдёте. LLM не может промптом обработать 500 файлов - контекстное окно не резиновое.

  2. Нет инкрементальной индексации. Добавили 50 новых файлов? Пользы ноль пока не прочитаете глазами. Переиндексация всей базы - 30+ минут.

  3. Нет наблюдательности. Какой документ устарел? Где противоречия между файлами? Без мониторинга система деградирует незаметно.

Пример из практики: менеджер проекта ищет "требования к интеграции с 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