Архитектура RAG-пайплайна: обзор

Карта всего курса: какие компоненты есть в RAG и в каком порядке они работают.

RAG-пайплайн делится на две фазы: индексация (готовим базу заранее) и извлечение + генерация (отвечаем на запрос в реальном времени).

Фаза 1. Индексация (offline)

Делается заранее и периодически обновляется. Цель — превратить ваши документы в быстро искомый индекс.

  1. Загрузка и парсинг — читаем PDF, HTML, Markdown, базы; вытаскиваем чистый текст.
  2. Чанкинг — режем текст на фрагменты подходящего размера (chunks).
  3. Эмбеддинги — каждый чанк превращаем в вектор смысла моделью эмбеддингов.
  4. Запись в векторную БД — сохраняем векторы и метаданные, строим индекс для быстрого поиска.

Фаза 2. Извлечение и генерация (online)

Происходит на каждый запрос пользователя.

  1. Эмбеддинг запроса — той же моделью превращаем вопрос в вектор.
  2. Поиск top-k — находим в БД ближайшие по смыслу чанки.
  3. Сборка промпта — склеиваем найденный контекст с вопросом.
  4. Генерация — LLM пишет ответ по контексту, при желании — со ссылками.

Поток данных целиком

ИНДЕКСАЦИЯ (заранее):
  документы -> парсинг -> чанки -> эмбеддинги -> векторная БД

ЗАПРОС (в рантайме):
  вопрос -> эмбеддинг -> поиск top-k в БД -> контекст
        -> промпт(вопрос + контекст) -> LLM -> ответ + источники

Почему фаз именно две

Разделение на offline и online — не случайность, а основа экономики RAG. Индексация тяжёлая: распарсить тысячи документов, нарезать, прогнать каждый чанк через модель эмбеддингов — это минуты и часы работы. Делать такое на каждый вопрос пользователя немыслимо. Поэтому всю дорогую подготовку выносят вперёд и выполняют один раз (плюс инкрементально при изменении данных). В рантайме остаётся лёгкое: один эмбеддинг запроса и быстрый поиск по готовому индексу — это миллисекунды. Так пользователь получает мгновенный ответ, а тяжёлая работа уже сделана заранее.

Ключевое наблюдение

Обратите внимание: и документы, и запрос проходят через одну и ту же модель эмбеддингов. Только так их векторы оказываются в одном пространстве и их можно сравнивать. Это фундамент, к которому мы вернёмся в разделе про эмбеддинги.

Где обычно ломается

ЭтапТипичная ошибка
Чанкингслишком крупные/мелкие фрагменты — теряется смысл
Эмбеддингиразные модели для базы и запроса — векторы несравнимы
Поискмаленький k — нужный факт не попал в контекст
Промптмодель не обязали опираться на контекст — снова галлюцинирует

Итог

  • RAG = индексация (offline) + извлечение и генерация (online).
  • Индексация: парсинг, чанкинг, эмбеддинги, запись в БД.
  • Рантайм: эмбеддинг запроса, поиск top-k, промпт, генерация.
  • Запрос и документы должны эмбеддиться одной моделью.
Проверьте себя
1. Какие две фазы образуют RAG-пайплайн?
AОбучение и тестирование
BИндексация (offline) и извлечение+генерация (online)
CСжатие и распаковка
DТокенизация и детокенизация
2. Почему запрос и документы нужно эмбеддить одной и той же моделью?
AЧтобы сэкономить деньги
BЧтобы их векторы оказались в одном пространстве и были сравнимы
CЭто требование лицензии
DИначе не запустится Python
3. На каком этапе индексации текст превращается в векторы?
AПарсинг
BЧанкинг
CЭмбеддинги
DЗапись метаданных
Поддержать проект