Что такое RAG и зачем он нужен

Retrieval-Augmented Generation (RAG) — это архитектурная техника, при которой языковая модель (LLM) перед генерацией ответа получает релевантный контекст из внешних источников данных. Результат — ответы, основанные не только на параметрической памяти модели, но и на актуальных корпоративных документах, базах знаний и структурированных данных.

Любая LLM обучается на огромном корпусе публичных текстов и имеет дату среза знаний. Это означает, что модель прекрасно знает общую информацию о мире, но ничего не знает о вашей внутренней документации: регламентах компании, технических спецификациях продуктов, данных CRM, юридических договорах, отчётах за последний квартал. Именно здесь RAG закрывает принципиальный разрыв.

Формула RAG: Retrieval (найти релевантные фрагменты документов) + Augmentation (добавить их в контекст модели) + Generation (сгенерировать ответ на основе найденного контекста).

По сравнению с альтернативами — дообучением (fine-tuning) и расширением контекстного окна — RAG обеспечивает три ключевых преимущества. Во-первых, актуальность: документы в хранилище обновляются в реальном времени, а модель переобучать не нужно. Во-вторых, прослеживаемость: каждый ответ можно привязать к конкретным источникам, что критически важно для enterprise и regulated industries. В-третьих, масштабируемость: корпус документов может содержать миллионы страниц — никакое контекстное окно не вместит их все, а RAG выбирает только нужные фрагменты.

RAG-пайплайн: архитектурная схема

RAG-пайплайн состоит из двух параллельных фаз, которые работают в разное время. Фаза индексации выполняется заранее — документы обрабатываются, нарезаются на фрагменты и сохраняются в векторной базе данных. Фаза запроса запускается при каждом обращении пользователя — запрос векторизуется, релевантные фрагменты извлекаются и передаются в LLM вместе с исходным вопросом.

Этапы RAG-пайплайна: подробный разбор

1. Подготовка данных

Качество RAG-системы принципиально определяется качеством исходных данных. Первый этап — загрузка документов из всех корпоративных источников: файловых хранилищ (PDF, DOCX, PPTX, XLSX), систем управления контентом (Confluence, SharePoint, Notion), баз знаний, CRM и ERP-систем, корпоративных порталов. Далее следует парсинг — извлечение текстового содержимого, таблиц, заголовков и метаданных. Для PDF и сканированных документов применяется OCR. На финальном шаге выполняется очистка: удаление артефактов форматирования, нормализация кодировок, дедупликация повторяющихся фрагментов.

Метаданные, извлечённые на этом этапе (автор, дата, отдел-владелец, категория, уровень доступа), в дальнейшем используются для фильтрации и авторизации поиска. Не пренебрегайте метаданными — они часто важнее самого текста для определения релевантности.

2. Чанкинг — разбиение на фрагменты

LLM не может обработать документ целиком, если он длиннее контекстного окна. Кроме того, поиск по большим блокам текста менее точен: чем меньше и смысловее фрагмент, тем лучше работает векторный поиск. Существует несколько стратегий чанкинга:

  • Fixed-size chunking — нарезка по фиксированному числу токенов (обычно 500–1000). Простейший метод, работает хорошо для однородных текстов. Недостаток — может разрывать предложения и абзацы на смысловой середине.
  • Semantic chunking — разбиение по смысловым границам с использованием self-similarity: два последовательных предложения объединяются в один чанк, пока их эмбеддинги похожи; при резком смысловом переходе — новый чанк. Даёт лучшее качество, но требует дополнительных вычислений.
  • Recursive splitting — иерархическое разбиение: сначала по параграфам, затем по предложениям, затем по словам. Применяется в LangChain RecursiveCharacterTextSplitter и является хорошим универсальным вариантом.
  • Структурированный чанкинг — для markdown и HTML используются заголовки разного уровня как естественные границы. Для таблиц — каждая строка или группа строк превращается в отдельный чанк с контекстуальным заголовком.

Критически важный параметр — overlap (перекрытие): 10–20% токенов из конца предыдущего чанка дублируется в начале следующего. Это сохраняет контекст на границах и предотвращает потерю информации, которая оказалась «разрезана» на стыке фрагментов.

