Webrium
Подписаться

Дообучение или поиск по документам: как выбрать

Почему дообучение и поиск по документам лечат разные отказы, и как понять, какой именно мешает вашей модели

Вложенные слои: снаружи отказ модели выглядит как один — «отвечает неверно», — но в глубине скрыты два разных отказа: у модели нет знания или она не воспользоваДва разных отказа

Два отказа, которые снаружи выглядят одинаково

Неверный ответ модели — это не один дефект, а два разных, и лечатся они противоположными средствами.

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

Второй: знание было — вы сами положили его перед моделью, — но она им не воспользовалась. Пересказала своими словами и исказила, пропустила оговорку, свернула ответ не в тот формат, слила два пункта политики в один.

Снаружи оба отказа выглядят одинаково: «отвечает неправильно». Дообучение второй отказ лечит хорошо, первый — плохо и недолго. Поиск по документам — наоборот. Спор «дообучение или RAG» бесконечен ещё и потому, что спорящие выбирают инструмент на одной оси, а инструменты живут на разных: одно меняет поведение, другое — доступное знание.

Поэтому правильный вопрос звучит не «что выбрать», а «какой у нас отказ».

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

Дообучение — это градиентные шаги по весам. Хорошо усваивается то, что повторяется от примера к примеру: стиль, структура ответа, схема JSON, терминология. Регулярность, живущая в каждом примере, получает подкрепление снова и снова и оседает прочно.

Факт — антипод регулярности. В корпусе он мелькает раз-другой, конкурирует с тем, что модель уже вынесла из предобучения, и в итоге размазывается по огромному числу параметров, не оставляя следа, который можно было бы найти.

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

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

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

Что на самом деле даёт поиск

Окно контекста — рабочая память модели: положенный в него текст приличная модель способна процитировать и применить к вопросу. Поиск по документам — не «модель становится умнее», а конвейер, который в момент запроса кладёт перед ней нужные строки.

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

Но у конвейера своя цена, и не в токенах. Поиск — отдельная система: нарезка документов, эмбеддинги, ранжирование. Каждое звено ломается по-своему: нарезка режет таблицу посередине строки, эмбеддинг не узнаёт термины вашей предметки, ранжирование вытаскивает похожий, но чужой пункт. Модель не наследует истинность из документов — она наследует то, что ей принесли. Принесли не то — ответ будет неверным, со ссылкой на документ, который выглядит подходящим.

Мы уже спорили об этом в материале «Поиск решает меньше, чем принято считать»: поиск — не кнопка «сделать правильно», а подсистема со своими отказами. И умение пользоваться подложенным контекстом — само по себе навык, которым модели владеют по-разному: одни держатся текста, другие по нему скользят. Это свойство надо мерить, а не предполагать.

Тупик: выгрузить документы в обучающую выборку

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

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

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

Дальше — обслуживание. Поменялась страница: пересобирай пары, переобучай, прогоняй оценку, раскатывай. Путь обновления знания идёт через весь тренировочный конвейер, тогда как у поиска — через переиндексацию одной страницы.

И спросить не с кого: у веса нет источника. «Откуда это?» — вопрос, на который обученная выборка не отвечает в принципе.

Диагностика без цифр: тест открытой книги

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

Стало верным — отказ был про знание: модель умеет пользоваться контекстом, читать было нечего. Стройте поиск.

Осталось кривым — модель игнорирует текст, ломает формат, сливает пункты. Это поведение: дообучайте, но сначала попробуйте просто переписать инструкции — иногда дешевле. Если же модель стабильно отвечает неверно даже с текстом под носом, подозревайте её умение держаться контекста: вопрос к выбору модели, а не к способу подачи знаний.

Дальше четыре вопроса, уточняющие выбор:

  • Как часто меняется знание? Живёт понедельно — поиск. Заморожено навсегда — дообучение становится допустимым и для знания.
  • Нужна ли доказуемость? Ссылки на источники, права доступа, аудит — свойства хранилища; веса не цитируют.
  • Есть ли ресурс на лишний шаг? Поиск добавляет конвейер в каждый запрос, дообучение — тренировочный конвейер и, для открытых весов, собственный сервинг. Считайте оба на своей нагрузке.
  • Сколько весят стоячие инструкции? Неизменный пласт правил в каждом промпте — кандидат на перенос в веса.

Зрелые системы обычно сходятся к комбинации: поиск несёт знание, дообучение учит этим знанием пользоваться — цитировать источник, признаваться «в документах этого нет», выдерживать шаблон. Это и есть рабочая роль дообучения внутри RAG-системы.

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

Позиция редакции

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

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

И мы готовы оказаться неправы. Позиция не работает, если одновременно выполняются четыре условия: область замкнута (конечный каталог, фиксированная таксономия), знание заморожено и меняться не будет, доказуемость ответа не нужна, а на шаг поиска нет ресурса — жёсткий потолок задержки, офлайн, устройство без поисковой инфраструктуры. Тогда запоминание фактов дообучением легитимно и дешевле — выбирайте его.

Если хотя бы одно из этих условий у вас не выполняется — сначала тест открытой книги, и уже по его результату всё остальное.

С чем это связано

Метка над заголовком говорит, зачем туда идти: продолжить тему, перейти к практике или увидеть возражение.

Четыре датчика: три показателя поиска в норме, четвёртый — ответы агента — зашкаливает. Метрики поиска красивые, а агент отвечает мимо: поломка живёт не в ретриагент всё ещё мимо
Спор

Поиск решает меньше, чем принято считать

Спорит со ставкой на поиск: агент отвечает мимо и при хорошем ретривере, а поломка — не в поиске. Как за вечер найти настоящее слабое звено и что крутить вместо него.

Два маршрута: короткий дорогой — погоня за одной цифрой точности, длинный дешёвый — набор метрик под разные режимы отказаодна цифранесколько метрик
Усиление

Что мерить у модели кроме точности

Какой бы путь вы ни выбрали, придётся проверить, стало ли лучше, — одной точности тут мало. Как измерять калибровку и отдельные режимы отказа — и как собрать из этого процедуру.

Счёт за инференс, разогнанный повторами вызовов, растёт и пробивает порог бюджета, зажигая сигнал тревогисчёт с повторамимесяц
Предыстория

Сколько стоит инференс: считаем до счёта, а не после

Прежде чем выбирать между дообучением и поиском, стоит понять, из чего складывается цена инференса. Модель расчёта заполняется своими числами за час, а главный множитель — не размер модели, а доля повторов.

Письмо по вторникам

Один разбор недели и короткий список того, что изменилось. Без дайджестов на сорок ссылок.

Начните вводить — материалы появятся здесь.

выбрать · Enter открыть · Esc закрыть