Представьте: клиент хочет «умного бота для базы знаний». Первый вопрос, который я задаю: «Данные часто меняются?»
От ответа зависит архитектура. И бюджет. И сроки. И головная боль на следующие полгода.
За 30+ проектов я использовал оба подхода. RAG — в 80% случаев. Fine-tuning — в 15%. Комбинацию — в 5%. Расскажу, почему такое распределение и как выбирать.
RAG (Retrieval-Augmented Generation):
Модель остаётся базовой
При запросе ищем релевантные документы в базе
Подставляем найденное в контекст
Модель генерирует ответ на основе найденного
Fine-tuning:
Дообучаем модель на своих данных
Знания «запекаются» в веса нейросети
Модель отвечает «из памяти»
Данные нужны только на этапе обучения
Прежде чем разбирать сценарии — вот минимальный, но рабочий RAG-пайплайн на Python. Всего 20 строк, чтобы понять суть:
from openai import OpenAI from qdrant_client import QdrantClient client = OpenAI() qdrant = QdrantClient("localhost", port=6333) def rag_query(question: str, collection: str = "docs") -> str: # 1. Получаем embedding вопроса embedding = client.embeddings.create( model="text-embedding-3-small", input=question ).data[0].embedding # 2. Ищем релевантные документы results = qdrant.search( collection_name=collection, query_vector=embedding, limit=5 ) # 3. Формируем контекст context = "\n\n".join([r.payload["text"] for r in results]) # 4. Генерируем ответ с контекстом response = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": f"Отвечай на основе контекста:\n{context}"}, {"role": "user", "content": question} ] ) return response.choices[0].message.content # Использование answer = rag_query("Какой SLA у тарифа Бизнес?")
Это ядро любого RAG-решения. Дальше обвязка: чанкинг документов, индексация, re-ranking — но суть всегда одна: поиск + генерация.
Документация, прайсы, регламенты, новости — всё, что обновляется регулярно.
Реальный сценарий: база знаний техподдержки. Новые продукты, новые баги, новые решения — каждую неделю.
С RAG: добавил документ в базу — сразу доступен
С Fine-tuning: переобучать модель при каждом изменении (дорого и долго)
RAG позволяет показать источник: «Ответ основан на документе X, раздел Y, страница Z».
Когда это критично:
Юридические документы — клиент хочет видеть пункт договора
Финансовая отчётность — нужна ссылка на источник цифр
Медицинские рекомендации — ответственность за информацию
Внутренние регламенты — «а где это написано?»
Fine-tuning не даёт прозрачности. Модель отвечает «из головы» — непонятно, откуда взялась информация.
Fine-tuning эффективен на 1000-100000 примеров. RAG работает с миллионами документов.
Реальный сценарий: база данных на 600 000 записей о промышленном оборудовании. Fine-tuning просто не справится — слишком много данных для «запекания» в модель.
|
Параметр |
RAG |
Fine-tuning |
|---|---|---|
|
Стоимость запуска |
$100-500 |
$1000-10000 |
|
Время до MVP |
1-2 недели |
2-4 недели |
|
Стоимость обновления |
Минуты + $0 |
Часы + $100-1000 |
RAG: данные в вашей базе. Можно удалить, изменить, ограничить доступ по ролям.
Fine-tuning: данные «размазаны» по весам модели. Удалить конкретную информацию невозможно. Это важно для GDPR и персональных данных.
Модель должна писать как конкретный автор. Или генерировать код в определённом стиле. Или отвечать с определённой интонацией.
Реальный сценарий: бот пишет ответы клиентам в стиле компании — с определёнными фразами, структурой, tone of voice.
RAG даст контент (что сказать). Fine-tuning даст голос (как сказать).
Если в вашей области 500+ специфичных терминов, которые базовая модель не знает или путает.
Примеры:
Медицинская диагностика с узкой специализацией
Юридические термины конкретной юрисдикции
Внутренняя терминология крупной компании
Когда нужен строго определённый формат JSON/XML с доменной логикой.
Реальный сценарий: парсинг счетов-фактур → структурированные данные для 1С. Нужно извлечь 20+ полей в точном формате.
Fine-tuning на примерах «вход → выход» даёт более стабильный результат, чем RAG с промпт-инструкциями.
RAG добавляет latency: поиск по базе + ранжирование + формирование контекста.
|
Этап |
RAG |
Fine-tuning |
|---|---|---|
|
Embedding запроса |
50-100ms |
— |
|
Векторный поиск |
20-50ms |
— |
|
LLM inference |
500-2000ms |
500-2000ms |
|
Итого |
600-2200ms |
500-2000ms |
Для real-time приложений (голосовые ассистенты, игры) разница в 100-200ms может быть критичной.
Fine-tuned модель работает автономно. RAG требует доступ к векторной базе.
Реальный сценарий: мобильное приложение с локальной LLM для использования без интернета.
В 5% проектов использую оба:
Реальный сценарий: юридический ассистент.
Fine-tuning: юридический стиль, терминология, структура документов
RAG: актуальные законы, судебная практика, внутренние регламенты
Модель «знает» как говорить юридическим языком (fine-tuning), но берёт актуальную информацию из базы (RAG).
|
Критерий |
RAG |
Fine-tuning |
Гибрид |
|---|---|---|---|
|
Данные меняются часто |
✅ |
❌ |
✅ |
|
Нужна прозрачность |
✅ |
❌ |
✅ |
|
Объём > 100K документов |
✅ |
❌ |
✅ |
|
Специфичный стиль |
❌ |
✅ |
✅ |
|
Сложная терминология |
⚠️ |
✅ |
✅ |
|
Бюджет < $1000 |
✅ |
❌ |
❌ |
|
Время < 2 недель |
✅ |
❌ |
❌ |
|
Latency критична |
⚠️ |
✅ |
⚠️ |
|
Offline-режим |
❌ |
✅ |
❌ |
Клиент хотел бота, который «пишет как наш CEO». Сделали RAG на примерах его писем.
Результат: бот выдавал правильную информацию, но стиль был нейтральным. RAG не изменяет стиль модели — он добавляет контент.
Решение: переделали на fine-tuning для стиля + RAG для актуальных данных.
Клиент настоял: «Дообучим модель на нашей документации, будет умнее».
Через месяц документация устарела. Модель отвечала по старым ценам и регламентам.
Решение: переделали на RAG. Теперь обновление — минуты, не переобучение.
При 10 одновременных запросах векторный поиск стал узким местом. Ответы тормозили.
Решение: добавили кэширование частых запросов + масштабировали векторную базу.
Клиент думал: дообучим — будет 100% точность.
На редких случаях модель всё равно галлюцинировала. Fine-tuning не гарантирует безошибочность.
Решение: добавили верификацию критичных ответов через RAG.
|
Компонент |
RAG |
Fine-tuning |
|---|---|---|
|
Разработка MVP |
$500-2000 |
$2000-5000 |
|
Векторная БД (месяц) |
$50-200 |
— |
|
Обучение модели |
— |
$100-1000 |
|
Хостинг модели |
$100-500/мес |
$200-1000/мес |
|
Inference (1M запросов) |
$50-200 |
$30-150 |
Скрытые расходы RAG:
Поддержка векторной базы
Обновление embeddings при изменении документов
Масштабирование при росте нагрузки
Скрытые расходы Fine-tuning:
Переобучение при изменении данных
Версионирование моделей
Тестирование после каждого обновления
RAG работает когда:
Данные обновляются чаще, чем раз в месяц
Нужна прозрачность и ссылки на источники
Бюджет ограничен, нужен быстрый старт
Объём данных большой (10K+ документов)
Fine-tuning работает когда:
Данные стабильны (обновления раз в квартал или реже)
Нужен специфический стиль или формат
Latency критична
Есть бюджет на обучение и поддержку
Гибрид работает когда:
Нужен и стиль, и актуальные данные
Сложная предметная область
Готовы инвестировать в сложную архитектуру
RAG — выбор по умолчанию:
Быстрый старт
Прозрачность
Актуальность данных
Контроль над информацией
Fine-tuning — когда есть причина:
Специфичный стиль
Сложная терминология
Структурированный вывод
Минимальная latency
Гибрид — для сложных кейсов:
Стиль + актуальные данные
Терминология + обновляемая база
Главное правило: начинайте с RAG, переходите к fine-tuning только при необходимости. В 80% случаев RAG достаточно.
Какой подход используете вы? RAG, fine-tuning или гибрид? Делитесь опытом в комментариях.
RAG Paper (Lewis et al.) — оригинальная статья по RAG
OpenAI Fine-tuning Guide — руководство по дообучению
Qdrant — векторная база данных
LangChain RAG Tutorial — туториал по RAG-пайплайну
Источник


