Бот по базе знаний — самый частый запрос и самая частая причина разочарования. Причина одна: его считают продуктом, который достаточно «накормить документами». На деле качество ответов определяется не моделью, а тем, что происходит между вопросом и моделью — поиском нужного фрагмента.
Модель формулирует ответ по тому, что ей нашли. Нашли не то — ответ будет уверенным и неверным. Поэтому основная работа в таком проекте лежит в материалах и поиске, а не в настройке промпта.
Как это устроено
Схема состоит из четырёх шагов, и модель участвует только в последнем.
1. Подготовка материалов. Документы разбираются на фрагменты — по смыслу, а не по числу символов. Каждый фрагмент должен быть понятен в отрыве от остальных: если раздел называется «Условия», а внутри «срок составляет 5 рабочих дней», без указания, чего именно, — этот фрагмент бесполезен, потому что найдётся не на тот вопрос. Подробно — «Подготовка базы знаний для ИИ».
2. Поиск. По вопросу находятся подходящие фрагменты. Работающий поиск обычно двойной: по смыслу (близкие формулировки) и по словам (точные совпадения артикулов, номеров, названий). Один только смысловой поиск проваливает запросы вида «условия по тарифу Т-450» — номер модели ему безразличен.
3. Отбор. Из найденного отбирается то, что действительно относится к вопросу. Шаг, который чаще всего пропускают, а он критичен: если в модель отправить десять фрагментов, из которых подходят два, качество ответа падает.
4. Формулирование. Модель составляет ответ строго по переданным фрагментам, с указанием источника, и отказывается, если подходящего нет.
Четвёртый пункт — не пожелание, а требование к конструкции. Бот, который обязан отвечать, будет выдумывать, когда данных нет: у него нет другого выхода. Механика — «Почему нейросеть выдумывает».
Что должно быть в материалах
Не «побольше документов», а конкретные свойства.
Актуальность с указанием даты. Если в базе лежит прайс прошлого года рядом с текущим, бот будет отвечать по обоим. Устаревшее удаляется, а не «имеет меньший приоритет».
Непротиворечивость. Самая частая проблема. Срок доставки в регламенте, на сайте и в письмах менеджеров различается — бот отвечает по тому, что нашлось. Устранение расхождений делается людьми до запуска.
Самодостаточность фрагментов. Каждый кусок должен нести контекст. «Возврат в течение 14 дней» — фрагмент, годный к использованию. «В течение 14 дней» — нет.
Покрытие частных случаев. Общие условия обычно записаны. А вот «если клиент из другого региона», «если оплата от юрлица», «если товар был в акции» — живут в головах. Именно эти вопросы и задают чаще всего: то, что есть на сайте, человек уже прочитал.
Разделение публичного и внутреннего. Внутренние регламенты, себестоимость, служебные инструкции не должны попасть в базу публичного бота. Проверяется составом, а не запретом в промпте — инструкция моделью может быть проигнорирована, отсутствующий документ — нет.
Разбор ситуации: бот отвечает по документам, но клиенты жалуются
Задача. Компания оптовой торговли, бот на сайте отвечает на вопросы по условиям поставки.
Симптом. Формально бот работал: отвечал развёрнуто, ссылался на регламент. Но менеджеры получали звонки «ваш бот сказал одно, вы говорите другое».
Что показал разбор диалогов.
Проблема оказалась не в модели и не в промпте. Вопросы клиентов почти всегда содержали условие: «а если заказ меньше минимальной партии», «а если самовывоз», «а для юрлица». В регламенте эти случаи были описаны — но в разных разделах, отдельно от основного правила.
Поиск находил основное правило, потому что оно текстуально ближе к вопросу. Исключение оставалось ненайденным. Модель добросовестно отвечала по тому, что получила, — и была права относительно переданного ей фрагмента, но неправа по сути.
Что сделали.
Первое: свели правило и его исключения в один фрагмент. Не переписали регламент — переструктурировали базу знаний так, чтобы условие ехало вместе с правилом. Это, к слову, характерный пример того, что подготовка материалов не сводится к загрузке файлов.
Второе: добавили точный поиск по словам поверх смыслового. Запросы с артикулами и номерами тарифов перестали промахиваться.
Третье, и самое результативное: бот стал показывать, на чём основан ответ. Под ответом появилась ссылка на раздел регламента. Это дало два эффекта сразу — клиент мог проверить, а менеджеры при разборе жалобы видели, какой именно фрагмент нашёлся, и точно понимали, что чинить.
Четвёртое: в тех темах, где исключений много и они существенны, бот стал отвечать кратко и предлагать уточнить у менеджера, а не пытаться воспроизвести всю логику.
Что из этого стоит забрать. Симптом «бот отвечает неправильно» почти никогда не означает «нужна модель получше». В подавляющем большинстве случаев ломается поиск или материалы. Порядок диагностики — в статье «Чат-бот отвечает неправильно».
Обязательные элементы, без которых бот не годится к запуску
- Отказ от ответа. Нет подходящего фрагмента — бот говорит, что не знает, и предлагает человека. Это не недоработка, а функция.
- Цитирование источника. Ссылка на документ или раздел. Даёт проверяемость клиенту и диагностируемость вам.
- Перевод на оператора. Сам собой не появится — «Передача диалога оператору».
- Журнал диалогов с записью того, какие фрагменты были найдены. Без него разбор ошибок невозможен: вы видите неверный ответ, но не видите причину.
- Стоп-темы. Вопросы, на которые бот не отвечает никогда: медицинские, юридические, финансовые оценки — в зависимости от сферы.
- Обновление без переделки. Изменение документа должно попадать в бота обновлением, а не пересборкой проекта.
Чего бот по базе знаний не делает
Разграничение, экономящее деньги на этапе постановки задачи.
Он не выполняет действий. Не оформляет заказ, не меняет статус, не отправляет письма. Задача «пусть заодно оформляет возврат» — это уже другой класс решений: ИИ-агент, с правами, подтверждениями и другой ценой.
Он не заменяет учётную систему. Вопрос «где мой заказ №12345» — это не база знаний, это интеграция. Ответ на него бот получает запросом в CRM, а не поиском по документам.
Он не знает того, чего нет в документах. Очевидно на словах и постоянно нарушается на практике: от бота ждут ответов на вопросы, ответы на которые нигде не записаны.
Он не «обучается» на диалогах сам по себе. Распространённое заблуждение, разобранное отдельно — «Обучение чат-бота на своих данных».
Частые вопросы
Что такое чат-бот по базе знаний?
Это бот, который отвечает не заготовленными текстами, а на основе ваших документов: по вопросу находит подходящие фрагменты и формулирует ответ по ним, указывая источник. Ключевое отличие от сценарного бота — не нужно заранее предусматривать каждый вопрос. Ключевое требование — материалы должны существовать и быть непротиворечивыми.
Какие документы можно загрузить?
Практически любые текстовые: регламенты, инструкции, прайсы, договоры, накопленную переписку, страницы сайта. Сканы и PDF со сложной вёрсткой требуют дополнительной обработки — извлечения текста с сохранением структуры. Важен не формат, а актуальность и отсутствие противоречий между документами.
Сколько документов нужно?
Объём значит меньше, чем покрытие. Двадцать страниц, закрывающих реальные вопросы вместе с исключениями, работают лучше, чем тысяча страниц общих формулировок. Правильный способ определить состав — разобрать реальные обращения за последние месяцы и посмотреть, на что из них в материалах есть ответ.
Что бот делает, если ответа в документах нет?
Должен сказать, что не знает, и предложить связаться с человеком. Если бот в такой ситуации всё равно отвечает — это дефект конструкции: модели не оставили другого выхода, и она заполнит пробел правдоподобным текстом.
Как обновлять базу знаний?
Изменённый документ загружается заново, и бот начинает отвечать по новой редакции. Пересобирать бота не требуется. Важнее организационная сторона: должен быть человек, отвечающий за актуальность, иначе через полгода бот отвечает по прошлогодним условиям.
Можно ли разграничить доступ, чтобы разные люди видели разное?
Да, и для внутренних ботов это обычно обязательно. Права проверяются при поиске: сотрудник получает ответы только по тем документам, к которым допущен. Реализуется фильтрацией на уровне поиска, а не инструкцией модели — подробнее в статье «ИИ-ассистент для сотрудников».
Что дальше
Начинать стоит с материалов: «Подготовка базы знаний для ИИ» и «Готовность данных к внедрению ИИ». Если бот уже есть и ошибается — «Чат-бот отвечает неправильно». Про выбор типа бота — «На нейросети или сценарный».
Оценить, хватит ли ваших материалов для бота, можно до начала разработки — с этого начинается работа по чат-ботам и ассистентам.