Основы

Основы RAG: генерация с опорой на ваши данные

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

3 минуты чтения

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

Зачем нужен RAG

  • Знания вне обучения — модель не знает вашу внутреннюю документацию и события после своего обучения; RAG подаёт эти данные в момент запроса.
  • Меньше выдумок — с опорой на конкретный источник модель реже галлюцинирует и может сослаться на фрагмент.
  • Актуальность — обновили базу, и ответы обновились без дообучения модели.
  • Экономия контекста — вместо всей базы в окно уходит только релевантный запросу кусок.

Как это работает: эмбеддинги и векторный поиск

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

Этапы конвейера RAG

ЭтапЧто происходитКогда выполняется
РазбиениеДокументы режутся на фрагменты (чанки) удобного размераЗаранее, при подготовке базы
ИндексацияКаждый фрагмент превращается в эмбеддинг и кладётся в векторную базуЗаранее, при подготовке базы
ПоискВопрос превращается в эмбеддинг, находятся ближайшие фрагментыНа каждый запрос пользователя
Сборка контекстаНайденные фрагменты подставляются в промпт вместе с вопросомНа каждый запрос пользователя
ГенерацияМодель отвечает, опираясь на поданные фрагментыНа каждый запрос пользователя

Первые два этапа — подготовка базы, делаются один раз (и повторяются при обновлении данных). Остальные три выполняются на каждый вопрос. На этапе генерации подойдёт любая модель каталога — RAG не привязан к конкретной.

Качество RAG чаще упирается в поиск, а не в модель. Если в контекст попали нерелевантные фрагменты, даже сильная модель ответит плохо — «мусор на входе, мусор на выходе». Настройка разбиения и поиска обычно важнее выбора модели генерации.

Когда RAG нужен, а когда нет

  • Нужен — ответы по большой базе знаний, документации, корпусу документов, где под каждый вопрос релевантен лишь малый кусок.
  • Избыточен — если все данные помещаются в контекст целиком и это недорого, проще подать их напрямую без векторного поиска.
  • Не поможет — если проблема в рассуждении, а не в знаниях; тогда смотрите на выбор модели и промпт, а не на поиск.
RAG — это про поиск и подстановку, а не про запоминание. Модель ничего не «выучивает» из вашей базы: она видит только те фрагменты, что вы подали в конкретном запросе. Забыли положить нужный кусок — модель о нём не узнает.

Частые вопросы

Чем RAG отличается от дообучения модели?

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

Зачем нужны эмбеддинги, если есть обычный поиск по словам?

Поиск по словам находит точные совпадения, эмбеддинги — совпадения по смыслу. Вопрос «как вернуть товар» найдёт фрагмент про «оформление возврата», даже если слова не совпадают дословно. Часто их комбинируют.

Какая модель нужна для генерации в RAG?

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

Любая модель для RAG — по одному ключу

Открыть каталог