RAG против дообучения: когда что выбирать
Урок про выбор инструмента: RAG приносит знания, дообучение меняет поведение.
Fine-tuning (дообучение) — дополнительное обучение модели на ваших данных, которое меняет её веса и, значит, её поведение и стиль.
Разная природа подходов
Главное различие удобно держать так: RAG меняет, что модель знает в момент ответа; fine-tuning меняет, как модель себя ведёт. Это не конкуренты-заменители, а инструменты под разные задачи.
| Критерий | RAG | Fine-tuning |
| Что меняет | знания в контексте | веса модели, поведение |
| Свежесть данных | мгновенная (обновил базу) | нужен новый цикл обучения |
| Стоимость обновления | низкая | высокая |
| Прозрачность источника | есть (можно цитировать) | нет (знание «растворено» в весах) |
| Хорош для | фактов, документов, FAQ | стиля, формата, узкого навыка |
Когда RAG
- Ответы должны опираться на конкретные документы (поддержка, юр-база, вики).
- Данные часто меняются — прайсы, регламенты, новости.
- Нужны ссылки на источник и проверяемость.
- Объём знаний велик и не влезает в контекст целиком.
Когда fine-tuning
- Нужен устойчивый стиль или формат ответа (всегда JSON, всегда определённый тон).
- Узкая задача-навык: классификация, извлечение по жёсткой схеме.
- Снижение цены/латентности: дообученная маленькая модель вместо длинных промптов.
Часто — оба вместе
На практике подходы комбинируют: fine-tuning учит модель как отвечать (формат, тон, следование инструкциям домена), а RAG в рантайме подставляет что отвечать (актуальные факты). Так получается и стильно, и фактически верно.
Простой выбор по правилу
def choose(need):
# need: набор требований к задаче
if "свежие_факты" in need or "ссылки_на_источник" in need:
return "RAG"
if "особый_стиль" in need or "узкий_навык" in need:
return "fine-tuning"
return "начни с RAG (дешевле и быстрее проверить гипотезу)"
print(choose({"свежие_факты"}))
print(choose({"особый_стиль"}))
print(choose({"чат_общего_назначения"}))Вывод:
RAG fine-tuning начни с RAG (дешевле и быстрее проверить гипотезу)
Эвристика грубая, но рабочая: в большинстве продуктовых кейсов «дать модели доступ к данным» — это про RAG, и начинать почти всегда стоит с него.
Итог
- RAG меняет знания в моменте; fine-tuning меняет поведение модели.
- RAG — для меняющихся фактов и проверяемости; fine-tuning — для стиля и узких навыков.
- Подходы отлично сочетаются: формат от fine-tuning, факты от RAG.
Проверьте себя
1. Чем принципиально различаются RAG и fine-tuning?
ARAG быстрее генерирует токены
BRAG меняет знания в контексте, fine-tuning меняет веса и поведение модели
CFine-tuning не требует данных
DRAG работает только с картинками
2. Для какой задачи RAG подходит лучше, чем fine-tuning?
AЗаставить модель всегда отвечать строго в формате JSON
BОтвечать по часто меняющейся внутренней документации со ссылками
CИзменить тон общения модели
DСжать модель для мобильного устройства
3. Можно ли использовать RAG и fine-tuning вместе?
AНет, это взаимоисключающие подходы
BДа: fine-tuning задаёт стиль/формат, RAG подаёт актуальные факты
CДа, но только для изображений
DТолько если отказаться от контекстного окна