3. Embedding — векторизация

Embedding-модель преобразует текстовые фрагменты в числовые векторы (embeddings). Семантически похожие тексты оказываются близко друг к другу в многомерном пространстве — именно это свойство используется для поиска.

Выбор embedding-модели существенно влияет на качество всего пайплайна. Ключевые опции:

  • OpenAI text-embedding-3-large — 3072 измерения, высокое качество, особенно для английского. Размерность можно снизить до 256 или 1536 без существенной потери качества.
  • Cohere Embed v3 — поддерживает указание типа задачи (search_document vs search_query), улучшает точность поиска. Отличная поддержка многих языков.
  • E5-large-v2 / multilingual-e5-large — open-source модели от Microsoft, хорошо работают для русского языка, можно развернуть локально.
  • BGE-M3 — многоязычная модель от BAAI с поддержкой sparse, dense и multi-vector retrieval в одной модели. Эффективна для гибридного поиска.
  • Русскоязычные модели — для сугубо корпоративных документов на русском языке рассматривайте rubert-base-cased-sentence или специализированные модели с дообучением на отраслевых текстах.

4. Индексация в векторную базу данных

Векторы сохраняются в специализированную базу данных, оптимизированную для поиска ближайших соседей (ANN — Approximate Nearest Neighbor). Ключевые решения:

  • Qdrant — написан на Rust, высокая производительность, богатые возможности фильтрации по метаданным, развёртывание on-premise или облако. Популярный выбор для enterprise.
  • Milvus — горизонтально масштабируемое решение с поддержкой распределённого деплоя. Подходит для очень больших корпусов (миллиарды векторов).
  • Weaviate — гибридный поиск (semantic + keyword) из коробки, GraphQL API, встроенная поддержка модулей генерации.
  • pgvector — расширение PostgreSQL. Если у вас уже есть PostgreSQL-инфраструктура, это минимальный путь к векторному поиску без дополнительных сервисов.
  • ChromaDB — легковесная open-source БД, идеальна для прототипирования и небольших корпусов.

Помимо самого вектора в базе хранятся метаданные: источник документа, дата создания/обновления, категория, отдел, уровень доступа. Метаданные позволяют реализовать фильтрацию до или после поиска, ограничивая выборку документами, к которым у пользователя есть права.

Стратегия обновления индекса — ещё один архитектурный выбор. Инкрементальная индексация (добавление только изменившихся документов) сложнее в реализации, но значительно быстрее. Полная переиндексация проще, но не подходит для больших корпусов, где требуется актуальность в режиме реального времени.

5. Поиск (Retrieval)

При поступлении запроса он векторизуется той же embedding-моделью, что и документы. Затем в векторной БД выполняется поиск k-ближайших соседей. Но один семантический поиск — не всегда оптимально:

  • Semantic search (dense retrieval) — поиск по семантической близости через cosine similarity или dot product. Хорошо находит смысловые аналоги, устойчив к синонимам и перефразированию.
  • Keyword search (BM25, TF-IDF) — классический полнотекстовый поиск по точным совпадениям слов. Незаменим, когда запрос содержит специфические термины, коды продуктов, названия, аббревиатуры.
  • Hybrid retrieval — комбинация dense и sparse сигналов. Оба метода возвращают ранжированные списки, которые объединяются через RRF (Reciprocal Rank Fusion) или весовое слияние. Hybrid — наилучший выбор для большинства production-систем.

6. Reranking — переранжирование

После первичного поиска (recall) полученные 20–50 кандидатов передаются в cross-encoder reranker для более точной оценки релевантности. Cross-encoder обрабатывает пару (запрос, документ) совместно, что дороже, чем bi-encoder поиск, но точнее. Типичные решения: Cohere Rerank API, BGE-Reranker, cross-encoder/ms-marco-MiniLM. Двухстадийная архитектура fast recall → precise rerank обеспечивает баланс между скоростью и точностью.

7. Генерация ответа

