Что такое RAG и зачем он бизнесу
Retrieval-Augmented Generation (RAG) — архитектура, при которой LLM перед генерацией ответа получает релевантные фрагменты из корпоративной базы знаний. Модель не галлюцинирует «из головы», а опирается на конкретные документы.
Без RAG модель знает только то, на чём обучена. С RAG — она знает всё, что знает ваша компания: регламенты, инструкции, контракты, техническую документацию, историю переписки.
Типовые бизнес-задачи для RAG
| Задача | Пример | Выгода |
|---|---|---|
| Внутренний ассистент | «Какой порядок согласования командировок?» | Экономия 30–60 мин/день на HR |
| Техподдержка L1 | «Как сбросить пароль на маршрутизаторе X?» | Снижение нагрузки на L2 на 40–60% |
| Юридический помощник | «Какие штрафы за нарушение 152-ФЗ?» | Быстрый поиск по 1000+ документов |
| Продуктовый ассистент | «Чем тариф Pro отличается от Enterprise?» | Ускорение цикла продаж |
| Онбординг сотрудников | «Где найти шаблон NDA?» | Самообслуживание с первого дня |
| Аналитика документов | «Покажи все контракты с условием пеней» | Часы работы юриста за секунды |
Архитектура RAG-системы
Общая схема
┌─────────────────────────────────────────────────────┐
│ INGESTION │
│ │
│ Документы → Парсинг → Чанкинг → Эмбеддинг → VectorDB│
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ RETRIEVAL │
│ │
│ Запрос → Эмбеддинг → Поиск по VectorDB → Top-K │
│ │
│ (опционально: reranking, фильтрация, HyDE) │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ GENERATION │
│ │
│ System Prompt + Top-K чанков + Запрос → LLM → Ответ │
└─────────────────────────────────────────────────────┘
Компоненты
| Компонент | Задача | Варианты |
|---|---|---|
| Document Loader | Загрузка файлов | PDF, DOCX, HTML, Confluence, Notion, Google Drive |
| Text Splitter | Нарезка на чанки | RecursiveCharacterTextSplitter, SemanticChunker |
| Embedding Model | Преобразование текста в вектор | OpenAI text-embedding-3, E5, BGE, GigaChat Embeddings |
| Vector Store | Хранение и поиск векторов | Qdrant, pgvector, Pinecone, ChromaDB |
| Retriever | Поиск релевантных чанков | Similarity search, MMR, Ensemble, Multi-query |
| Reranker | Переранжирование результатов | Cohere Rerank, cross-encoder, ColBERT |
| LLM | Генерация ответа | GPT-4o, Claude, GigaChat, YandexGPT |
| Orchestrator | Оркестрация пайплайна | LangChain, LlamaIndex, Haystack |
Шаг 1: Подготовка документов
Источники данных
Первый вопрос — откуда берём данные. Типичные источники:
- PDF — регламенты, инструкции, контракты (самый частый)
- DOCX/DOC — внутренние документы
- Confluence/Notion — база знаний команды
- HTML — документация, help-центр
- Markdown — техническая документация
- CSV/Excel — справочники, прайсы
- Email/Slack — история коммуникаций
Парсинг PDF — главная боль
PDF — самый проблемный формат. Текст может быть:
- Реальным текстовым слоем (простой случай)
- Сканированным изображением (нужен OCR)
- Смесью текста, таблиц и изображений (нужен layout analysis)
| Инструмент | Когда использовать | Качество |
|---|---|---|
| PyPDF2 / pdfplumber | Чистые текстовые PDF | Базовое |
| Unstructured.io | Сложные PDF с таблицами и layout | Хорошее |
| Azure Document Intelligence | Enterprise-уровень парсинга | Отличное |
| LlamaParse | PDF с таблицами, графиками | Хорошее |
| Tesseract + PaddleOCR | Сканированные документы | Зависит от качества скана |
Рекомендация: начинайте с Unstructured.io — покрывает 80% случаев. Для сканов добавляйте OCR-слой.
Шаг 2: Чанкинг — нарезка документов
Чанкинг — самый недооценённый этап. Неправильная нарезка убивает качество RAG сильнее, чем плохая модель.
Стратегии чанкинга
| Стратегия | Как работает | Когда использовать |
|---|---|---|
| По символам (fixed-size) | Нарезка каждые N символов с overlap | Простые текстовые документы |
| Рекурсивная | Разделение по абзацам, предложениям, словам (LangChain default) | Универсальный вариант |
| Семантическая | Разделение по смысловым границам (эмбеддинг-кластеризация) | Длинные документы со сменой тем |
| По заголовкам | Разделение по H1/H2/H3 в Markdown/HTML | Структурированная документация |
| По таблицам | Отдельный чанк для каждой таблицы | Документы с табличными данными |
Параметры чанкинга
| Параметр | Рекомендация | Почему |
|---|---|---|
| Размер чанка | 500–1000 токенов | Слишком маленький — теряется контекст. Слишком большой — разбавляется релевантность |
| Overlap | 50–200 токенов (10–20%) | Предотвращает разрыв контекста на границах чанков |
| Метаданные | Сохранять: имя файла, страница, заголовок раздела | Для фильтрации и показа источников |
Частые ошибки чанкинга
- Разрезать таблицу пополам — таблица без заголовков бесполезна. Решение: детектить таблицы и вынести в отдельный чанк
- Терять иерархию заголовков — чанк «Пункт 3.2.1» без контекста «Раздел 3: Безопасность» непонятен. Решение: добавлять breadcrumb в метаданные
- Одинаковый размер для всех документов — FAQ (короткие пары) и регламент (длинные разделы) требуют разных стратегий
Шаг 3: Эмбеддинги — превращаем текст в векторы
Эмбеддинг-модель кодирует текст в числовой вектор. Семантически близкие тексты получают близкие векторы.
Выбор модели эмбеддингов
| Модель | Размерность | Качество (MTEB) | Стоимость | Русский язык |
|---|---|---|---|---|
| OpenAI text-embedding-3-large | 3072 | Отличное | $0.13/1M токенов | Хорошо |
| OpenAI text-embedding-3-small | 1536 | Хорошее | $0.02/1M токенов | Хорошо |
| GigaChat Embeddings | 1024 | Хорошее | Включено в тариф | Отлично (нативный) |
| E5-large-v2 | 1024 | Хорошее | Бесплатно (self-hosted) | Средне |
| BGE-M3 | 1024 | Отличное | Бесплатно (self-hosted) | Хорошо (мультиязычная) |
| multilingual-e5-large | 1024 | Хорошее | Бесплатно (self-hosted) | Хорошо |
Для русского языка: GigaChat Embeddings или BGE-M3. Если нужен self-hosted и 152-ФЗ — BGE-M3 на своём сервере.
Важно: не менять модель после индексации
Эмбеддинги от разных моделей несовместимы. Если поменяли модель — нужно переиндексировать всю базу. Выбирайте модель до начала продакшена.
Шаг 4: Векторная база данных
Подробное сравнение — в нашей статье Сравнение векторных БД: Qdrant vs Pinecone vs pgvector. Здесь — краткая матрица для RAG.
| Сценарий | Рекомендация |
|---|---|
| PoC / прототип | ChromaDB (pip install, zero config) |
| Продакшен до 5M документов | Qdrant или pgvector |
| Уже есть PostgreSQL | pgvector (один сервис для всего) |
| 152-ФЗ, данные в РФ | pgvector на Yandex Managed PostgreSQL |
| Enterprise от 10M+ | Milvus или Qdrant cluster |
Шаг 5: Retrieval — поиск релевантных чанков
Качество RAG на 70% определяется качеством retrieval. Если поиск не нашёл нужный чанк — LLM не поможет.
Стратегии retrieval
| Стратегия | Как работает | Когда использовать |
|---|---|---|
| Similarity search | Cosine similarity между запросом и чанками | Базовый вариант |
| MMR (Maximal Marginal Relevance) | Баланс между релевантностью и разнообразием | Когда нужны разные аспекты темы |
| Multi-query | LLM генерирует 3–5 вариаций запроса, ищет по каждому | Неоднозначные запросы |
| HyDE (Hypothetical Document Embeddings) | LLM генерирует гипотетический ответ, ищет по нему | Вопросы, далёкие от формулировок в базе |
| Ensemble (hybrid search) | BM25 + vector search, объединение результатов | Максимальное качество |
| Parent Document Retriever | Находит чанк, возвращает целый документ/раздел | Когда контекст шире одного чанка |
Reranking — второй этап фильтрации
После retrieval топ-20 результатов можно пропустить через reranker — модель, которая точнее оценивает релевантность пары (запрос, документ).
| Reranker | Качество | Стоимость |
|---|---|---|
| Cohere Rerank | Отличное | $1/1000 запросов |
| cross-encoder (ms-marco) | Хорошее | Бесплатно (self-hosted) |
| ColBERT v2 | Отличное | Бесплатно (self-hosted) |
| FlashRank | Хорошее | Бесплатно (self-hosted) |
Рекомендация: добавляйте reranking, если retrieval возвращает шумные результаты. Это улучшает качество на 10–25% при минимальных затратах.
Шаг 6: Генерация ответа
System prompt для RAG
Промпт определяет поведение модели. Минимальный шаблон:
Ты — ассистент компании [Название].
Отвечай ТОЛЬКО на основе предоставленного контекста.
Если в контексте нет ответа — скажи «Я не нашёл информацию по этому вопросу».
Указывай источник: название документа и раздел.
Контекст:
{context}
Вопрос: {question}
Выбор LLM
| Модель | Качество (RAG) | Стоимость (1M токенов) | 152-ФЗ | Контекст |
|---|---|---|---|---|
| GPT-4o | Отличное | $2.50 input / $10 output | Нет | 128K |
| GPT-4o-mini | Хорошее | $0.15 / $0.60 | Нет | 128K |
| Claude Sonnet | Отличное | $3 / $15 | Нет | 200K |
| GigaChat Pro | Хорошее | ~$1.50 (по тарифу) | Да | 32K |
| YandexGPT Pro | Хорошее | ~$1.20 (по тарифу) | Да | 32K |
Для проектов с 152-ФЗ: GigaChat Pro или YandexGPT Pro. Для максимального качества без ограничений — GPT-4o или Claude.
Шаг 7: Оценка качества (Evaluation)
RAG без метрик — чёрный ящик. Нужно измерять качество на каждом этапе.
Метрики RAG
| Метрика | Что измеряет | Инструмент |
|---|---|---|
| Context Precision | Доля релевантных чанков в Top-K | RAGAS |
| Context Recall | Сколько нужных чанков нашёл retrieval | RAGAS |
| Faithfulness | Соответствие ответа контексту (нет галлюцинаций) | RAGAS, DeepEval |
| Answer Relevancy | Релевантность ответа вопросу | RAGAS |
| Answer Correctness | Правильность ответа (сравнение с эталоном) | RAGAS, ручная проверка |
Золотой датасет
Создайте набор из 50–100 пар (вопрос, эталонный ответ, источник). Прогоняйте RAG через этот датасет при каждом изменении. Это ваш «тест-сьют» для RAG.
Мониторинг в продакшене
| Что отслеживать | Зачем | Как |
|---|---|---|
| Доля «не нашёл ответ» | Выявляет пробелы в базе знаний | Логирование fallback-ответов |
| Средняя латентность | SLA для пользователей | Prometheus / Grafana |
| Feedback пользователей | Реальное качество | Кнопки 👍/👎 в интерфейсе |
| Drift эмбеддингов | Деградация качества со временем | Регулярный прогон eval-датасета |
Стек технологий: три варианта
Вариант 1: Быстрый старт (2–3 недели)
| Компонент | Технология |
|---|---|
| Фреймворк | LangChain |
| Embedding | OpenAI text-embedding-3-small |
| Vector DB | ChromaDB (dev) / pgvector (prod) |
| LLM | GPT-4o-mini |
| UI | Streamlit / Gradio |
Стоимость: $50–200/мес (API)
Вариант 2: Продакшен (4–6 недель)
| Компонент | Технология |
|---|---|
| Фреймворк | LangChain + LangSmith |
| Embedding | BGE-M3 (self-hosted) |
| Vector DB | Qdrant (Docker) |
| LLM | GPT-4o / Claude |
| Reranker | Cohere Rerank |
| UI | Next.js + API |
| Мониторинг | LangSmith + Prometheus |
Стоимость: $200–800/мес
Вариант 3: Enterprise / 152-ФЗ (6–10 недель)
| Компонент | Технология |
|---|---|
| Фреймворк | LangChain / Haystack |
| Embedding | BGE-M3 (self-hosted) |
| Vector DB | pgvector на Yandex Managed PostgreSQL |
| LLM | GigaChat Pro / YandexGPT Pro |
| Reranker | cross-encoder (self-hosted) |
| UI | Кастомный фронтенд |
| Инфраструктура | Yandex Cloud / Selectel |
| Мониторинг | Prometheus + Grafana |
Стоимость: $300–1500/мес (инфраструктура)
Типичные ошибки при внедрении RAG
-
Пропустить чанкинг. Загрузить PDF «как есть» и надеяться. 60% качества RAG — в правильной нарезке документов.
-
Не тестировать retrieval отдельно. Если поиск возвращает нерелевантные чанки — улучшение промпта или модели не поможет. Сначала fix retrieval.
-
Слишком много чанков в контекст. Top-20 чанков — это шум. Начинайте с Top-3–5, добавляйте только если не хватает контекста.
-
Забыть про метаданные. Без фильтрации по дате, отделу, типу документа поиск возвращает устаревшие и нерелевантные результаты.
-
Не обновлять базу знаний. RAG с документами годовой давности хуже, чем без RAG. Настройте автоматическую синхронизацию с источниками.
-
Игнорировать eval. Без метрик невозможно понять, стало лучше или хуже после изменений. Создайте eval-датасет до первого деплоя.
-
Сразу строить сложную систему. Multi-agent RAG с reranking, query decomposition и self-reflection — это этап 3. Начните с простого retrieval + LLM, измерьте, улучшайте итеративно.
Что дальше
RAG — не разовый проект, а продукт с жизненным циклом. После запуска MVP начинается работа над качеством: улучшение чанкинга, добавление reranking, расширение базы знаний, мониторинг и eval.
Хотите внедрить RAG в вашей компании? Мы в Новаком проектируем и разрабатываем RAG-системы от архитектуры до продакшена.
- Обсудить проект — бесплатная консультация 30 минут, разберём вашу задачу и предложим архитектуру
- Подробнее о RAG vs fine-tuning — если ещё выбираете подход
- Сравнение векторных БД — поможет выбрать хранилище