Чат-бот не находит ответ, который есть на сайте: почему условия магазина тонут в каталоге
Эдгар Косулин 7 мин чтения
Серия «ИИ-консультант на сайте» · часть 6 из 6
Содержание
29 октября вечером мы проверяли демо нашего ИИ-консультанта на живом магазине. Это сайт, который мы разрабатывали для клиента: в карте сайта 1 736 адресов, почти все карточки товаров. Демо прочитало 300 страниц за 2 минуты 43 секунды, и мы задали боту семь вопросов, какие задал бы покупатель.
Адрес, часы работы и график на праздники бот назвал верно. А на вопрос «А на 1000 руб заказать можно?» ответил, что в прайсе много позиций дешевле 1 000 ₽, «так что собрать заказ на такую сумму вполне реально», а есть ли минимальная сумма, он точно не знает. На странице «О нас» при этом прямо написано: «Заказы до 10 тыс. рублей не принимаются». Мимо прошли ещё два вопроса: про доставку по России и про то, есть ли на сайте страница «О нас». Сама страница была прочитана.
Первая мысль была неприятная: так придётся чинить бота под каждый сайт. Разобрались, и оказалось наоборот: так ломается любой магазин с большим каталогом, и причина одна для всех.
Как бот ищет ответ на сайте
ИИ-консультант не держит весь сайт в голове. Он режет страницы на фрагменты по несколько абзацев, и на каждый вопрос покупателя ищет среди них подходящие. В ответ идут только найденные фрагменты. На этом магазине из 300 страниц вышло 833 фрагмента.
Ищет он обычно по смыслу. Это называется векторным поиском: каждый фрагмент превращается в набор чисел, который описывает его смысл, и бот берёт фрагменты, близкие по смыслу к вопросу. Слова при этом могут не совпадать: на вопрос «сколько везти до Казани» найдётся абзац про сроки доставки, где Казань не упомянута. Для сайта услуг с парой десятков страниц это работает хорошо.
Почему условия тонут в каталоге
В магазине сотни карточек товаров, и в каждой цена в рублях. Для векторного поиска любая такая карточка похожа на вопрос «можно заказать на 1000 руб» сильнее, чем одна фраза на «О нас». Нужный фрагмент оказался на 200–400-м месте из 833 и до бота просто не дошёл. Он честно ответил по тому, что ему принесли: по ценам из прайса.
Так же утонули доставка и сама страница «О нас». Это не особенность одного сайта. Чем больше в магазине похожих карточек, тем глубже в выдаче окажутся условия, о которых спрашивают чаще всего.
Ещё две находки при разборе
Пока искали причину, нашли две проблемы на нашей стороне.
304 фрагмента из 833 были мусором. В разметке сайта стоят обработчики Alpine.js вида
@click="… => …". Они сбивали наш разбор HTML, и хвост кода вместе с классами
оформления уходил в текст страницы. Больше трети базы знаний бота занимали строки, которые
покупатель никогда не видел.
Весь потолок демо ушёл на один раздел. Демо читает не больше 300 страниц и брало их в порядке «сначала короткие адреса». В итоге 172 карточки пришлись на самый большой раздел, а из нескольких крупных разделов не попало ни одной страницы. На вопрос о товаре из такого раздела бот ответить не смог бы.
Почему у других сайтов бот отвечает хорошо
У сайтов, где наш бот отвечает уверенно, заполнены два поля в кабинете: «О компании» и «Правила компании». Это короткий текст и список утверждений вроде «Доставка по городу бесплатна при заказе от 50 000 ₽». Бот держит их в каждом разговоре, без всякого поиска, поэтому условия не могут утонуть. Заполнены эти поля вручную.
У демо и у только что подключённого сайта эти поля пустые. Вся надежда на поиск, а поиск на каталоге, как видно выше, промахивается.
Что мы поменяли в боте
Исправляли в движке, а не под этот магазин, чтобы правки достались всем сайтам.
- Поиск по словам рядом с поиском по смыслу. К найденному по смыслу бот добавляет до трёх фрагментов, в которых есть слова вопроса. Число из вопроса весит меньше слов: «1000» в вопросе это сумма покупателя, а на сайте такое число найдётся в сотне цен.
- Условия выписываются сами. После первого чтения сайта модель один раз пробегает главную, «О нас», доставку, оплату и контакты и заполняет «О компании» и «Правила компании». Только пустые поля: то, что владелец написал сам, не трогается. Кабинет просит проверить, что получилось. Цены в правила не попадают, они меняются и остаются в страницах.
- Код фреймворков в текст не попадает. Атрибуты Alpine, Vue и Livewire снимаются до разбора страницы.
- Демо читает разделы по очереди. По одной карточке из каждого раздела каталога по кругу, а не подряд из одного.
- Карточка называется по товару. Если у страницы нет заголовка
h1, её имя берётся из заголовка в начале текста, а не из общего<title>.
На этом магазине модель выписала в правила «Минимальный заказ - 10 000 рублей», «Доставка возможна по России», адрес, часы и телефоны. После повторного чтения мусора в базе не осталось, а из каждого раздела попало от 21 до 28 карточек.
Что показал замер
Мы прогнали один и тот же набор базовых вопросов по пяти сайтам, включая этот магазин, до правок и после, по три раза на каждый вопрос.
| Что включено | Верных ответов |
|---|---|
| как было | 54 из 69 |
| только поиск по словам | 55 из 69 |
| все правки вместе | 64 из 69 |
По общему счёту один поиск по словам почти ничего не дал, но именно он починил минимальный заказ и доставку на этом магазине и ещё на одном сайте. Остальной прирост дали условия в полях: с ними бот отвечает верно, даже когда поиск принёс не ту страницу. На самом магазине стало 25 верных ответов из 27 вместо 19. Медиана времени ответа упала с 11,3 до 5,4 секунды: боту реже приходится искать по второму и третьему разу.
Что мы не чинили: это дело сайта
Три вещи на этом магазине бот исправить не может, их правят на сайте.
Страницы разделов без текста. В HTML страницы раздела нет сетки товаров, только заголовок. Бот читает HTML и видит почти пустую страницу.
Битые адреса в карте сайта. Часть адресов из sitemap.xml отдаёт 404. Карта говорит боту и
поисковикам, что читать на сайте, и битый адрес в ней ведёт в пустоту.
Один <title> на все карточки. Если у тысячи товаров одинаковый заголовок окна, различить их по
нему нельзя ни боту, ни поисковику. Об этом же мы писали в статье о том, как сделать сайт видимым для
нейросетей.
Что проверить на своём сайте
Эти советы работают с любым ИИ-консультантом, не только с нашим.
- Условия текстом и словами покупателя. Минимальный заказ, доставка, оплата, часы и адрес должны быть написаны так, как о них спросят: «минимальный заказ», «доставка по России», а не только «работаем с оптовыми клиентами».
- На отдельной неглубокой странице. «Доставка и оплата» по адресу вида
/dostavka, а не абзац в середине истории компании и не вкладка в карточке товара. - Не только на картинке. Условие на баннере для бота не существует. Подробнее о том, что подготовить до подключения, в статье о подключении ИИ-консультанта.
- Карта сайта без 404 и одинаковых заголовков. Откройте
sitemap.xml, проверьте десяток адресов из разных разделов и посмотрите заголовки окон у пары карточек. - Пять-семь базовых вопросов до запуска. Минимальный заказ, доставка в другой город, оплата, часы, адрес, «есть ли у вас X». Если бот ответил мимо, а условие на сайте есть, дело почти всегда в том, что поиск его не нашёл.
- Условия в настройках бота. Если у сервиса есть поле для фактов о компании, которые бот знает всегда, впишите туда главное. Это надёжнее любого поиска.
Как бот работает с каталогом, ценами и наличием, мы разбирали во второй части серии.
Как это устроено на Siteko. В кабинете ИИ-консультанта, в разделе «Настройки бота», есть поля «О компании» и «Правила компании»: бот знает их в каждом разговоре. После первого чтения сайта модель заполняет пустые поля сама, с главной, «О нас», доставки, оплаты и контактов, и кабинет просит проверить результат. Проверьте и допишите то, чего нет на сайте. Кнопка «Показать промпт» там же покажет, что бот получит в итоге.
Если бот уже стоит и отвечает мимо, начните с одного вопроса: написано ли это условие на сайте текстом и на какой странице. Если написано, впишите его в правила бота, и ответ станет верным со следующего вопроса.
Серия
ИИ-консультант на сайте
- 1. Чат-бот для сайта: ИИ, сценарии или живой оператор
- 2. Чат-бот для интернет-магазина: подбор товаров, цены и наличие
- 3. Бесплатный чат-бот для сайта: какие бывают и где подвох
- 4. Как подключить ИИ-консультанта на сайт: пошагово
- 5. Разработка чат-бота для сайта или готовый сервис
- 6. Чат-бот не находит ответ, который есть на сайте: почему условия магазина тонут в каталоге
Новые статьи и разборы — в канале Siteko: Telegram MAX
Подписчикам: +30 дней к пробному хостингу, клиентам: +150 ₽ на баланс