Слогер Создать блог
AI

Fine-tuning или RAG: что выбрать, когда модель ошибается

Retrieval меняет контекст, fine-tuning — веса. Разбираем, как понять, что сломано, и почему это вопрос диагностики, а не цены.

Спор о том, что лучше — fine-tuning или RAG — обычно сводят к сравнению цены и точности. Это неправильная постановка вопроса. Эти два подхода меняют разные вещи, поэтому сначала надо понять, что именно сломано.

Главное различие

Retrieval меняет контекст. Во время инференса что-то вне модели находит релевантные фрагменты и подставляет их в промпт. Веса не трогаются, факты актуальны на момент последней индексации, и можно показать, какой документ дал ответ.

Fine-tuning меняет веса. Он сдвигает распределение, из которого модель семплирует, — в сторону ваших форматов, стиля, разбиения задачи на шаги, словаря меток. Никакого источника не прикрепляет, без нового обучения не обновляется, применяется одинаково ко всем запросам.

Отсюда правило: если модель ошибается из-за нехватки информации — это retrieval. Если она делает правильную вещь плохо — fine-tuning. Почти все провалы в этой области — результат того, что команда применяет не тот инструмент.

Ошибка первая: обучать на факты

Логика обычно такая: у нас 40 000 страниц документации, давайте сделаем fine-tuning, и модель будет знать продукт. На деле модель выучивает стиль документации — заголовки, ритм, оговорки — и выдаёт гладкие, хорошо оформленные, уверенно неверные ответы.

Механизм простой. Факт, встречающийся один раз в 40 000 страниц, даёт ничтожную долю градиентного сигнала. Стилистика встречается на каждой странице и попадает в каждый батч. Градиентный спуск — машина частотности, он учит частое.

Симптом стоит научиться замечать: после fine-tuning под знания ответы выглядят лучше, но не становятся точнее, и модель заметно охотнее отвечает на вопросы, на которые должна отказать. Вторая часть важнее.

Ошибка вторая: retrieve для поведения

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

Это работает, если смотреть на метрику, и накапливается в системный промпт на 3000 токенов инструкций, которые платятся на каждом запросе. И это хрупко: инструкции, погребённые в длинном промпте, выполняются менее надёжно, чем те, что вшиты в веса, а каждый новый кейс добавляет ещё одно предложение, конкурирующее с остальными.

Формат — это то, в чём fine-tuning действительно силён. Если в вашем промпте появился раздел про стиль длиннее, чем описание самой задачи, — это датасет для fine-tuning, который ещё не записан.

Что показали опубликованные сравнения

Две работы стоят того, чтобы прочитать их целиком.

  • Ovadia et al., 2023 — Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs (arXiv 2312.05934). Сравнивали некотролируемый fine-tuning с retrieval для ввода новых фактов и обнаружили, что retrieval опережает на задачах, требующих знаний, — даже на фактах, которые модель видела при предобучении.
  • Gekhman et al., 2024 — Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations? (arXiv 2405.05904). Нашли, что примеры с действительно новыми знаниями усваиваются медленно, и по мере их усвоения модель начинает галлюцинировать чаще на других вопросах. Это лучшее объяснение симптома «уверенно неверно и теперь более склонна угадывать».

Ни одна из работ не говорит, что fine-tuning бесполезен. Обе говорят, что это неправильный инструмент для знаний — ровно тот вывод, о котором статья.

Они сочетаются, и обычно так и надо

Зрелая конфигурация — обе: retrieval даёт факты, а fine-tuning учит модель работать с извлечённым контекстом: когда цитировать, как сказать «документы не отвечают на этот вопрос», как примирить противоречащие пассажи, что выдать, когда retrieval пуст.

Последнее поведение — настоящая цель для fine-tuning, отказ при недостаточном контексте — это поведение, а не факт. Обучить модель отказываться — значит научить её политике, а это как раз то, что веса кодируют хорошо.

Датасет для такого fine-tuning имеет особую форму, и её стоит проговорить. Каждый пример — полный retrieval-промпт: тот же системный промпт, те же пассажи в том же порядке, то же форматирование, что в проде, в паре с желаемым ответом. Обязательно включать негативные случаи: промпты, где retrieval не дал ничего полезного или дал противоречащие пассажи, с целевым ответом, который отказывает или флагует конфликт. Датасет только из успешных retrieval научит модель, что контекст всегда достаточен, — это противоположный урок.

Выбор: четыре вопроса

ВопросЧто он значит
Ответ меняется?Если сегодняшний правильный ответ отличается от правильного ответа месяц назад — retrieval. Веса — это снимок.
Нужна ссылка на источник?Retrieval. Fine-tuned модель не может сказать, из какого примера взялся ответ.
Это форма или суждение?Fine-tuning. Формат, тон, длина, политика отказов, словарь меток, декомпозиция на шаги.
Системный промпт больше 1000 токенов правил стиля?Fine-tuning, и экономия на каждом запросе. Этот промпт уже есть спецификация датасета.

Перед тем, как строить что-то, стоит проверить, переживает ли проблема смену модели вообще: тот же промпт на другой семье моделей иногда чинит проблему формата. Сравнить две модели на одинаковых входах — дешевле, чем строить любую систему.

Fine-tuning и RAG не конкурируют за один бюджет. Они чинят разные поломки. Сначала диагностика: меняется ли ответ? нужен ли источник? это форма или суждение? раздулся ли промпт? Ответы уже дают архитектуру, а не вкусовщину.

По материалам: ai. Текст переработан редакцией Слогера.

← На главную

Рекламное место — Конец поста
Реклама · Слогер

Комментарии (0)

Войдите, чтобы комментировать.

Пока нет комментариев. Будьте первым.