Обсудить задачу

DikLabГайдыботы

Гайд · боты · автоматизация

Бот с базой знаний врёт клиентам: три проверки за десять минут

4 минботыавтоматизация

Бот уверенно называет цену, которой нет в прайсе, и вы меняете модель на подороже. Сначала стоит проверить поиск по базе. Три проверки руками, без разработчика.

Поставить это мне

Содержание

В чём фокус

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

Куда на самом деле идёт вопрос клиента

Вопрос сначала попадает не к модели, а в поиск по вашим файлам. Файлы заранее порезаны на куски, поиск выбирает из них несколько самых похожих на вопрос и передаёт модели. Модель видит только эти куски и отвечает по ним.

Отсюда два места поломки, и модель в них не участвует:

  • База порезана плохо. Кусок оборвался посреди таблицы, и вторая половина прайса осталась в соседнем куске, который поиск не достал.
  • Поиск достал не то. Он ищет по смыслу, то есть «похожее». Для вопроса «как оформить возврат» это хорошо. Для вопроса про конкретный артикул плохо: похожих артикулов много, а нужен один.

Более сильная модель в обоих случаях так же гладко изложит неправильные куски.

Что понадобится

  • Доступ к базе знаний бота в том виде, в каком её видит поиск: список кусков текста, а не исходные файлы
  • Сам бот в тестовом чате
  • Десять минут и ваш настоящий прайс под рукой, чтобы сверять ответы

Три проверки

  1. Прочитайте десять кусков «на холодную»

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

  2. Спросите точный артикул

    Не «расскажи про доставку», а номер заказа или код товара из прайса, например условный WX-4200. Бот должен назвать цену именно этой позиции. Если он отвечает про похожий товар, поиск работает только по смыслу и точные совпадения теряет.

  3. Спросите то, чего в базе нет

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

Что значит каждый результат

Проверка не прошла — что чинить
ПроверкаЧто увиделиЧто чинить
Куски «на холодную»Обрывки таблиц, фразы без началаНарезку базы: кусок не должен обрывать таблицу или фразу
Точный артикулОтвет про похожий товарПоиск: добавить точное совпадение по словам рядом с поиском по смыслу
То, чего нетУверенная выдумкаИнструкцию бота: разрешить и потребовать ответ «не знаю», когда в найденном нет ответа

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

Чтобы не споткнуться

Проверять на вопросах, которые сами придумали «по смыслу».

На общих вопросах бот выглядит хорошо почти всегда. Ломается он на точном: цена, срок, номер, артикул. Берите вопросы из настоящей переписки с клиентами.

Считать «не знаю» плохим ответом.

Для клиента «уточню у менеджера» обходится в минуту ожидания. Уверенно названная неверная цена обходится в спор и возврат.

Проверить один раз.

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

Частые вопросы

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

Источники

  1. arXiv — Seven Failure Points When Engineering a Retrieval Augmented Generation SystemИсследование о том, где ломаются системы «поиск по базе плюс модель»: семь точек отказа

Пишу об этом в канале

Короткие разборы и то, что не дотянуло до отдельного материала.