RAG против дообучения для доменных чатботов: как выбрать
RAG против дообучения для доменных чатботов: как выбрать подход для часто меняющихся бизнес‑документов, измерять качество ответов и уменьшать уверенные, но неверные ответы.

Какую проблему решает доменный чатбот?
Доменный чатбот отвечает на вопросы, опираясь на знания вашей организации, а не на общедоступные факты из интернета. Под это попадают HR‑политики, руководства по продукту, правила ценообразования, плейбуки поддержки, SOP и внутренние инструкции.
Большинство команд не пытаются «научить модель всему подряд». Они хотят быстрые и согласованные ответы на повседневные вопросы вроде «Какие у нас правила возврата по годовым планам?» или «Какую форму использовать для запроса поставщика?» без копания по папкам и PDF.
Сложность в доверии. Общая модель может звучать уверенно, даже когда ошибается. Если в политике написано «7 рабочих дней», а модель отвечает «10 календарных дней», красивая формулировка всё равно приведёт к реальным проблемам: неверные утверждения, неправильные ответы клиентам или нарушения комплаенса.
Частота обновления документов важна не меньше, чем точность. Если документы меняются еженедельно, чатбот должен быстро и надежно отражать новые формулировки, иначе он станет источником устаревших указаний. Если документы обновляются раз в год, можно допустить более медленный цикл обновления, но при этом бот всё равно должен быть прав — люди будут доверять его ответам.
При сравнении RAG и дообучения для доменных чатботов цель практическая: полезные ответы, основанные на ваших документах, с понятными ссылками на источники и безопасным поведением, когда бот не уверен.
Хорошее формулирование задачи включает пять пунктов: какие документы бот может использовать (и каких — избегать), какие типы вопросов самые частые, как выглядит «хороший» ответ (правильный, короткий, с источником), как выглядит «плохой» ответ (уверенные догадки, устаревшие правила) и что делать, когда доказательств нет (задать уточняющий вопрос или признать незнание).
RAG и дообучение простыми словами
RAG и дообучение — два разных способа сделать чатбота полезным в работе.
Retrieval augmented generation (RAG) — как открытая книга на экзамене. Когда пользователь задаёт вопрос, система ищет по вашим документам (политики, руководства, тикеты, FAQ). Она передаёт модели самые релевантные фрагменты и просит ответить, опираясь на них. Модель не запоминает ваши документы — она читает выбранные пассажи в момент ответа.
Дообучение — как тренировка модели на примерах, чтобы она усвоила желаемое поведение. Вы предоставляете множество пар «вопрос‑ответ» (включая тон, формат и запреты), и веса модели меняются, так что она отвечает более последовательно, даже если конкретный документ не был передан.
Простая модель восприятия:
- RAG поддерживает актуальность знаний, тянув их из текущих документов.
- Дообучение делает поведение согласованным: стиль, правила и шаблоны принятия решений.
Оба подхода могут сбоить, но по-разному.
У RAG слабое место — поиск. Если этап извлечения находит не ту страницу, устаревший текст или слишком мало контекста, модель всё ещё может дать уверенный ответ, но он будет основан на неверных данных.
У дообучения слабое место — чрезмерная обобщённость. Модель может выучить паттерны из примеров и применять их там, где лучше задать уточняющий вопрос или признать незнание. Дообучение также не справляется с частыми изменениями документов, если его не переобучать.
Конкретный пример: если политика по командировкам поменялась с «утверждение менеджера для сумм свыше $500» на «свыше $300», RAG сможет ответить верно в тот же день, если найдёт обновлённую политику. Дообученная модель может продолжать повторять старое число, пока вы не переобучите и не проверите новое поведение.
Что лучше для часто меняющихся бизнес‑документов?
Если документы обновляются еженедельно (или ежедневно), извлечение обычно ближе к реальности, чем обучение. С RAG вы держите модель в основном неизменной и обновляете базу знаний. Так чатбот сразу отражает новые политики, цены или заметки о продукте после изменения исходного контента — без ожидания нового цикла обучения.
Дообучение работает, когда «истина» стабильна: постоянный тон, фиксированный набор правил продукта или узкая задача. Но если вы дообучаете модель на содержании, которое постоянно движется, вы рискуете научить её вчерашнему ответу. Частые переобучения затратны и легко выполняются с ошибками.
Управление: обновления и владение контентом
Практический вопрос — кто отвечает за обновления.
С RAG нетрудно: нетехнические команды могут публиковать или заменять документ, и бот подхватит его после переиндексации. Часто добавляют шаг утверждения, чтобы только определённые роли могли вносить изменения.
С дообучением обновления обычно требуют ML‑конвейера. Это часто значит тикеты, ожидание и менее частые обновления.
Комплаенс и аудит
Когда спрашивают «почему бот так ответил?», у RAG явное преимущество: можно показать точные отрывки, на которых основан ответ. Это помогает для внутренних аудитов, проверок поддержки и регулируемых тем.
Дообучение «запекает» информацию в весах, и доказать, что конкретное предложение взято из конкретного источника, сложнее.
Затраты и усилия различаются:
- RAG требует первичной работы по сбору документов, разбиению на фрагменты, индексированию и поддержанию надёжной загрузки.
- Дообучение требует подготовки обучающих данных и их оценки, плюс повторные тренировки при изменениях знаний.
- При частых обновлениях контента RAG обычно дешевле в поддержке.
Пример: HR‑чатбот, отвечающий по политикам, которые меняются ежеквартально. С RAG HR может заменить PDF политики, и бот начнёт использовать новый текст быстро, показывая при этом абзац, на который опирается. AppMaster может помочь собрать админ‑панель для загрузки утверждённых документов и логирования использованных источников без написания приложения с нуля.
Когда использовать RAG, когда дообучение и когда вместе
Если цель — доверенные ответы, которые соответствуют текущим документам компании, начните с retrieval augmented generation для бизнес‑документов. RAG тянет релевантные фрагменты в момент ответа, так что бот может указать точную политику, спецификацию или SOP, подкрепляющую ответ.
RAG — лучший дефолт, когда контент часто меняется, когда нужно показать источник ответа или когда разные команды управляют разными документами. Если HR обновляет политику по отпускам ежемесячно, вы хотите, чтобы чатбот автоматически использовал самую новую версию, а не то, чему он «научился» недели назад.
Дообучение имеет смысл, когда основные проблемы — не в фактах. Дообучение полезно для стабильного поведения: единый голос, строгое форматирование (например, всегда отвечать по шаблону), более точная маршрутизация намерений или жёсткие правила отказа. Это обучение тому, как себя вести, а не чему именно равняется последний справочник.
Комбинация встречается часто: RAG даёт факты, а небольшое дообучение (или сильные системные инструкции) поддерживает согласованность и осторожность при отказах. Это удобно для продуктовых команд, которые встраивают чатбот в приложение, где UX и тон должны оставаться одинаковыми даже при изменении базы знаний.
Быстрые признаки для выбора:
- Выбирайте RAG, если ответы должны оставаться актуальными, цитировать точные формулировки или включать источники из последних документов.
- Выбирайте дообучение, если нужен фиксированный стиль, повторяющиеся форматы вывода или строгие правила «делай/не делай».
- Комбинируйте, если хотите ответы, основанные на документах, плюс согласованный тон и безопасное поведение при отказе.
- Пересмотрите план, если вы постоянно переобучаете модель ради каждого обновления документа или если извлечение часто промахивается из‑за беспорядка в контенте или плохого разбиения на фрагменты.
Простой способ заметить ошибочный подход — боль от поддержки. Если каждое обновление политики вызывает запрос на переобучение модели, вы используете дообучение для решения проблемы свежести документов. Если RAG находит правильную страницу, но бот всё равно отвечает рискованно, скорее всего, нужны дополнительные ограждения (иногда дообучение помогает).
Если вы строите это в реальном инструменте (например, в AppMaster), практический подход — сначала RAG, затем добавлять дообучение только для тех паттернов поведения, которые легко тестировать и измерять.
Пошагово: как настроить надёжную базу (ещё до выбора модели)
Большинство провалов чатботов происходят от грязных документов и неясных целей, а не от самой модели.
Начните с инвентаризации документов: что есть, где хранится и кто может одобрять изменения. Зафиксируйте тип и формат (PDF, вики, тикеты, таблицы), владельца и источник правды, частоту обновлений, правила доступа и места, где обычно возникают дубликаты.
Далее чётко опишите задачу чатбота. Выберите 20–50 реальных вопросов, на которые он должен хорошо отвечать (например «Как запросить возврат?» или «Каков порядок эскалации on‑call?»). Также опишите, что он должен отвергать: юридические советы, HR‑решения или все вопросы вне утверждённых документов. Отказ — это успех, если он предотвращает неверный ответ.
Затем приведите документы в порядок, чтобы ответы легко было обосновать. Удалите дубликаты, оставьте одну актуальную версию и пометьте старые версии явно. Добавьте понятные заголовки, даты и разделы, чтобы бот мог указать на ту часть, которая подтверждает ответ. Если политика часто меняется, держите одну страницу с обновлениями вместо множества копий.
Наконец, установите контракт вывода. Требуйте короткий ответ, ссылку на раздел источника и следующий шаг при необходимости (например, «Откройте тикет в Финансах»). Если вы встраиваете это во внутренний инструмент с помощью AppMaster, полезно держать единый UI: сначала ответ, затем цитата, затем кнопка действия. Такая структура делает проблемы заметными во время тестирования и снижает количество уверенных, но неправильных ответов.
Как оценивать качество без догадок
Начните с небольшого офлайн‑набора тестов. Соберите 30–100 реальных вопросов из тикетов, писем и чатов. Сохраните исходную формулировку, включите пару расплывчатых вопросов и несколько вопросов, которые легко неправильно понять. Это даст стабильный способ сравнить RAG и дообучение для доменных чатботов.
Для каждого вопроса напишите короткий ожидаемый ответ простым языком и укажите точный раздел документа, который это поддерживает. Если бот может сказать «я не знаю», включите случаи, где это корректное поведение.
Оценивайте ответы по нескольким простым критериям
Держите карточку оценки небольшой, чтобы вы ею реально пользовались. Эти четыре проверки покрывают большинство бизнес‑ошибок чатботов:
- Корректность: фактически ли ответ верен, без выдуманных деталей?
- Полнота: охватил ли ключевые пункты, необходимые пользователю для действий?
- Качество цитаты: действительно ли цитата или ссылка поддерживает утверждение?
- Ясность: читается ли ответ конкретно и понятно, а не расплывчато?
Если вы используете извлечение, добавьте ещё одну проверку: извлёкся ли правильный фрагмент, и использовал ли ответ этот фрагмент, а не проигнорировал его?
Отслеживайте изменения во времени, а не единичные впечатления
Сделайте качество регулярной работой:
- Прогоняйте один и тот же набор тестов после каждого изменения промпта, извлечения или модели.
- Храните одну карточку оценок и записывайте итоги по датам.
- Помечайте ошибки (отсутствие детали политики, неверная цифра, устаревший документ, неясная формулировка).
- Сначала разбирайте худшие 5 вопросов и исправляйте корень проблемы.
Пример: если HR‑чатбот правильно отвечает на вопрос о льготах, но ссылается на устаревший PDF, это понижает общую оценку. Это сигнал к исправлению: не модель, а свежесть документов, разбиение на фрагменты или фильтры извлечения.
Если вы встраиваете чатбот в приложение (например с AppMaster), храните тестовые вопросы и результаты рядом с релизами, чтобы быстро обнаруживать регрессии.
Как предотвратить уверенные, но неверные ответы на практике
Уверенные неверные ответы обычно происходят по одной из трёх причин: модель не получила нужный контекст, получила неправильный контекст или вы случайно поощрили её гадать. Риск есть и у RAG, и у дообучения, но проявляется по‑разному. RAG падает при слабом извлечении; дообучение ошибается, когда модель заполняет пробелы правдоподобным текстом.
Самый эффективный приём — требовать доказательства. Рассматривайте каждый ответ как небольшой отчёт: если подтверждающего текста нет в предоставленных источниках, бот не должен заявлять это как факт. На практике это значит: в промпте передавайте извлечённые фрагменты и требуйте, чтобы модель опиралась только на них.
Добавьте чёткие правила отказа и эскалации, чтобы у бота был безопасный запасной вариант. Хороший чатбот — не тот, кто отвечает на всё, а тот, кто знает, когда не может.
- Если в источниках нет упоминания темы, говорить «У меня недостаточно информации в документах, чтобы ответить».
- Если вопрос неясен, задать один уточняющий вопрос.
- Если ответ влияет на деньги, доступ или соответствие правилам, направить к человеку или создать тикет.
- Если документы противоречат друг другу, указать на конфликт и спросить, какая версия/политика приоритетна.
Ограничения также снижают вероятность догадок и упрощают поиск ошибок. Для ответов типа политики требуйте название документа и дату, процитируйте 1–2 ключевые строки, которые обосновывают ответ.
Пример: сотрудник спрашивает «Какой последний лимит возмещения за командировку?» Если извлечённый фрагмент из политики прошлого года, бот должен показать дату этого фрагмента и отказаться называть «последний» лимит без более свежего источника.
Если вы строите это в AppMaster, включите правила в бизнес‑процессы: шаг извлечения, проверка доказательств, затем либо ответ с цитатами, либо эскалация. Так поведение безопасности будет постоянным, а не опциональным.
Типичные ошибки и ловушки, которых стоит избегать
Большинство провалов чатботов связаны не с моделью, а с грязными документами, слабым извлечением или обучением, которое побуждает систему выглядеть уверенно вместо замедления ответа. Надёжность — это в первую очередь проблема данных и процессов.
Типичная проблема RAG — разбиение на фрагменты без учёта смысла. Если фрагменты слишком маленькие, вы теряете контекст (кто, когда, исключения). Если фрагменты слишком большие, извлечение приносит в ответ несвязанный текст, и ответ превращается в смесь полуправильных деталей. Простой тест: если вы читаете один фрагмент отдельно, он должен иметь смысл и содержать полное правило.
Другая частая ловушка — смешивание версий. Команды индексируют политики из разных месяцев, затем бот извлекает противоречивые абзацы и выбирает один случайно. Относитесь к свежести документов как к функции: помечайте источники датами, владельцами и статусом (черновик/утверждён), удаляйте или понижайте устаревшее содержимое.
Самая опасная ошибка — заставлять модель отвечать, когда ничего релевантного не найдено. Если извлечение пустое или с низкой уверенностью, бот должен сказать, что не нашёл подтверждения и задать уточняющий вопрос или передать человеку. Иначе вы получите уверенную чепуху.
У дообучения есть свой провал: переобучение на узком наборе Q&A. Бот начинает механически повторять формулировки обучения, становится хрупким и может потерять базовые навыки рассуждения или общий язык.
Симптомы проблем на тестах:
- Ответы не содержат цитат или ссылаются не на те разделы.
- Один и тот же вопрос получает разные ответы в зависимости от формулировки.
- На вопросы политики даются окончательные ответы, хотя в документах по этому поводу тишина.
- После дообучения бот хуже справляется с простыми, повседневными вопросами.
Пример: если политика по командировкам поменялась на прошлой неделе, но обе версии проиндексированы, бот может уверенно одобрить расход, который больше не разрешён. Это не проблема модели, а проблема контроля контента.
Быстрый чек‑лист перед запуском
Перед тем как выпустить доменный чатбот реальным пользователям, отнеситесь к нему как к любому бизнес‑инструменту: он должен быть предсказуемым, тестируемым и безопасным в случаях неуверенности.
Используйте этот чек‑лист как финальный фильтр:
- Каждый ответ в стиле политики обоснован. Для утверждений типа «Это можно оплатить» или «SLA — 99.9%» бот должен показать, откуда это взято (название документа + заголовок раздела или выдержка). Если указать источник нельзя, не подавать утверждение как факт.
- Бот задаёт вопросы, когда запрос неясен. Если запрос пользователя может значить два разных варианта, бот задаёт один короткий уточняющий вопрос вместо гадания.
- Бот умеет корректно сказать «я не знаю». Когда извлечение возвращает слабую или нулевую поддержку, он вежливо отказывает, объясняет, чего не хватает, и предлагает, что предоставить (название документа, дату, команду).
- Обновления документов меняют ответы быстро. Измените предложение в ключевом документе и проверьте, что ответ бота изменился после переиндексации. Если бот продолжает повторять старое, конвейер обновлений ненадёжен.
- Вы можете просматривать ошибки. Логируйте вопрос пользователя, извлечённые фрагменты, итоговый ответ и клики «полезно/не полезно». Это делает работу над качеством возможной без догадок.
Конкретный тест: выберите 20 реальных вопросов из тикетов или внутренних чатов, включая хитрые с исключениями. Прогоните их до запуска, затем снова после изменения одного документа политики. Если бот не может стабильно обосновывать ответы, задавать уточняющие вопросы и отказываться при отсутствии доказательств, он не готов к продакшену.
Если вы превращаете бота в реальное приложение (например, внутренний портал), сделайте источники видимыми и добавьте кнопку «сообщить о проблеме» рядом с каждым ответом.
Пример сценария: чатбот для часто обновляемых внутренних документов
Ваша HR‑команда обновляет политики и материалы по адаптации сотрудников ежемесячно: правила PTO, лимиты возмещения, даты регистрации льгот и шаги адаптации. Люди продолжают задавать одинаковые вопросы в чате, и ответы должны соответствовать последним версиям документов, а не тому, что было верно в прошлом квартале.
Вариант A: только RAG, оптимизированный под актуальность
С настройкой RAG бот сначала ищет в текущей HR‑базе знаний, затем отвечает, опираясь только на найденное. Важный принцип — «показывай свою работу» по умолчанию.
Простой рабочий поток, который обычно срабатывает:
- Индексируйте HR‑документы по расписанию (или при каждом утверждённом обновлении) и храните название документа, раздел и дату последнего обновления.
- Отвечайте короткими цитатами (документ + раздел) и указывайте «последнее обновление», когда это важно.
- Правила отказа: если ничего релевантного не извлечено, бот говорит, что не знает, и предлагает, к кому обратиться.
- Чувствительные темы (увольнение, юридические споры) по умолчанию переводите к человеку.
Это остаётся точным при изменении документов, потому что вы не запекаете старый текст в модель.
Вариант B: лёгкое дообучение для формата, при этом факты от RAG
Если вам нужен согласованный тон и структурированные ответы (например: «Право», «Шаги», «Исключения», «Эскалация в HR»), можно слегка дообучить модель на небольшом наборе утверждённых примеров ответов. Факты при этом по‑прежнему берутся из RAG.
Правило остаётся строгим: дообучение учит, как отвечать, а не чему именно равняется политика.
Через 2–4 недели успех выглядит так: меньше эскалаций в HR по базовым вопросам, выше точность в выборочных проверках и меньше уверенных неверных ответов. Оценивайте это по покрытию цитат (добавляют ли ответы источники), доле отказов при отсутствии информации и еженедельному аудиту выборки HR.
Команды часто строят это как внутренний инструмент, чтобы HR мог обновлять контент, проверять ответы и корректировать правила без ожидания инженеров. AppMaster — один из способов собрать полноценное приложение (бэкенд, веб‑интерфейс и мобильная версия) с ролями и админ‑рабочими процессами.
Следующие шаги: пилот и превращение чатбота в продукт
Относитесь к чатботу как к небольшому продукту. Начните с одной команды (например, поддержки клиентов), одного набора документов (последний плейбук поддержки и политики) и одного канала обратной связи. Это сужает область и делает проблемы качества очевидными.
План пилота, который можно измерить:
- Выберите 30–50 реальных вопросов из логов команды.
- Определите «хорошо»: правильный ответ, ссылка на нужный документ и «я не знаю», когда это нужно.
- Проведите пилот 2–3 недели с небольшой группой и собирайте голосование «палец вверх/вниз» и краткие комментарии.
- Анализируйте ошибки дважды в неделю и исправляйте причину (отсутствие документов, плохое разбиение, неясная политика, слабые подсказки).
- Расширяйте доступ только после достижения уровня качества, которому вы доверяете.
Чтобы перейти от пилота к «реалу», вам нужны базовые функции приложения вокруг модели. Люди будут задавать чувствительные вопросы, и вы должны уметь отследить, что произошло, если бот ошибся.
Рано стройте основное: аутентификацию и роли (кто и какие наборы документов видит), логирование и следы аудита (вопрос, извлечённые источники, ответ, обратная связь), простую админ‑панель для управления источниками документов и просмотра паттернов ошибок, а также безопасный маршрут (передача человеку или тикету при низкой уверенности).
Здесь платформы без кода, такие как AppMaster (appmaster.io), могут помочь: они позволяют выпустить сопутствующее приложение — бэкенд, админ‑панель и управление ролями — оставляя логику чатбота модульной. Так проще сменить подход позже: оставаться на RAG или добавить дообучение для конкретных задач.
После пилота добавляйте по одному новому набору документов. Держите тот же набор тестов, измеряйте снова и только потом открывайте доступ другим командам. Медленное расширение лучше быстрых экспериментов — это снижает количество уверенных, но неверных ответов до того, как они подорвут доверие.
Вопросы и ответы
Используйте RAG, когда ответы должны соответствовать тому, что содержится в документах сейчас, особенно если часто меняются политики, цены или SOP. Используйте дообучение (fine-tuning), когда вам нужна в первую очередь согласованность поведения — тон, шаблоны ответов или правила отказа — и сами факты стабильны.
RAG обычно подходит лучше: вы обновляете базу знаний и переиндексируете без необходимости переобучать модель. Так бот может отражать новую формулировку в тот же день, если поиск возвращает обновленный фрагмент.
RAG можно доверять, если он последовательно извлекает актуальные, корректные фрагменты, а бот вынужден отвечать только на их основе. Добавьте цитаты (название документа, раздел, дату) и явный откат «я не могу ответить», когда источников не хватает или они устарели.
Дообучение меняет поведение модели: она начинает отвечать в предпочитаемом стиле, соблюдать правила «делать/не делать» и выдавать ответы в заданном формате. Оно не автоматически поддерживает актуальность фактов — для этого требуется частое переобучение, что рисковано, если информация часто меняется.
Комбинируют, когда нужны факты, привязанные к документам, и согласованный UX. Пусть RAG поставляет актуальные фрагменты, а легкое дообучение (или строгие системные инструкции) обеспечивает структуру, тон и корректное поведение при отказе.
Начните с 30–100 реальных вопросов из тикетов и чатов, сохраните исходную формулировку и пропишите короткий ожидаемый ответ с указанием поддерживающего раздела документа. Оценивайте по корректности, полноте, качеству цитирования и ясности, затем прогоняйте тот же набор после каждого изменения.
Такое происходит, когда в индекс попадают несколько версий политики, и поиск возвращает конфликтующие фрагменты. Решение: выбрать один источник правды, пометить документы датами/статусом, удалить или понизить устаревшие версии, чтобы бот не «выбирал одну наугад».
Правило простое: если в извлеченных источниках нет утверждения, бот не должен представлять его как факт. В таких случаях он должен задать уточняющий вопрос, сообщить, что поддержки в документах нет, или передать человеку для решения чувствительных вопросов.
Делайте фрагменты так, чтобы каждая часть могла сама по себе представлять полное правило или шаг, включая исключения и контекст «кто/когда». Слишком маленькие фрагменты теряют смысл; слишком большие — возвращают лишний текст и смешивают детали.
Постройте сопутствующие функции заранее: контроль доступа (кто видит какие документы), админ‑панель для управления источниками и логирование — вопрос, извлеченные фрагменты, ответ и обратная связь пользователя. С помощью AppMaster можно быстро собрать такой портал и рабочие процессы без полного написания всего с нуля.