Финальные топ-5–10 фрагментов передаются в LLM как контекст. Качество prompt construction принципиально влияет на ответ. Типичная структура: системный промпт (роль, инструкции, формат), блок контекста (найденные фрагменты с указанием источника), запрос пользователя, инструкция отвечать только на основании предоставленного контекста. Source attribution — указание конкретных документов в ответе — обязательно для enterprise: пользователь должен понимать, откуда взята информация. Guardrails на выходе проверяют, что ответ действительно основан на контексте, а не на параметрической памяти модели.

Типы ретриверов: как выбрать правильный

Выбор стратегии поиска определяется характером запросов и природой корпуса документов. Следующее дерево решений помогает выбрать оптимальный тип ретривера для конкретной задачи:

Классификация RAG-систем: 6 типов

RAG-системы различаются по характеру запросов, требованиям к задержке и критичности точности. Понимание этой классификации помогает выбрать правильную архитектуру на старте проекта.

Тип системы Латентность Точность Сложность Типичное применение
Разговорные <1 с Средняя Средняя Техподдержка, FAQ-боты, HR-помощники
Аналитические 5–30 с Очень высокая Высокая Исследовательские отчёты, аналитика данных
Контентные 30–300 с Высокая Средняя Генерация статей, маркетинговых материалов
Поисковые 1–3 с Высокая Низкая Корпоративный поиск, knowledge management
Рекомендательные 1–5 с Средняя Высокая E-commerce, медиа, контентные платформы
Экспертные 10–60 с Критически высокая Очень высокая Медицина, юриспруденция, финансовый комплаенс

Разговорные системы оптимизируются под минимальную задержку: используется меньше чанков в контексте, lightweight модели для reranking, агрессивное кэширование. Экспертные системы — полная противоположность: здесь важна абсолютная точность, верификация через несколько источников, обязательные ссылки на первоисточники, иногда — человек в цикле (human-in-the-loop). Выбор типа системы определяет архитектурные решения на всех последующих уровнях.

Продвинутые паттерны RAG

Базовый RAG — мощная техника, но в enterprise-контексте он часто требует усиления. Рассмотрим наиболее зрелые и практически применимые паттерны.

Hybrid Retrieval + RRF

Комбинация BM25 (точные совпадения) и dense vector search (семантика). Результаты объединяются через Reciprocal Rank Fusion — алгоритм слияния ранжированных списков без нормализации скоров. Повышает recall на 15–30% относительно каждого метода отдельно.

Two-Stage Reranking

Двухстадийный подход: быстрый первичный поиск по 50–100 кандидатам (fast recall), затем cross-encoder reranker точно переранжирует топ-20. Позволяет использовать дорогой reranker только там, где это нужно, не жертвуя качеством.

GraphRAG

Построение графа знаний поверх RAG: сущности (люди, продукты, события, концепции) и их связи индексируются как граф. При запросе выполняется обход графа, что позволяет отвечать на сложные многошаговые вопросы, требующие понимания взаимосвязей между документами.

Agentic RAG

Агент самостоятельно планирует стратегию поиска: решает, из каких источников искать, какие запросы формулировать, нужно ли выполнять несколько итераций поиска, какие инструменты задействовать. Обеспечивает качество на сложных многоэтапных запросах, недостижимое с наивным RAG.

Corrective RAG (CRAG)

После первичного поиска evaluator-модель оценивает релевантность найденных документов. Если документы не соответствуют запросу — система автоматически корректирует запрос, ищет в других источниках или сигнализирует о недостатке информации, вместо того чтобы генерировать неточный ответ.

Self-RAG

Модель самостоятельно решает, нужен ли retrieval для данного запроса. Для фактических вопросов — запускает поиск и генерирует с источниками. Для общих вопросов типа «как тебя зовут» — отвечает напрямую. Снижает latency и количество запросов к векторной БД.

Алгоритм выбора RAG-фреймворка

Экосистема RAG-инструментов развивается стремительно. Выбор фреймворка определяется стадией проекта, требованиями к развёртыванию и техническими ограничениями:

Важное замечание: фреймворк — это инструмент, а не архитектура. Хорошо спроектированный RAG-пайплайн можно реализовать на любом из перечисленных инструментов. Критичнее — правильный выбор стратегии чанкинга, embedding-модели, типа ретривера и метрик качества для вашей конкретной задачи.

