Основы RAG: генерация с опорой на ваши данные
RAG без магии: как эмбеддинги и векторный поиск находят нужные фрагменты, а модель отвечает с опорой на них. Этапы конвейера и когда RAG действительно нужен.
RAG (Retrieval-Augmented Generation) — способ отвечать на вопросы по вашим данным, которых модель не знает: внутренней базе знаний, документации, свежим документам. Идея проста: перед генерацией найти релевантные фрагменты и подложить их модели в контекст. Никакого дообучения — только поиск плюс подстановка. Разберём этапы без магии. Определение — в глоссарии.
Зачем нужен RAG
- Знания вне обучения — модель не знает вашу внутреннюю документацию и события после своего обучения; RAG подаёт эти данные в момент запроса.
- Меньше выдумок — с опорой на конкретный источник модель реже галлюцинирует и может сослаться на фрагмент.
- Актуальность — обновили базу, и ответы обновились без дообучения модели.
- Экономия контекста — вместо всей базы в окно уходит только релевантный запросу кусок.
Как это работает: эмбеддинги и векторный поиск
Ключ к поиску «по смыслу» — эмбеддинги: текст превращается в вектор чисел так, что близкие по смыслу тексты дают близкие векторы. Вопрос пользователя тоже превращается в вектор, и поиск находит фрагменты базы с ближайшими векторами — даже если дословно слова не совпали. Определение — в глоссарии.
Этапы конвейера RAG
| Этап | Что происходит | Когда выполняется |
|---|---|---|
| Разбиение | Документы режутся на фрагменты (чанки) удобного размера | Заранее, при подготовке базы |
| Индексация | Каждый фрагмент превращается в эмбеддинг и кладётся в векторную базу | Заранее, при подготовке базы |
| Поиск | Вопрос превращается в эмбеддинг, находятся ближайшие фрагменты | На каждый запрос пользователя |
| Сборка контекста | Найденные фрагменты подставляются в промпт вместе с вопросом | На каждый запрос пользователя |
| Генерация | Модель отвечает, опираясь на поданные фрагменты | На каждый запрос пользователя |
Первые два этапа — подготовка базы, делаются один раз (и повторяются при обновлении данных). Остальные три выполняются на каждый вопрос. На этапе генерации подойдёт любая модель каталога — RAG не привязан к конкретной.
Когда RAG нужен, а когда нет
- Нужен — ответы по большой базе знаний, документации, корпусу документов, где под каждый вопрос релевантен лишь малый кусок.
- Избыточен — если все данные помещаются в контекст целиком и это недорого, проще подать их напрямую без векторного поиска.
- Не поможет — если проблема в рассуждении, а не в знаниях; тогда смотрите на выбор модели и промпт, а не на поиск.
Частые вопросы
Чем RAG отличается от дообучения модели?
Дообучение меняет саму модель на ваших данных — это дорого и требует переобучения при обновлениях. RAG модель не трогает: он находит релевантные фрагменты и подаёт их в контекст на каждый запрос. Обновить знания — просто обновить базу.
Зачем нужны эмбеддинги, если есть обычный поиск по словам?
Поиск по словам находит точные совпадения, эмбеддинги — совпадения по смыслу. Вопрос «как вернуть товар» найдёт фрагмент про «оформление возврата», даже если слова не совпадают дословно. Часто их комбинируют.
Какая модель нужна для генерации в RAG?
Любая из каталога — RAG не привязан к конкретной модели. Выбор делается по задаче: для простых ответов по фрагментам хватит среднего тира или лёгкой модели, для сложного синтеза по многим источникам берите сильнее.
Любая модель для RAG — по одному ключу
Открыть каталог