Как оценивать качество RAG-системы

RAG-системы без систематической оценки качества деградируют незаметно. При изменении корпуса документов, модели или стратегии чанкинга результаты могут ухудшиться, если нет метрик. Ключевые метрики качества:

  • Faithfulness (достоверность) — насколько ответ основан на предоставленном контексте, а не на параметрической памяти модели. Оценивается NLI-моделями или специализированными evaluators.
  • Answer Relevancy (релевантность ответа) — насколько ответ соответствует вопросу. Независимо от корректности фактов.
  • Context Precision / Recall — precision: доля релевантных фрагментов среди извлечённых; recall: доля нужных фрагментов, которые были найдены вообще.
  • Context Relevancy — насколько извлечённые фрагменты полезны для ответа на конкретный вопрос.
  • End-to-end accuracy — процент вопросов, на которые система дала фактически верный ответ, по тестовому набору с ground truth.
  • Latency P50/P95/P99 — время отклика системы под нагрузкой. Для разговорных систем P95 < 2 с — целевой ориентир.

Фреймворки для автоматической оценки: RAGAS (популярный выбор с метриками faithfulness, answer relevancy, context recall), DeepEval, TruLens. В BI Consult мы формируем тестовые наборы вопросов вместе с клиентом ещё на этапе проектирования — это позволяет объективно сравнивать варианты архитектуры до вывода в production.

Типичные ошибки при построении RAG

За годы работы с enterprise RAG-проектами мы выявили ряд ошибок, которые систематически снижают качество систем:

  • Игнорирование качества данных. GIGO (Garbage In, Garbage Out) работает в RAG так же, как в любой data-системе. Сканированные PDF без OCR, документы с устаревшей информацией, дублированный контент — всё это напрямую снижает качество ответов. Инвестируйте в ETL-пайплайн.
  • Фиксированный размер чанка без анализа корпуса. 512 токенов — популярное значение по умолчанию, но не оптимальное для большинства задач. Проводите ABтестирование с разными размерами и стратегиями.
  • Одна embedding-модель на всё. Разные типы документов (технические спецификации, юридические тексты, FAQ) могут требовать разных моделей или даже fine-tuning embedding под домен.
  • Отсутствие reranking. Первичный поиск по cosine similarity — хорошая начальная точка, но cross-encoder reranker стабильно улучшает качество в production на 10–20%.
  • Забытые метаданные и фильтрация доступа. В enterprise RAG права доступа критичны. Пользователь не должен получать документы, к которым у него нет прав — даже через LLM-ответ.
  • Отсутствие мониторинга в production. Распределение запросов меняется, корпус обновляется, модели обновляются провайдерами. Без трекинга метрик деградация происходит незаметно.

Что делает BI Consult в области RAG

BI Consult специализируется на проектировании и внедрении production-ready RAG-систем для корпоративного сектора. Мы не продаём шаблонные решения — каждый проект начинается с анализа данных, бизнес-задачи и существующей инфраструктуры.

  • Аудит существующих RAG-решений. Анализируем текущую архитектуру, выявляем узкие места по качеству (faithfulness, relevancy, recall) и производительности (latency, throughput). Даём конкретные рекомендации с измеримым эффектом.
  • Проектирование RAG-архитектуры под бизнес-задачу. Выбираем оптимальную стратегию чанкинга, embedding-модели, тип ретривера, векторную базу данных и фреймворк с учётом ваших требований к качеству, задержке, безопасности и масштабированию.
  • Разработка и внедрение RAG-пайплайнов. Полный цикл от ETL и индексации до API-интеграции с корпоративными системами. Включая обеспечение прав доступа, аудит запросов и источников в ответах.
  • Оптимизация качества и производительности. Повышаем relevance через улучшение чанкинга, добавление hybrid retrieval и reranking. Снижаем latency через кэширование, оптимизацию индексов, балансировку нагрузки.
  • Мониторинг качества в production. Настраиваем дашборды с ключевыми RAG-метриками, систему алертинга при деградации качества, регулярный аудит тестового набора. Обеспечиваем непрерывное соответствие KPI, согласованным на старте проекта.