←Все статьи блога
ликбез·16 сентября 2026 г.·8 мин чтения·7 просмотров

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

Почему бот находит инструкцию по замене дисплея на запрос «сломался экран» и галлюцинирует ответы: разбираем механику векторного поиска.

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

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

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

Шаг 1. Что видит нейросеть, когда читает «сломался экран»

Для машины нет ни слов, ни сочувствия к разбитому стеклу. Есть только токены (минимальные кусочки текста, часто части слов) и числа. Прежде чем ответить, модель переводит текст в эмбеддинг. Это длинный ряд цифр — представьте его как GPS-координаты точки в пространстве смыслов. Если у измерения всего две оси, то слово «король» будет иметь координаты (10, 5), а «монарх» — (9.8, 5.2). Они стоят вплотную. Слово «картошка» улетит куда-то в район (-40, 10).

В этом многомерном пространстве точки никогда не разбросаны хаотично. Они образуют кластеры (группы точек). Столица всегда лежит рядом со страной, врач — плечом к плечу с больницей и лекарством. Машина не читает ваши буквы, она просто измеряет расстояние между идеями. Когда пользователь пишет «сломался экран», точка этого запроса приземляется ровно в тот же кластер, где лежат координаты фраз «разбился дисплей», «трещина на матрице» и «замена стекла после падения». Бот должен искать не символы, а соседние дома в этом цифровом районе.

Как проверить это прямо сейчас без кода: Возьмите любой бесплатный онлайн-векторизатор (например, API модели Sber-RuBERT или публичные демки sentence-transformers). Скопируйте туда свой проблемный запрос «сломался экран» и строчку из вашей идеальной инструкции «инструкция по замене дисплея после удара». Посмотрите на метрику косинусного сходства (показатель того, насколько направления двух векторов совпадают). Если число выше 0.85 — поздравляю, математически это одно и то же событие. Ваш старый поиск по словам об этом даже не догадывался.

Шаг 2. Почему рекомендации становятся осмысленными, а старые теги умирают

Вернемся к нашему пользователю с разбитым телефоном. Он открывает базу знаний сам. Старый алгоритм ищет тег #экран. Но в базе есть три статьи: «Замена дисплея iPhone 13», «Калибровка цветопередачи OLED» и «Как убрать битые пиксели программно». Все они помечены одним тегом. Старый поиск выдаст их вперемешку.

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

Тот же механизм чинит ваши продуктовые рекомендации. Допустим, клиент купил у вас объектив 50mm. Вы описываете его вектором [ремонт_оптики, фиксы, портретная_съемка]. Когда он вернется в каталог, система покажет ему не все товары с тегом «Canon», а светосильные фикс-объективы, чьи числовые профили почти идентичны купленному. Машине плевать на бренд в названии, она смотрит на плотность чисел.

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

Шаг 3. Откуда берутся галлюцинации и почему бот выдумывает методы API

Но вот беда: иногда наш умный бот вместо ссылки на замену дисплея начинает уверенно писать: «Для ремонта экрана нажмите Volume Up, Power и кнопку "Домой" на 15 секунд». На этой модели телефона кнопки «Домой» нет в природе. Модель не врет вам назло. Она просто выбрала точку слишком далеко от реального кластера фактов.

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

Как поймать ошибку за руку: Заведите себе правило красной линии. Любой векторный поиск должен возвращать не только саму статью, но и оценку уверенности (score). Если косинусное сходство ниже 0.7 — это чужая территория. Настройте систему так, чтобы при низком балле бот отвечал строго: «Я не нашел точной инструкции под ваш сценарий падения, создайте заявку инженеру». Лучше честное «не знаю», чем уверенная чушь, которая заставит клиента лезть внутрь аппарата отверткой.

Шаг 4. Собираем промпт-инъекцию: лечим бота за один вечер

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

1) Роль: «Ты — холодный векторный поиск. Твоя единственная задача — находить куски документации по смыслу. У тебя нет задачи быть дружелюбным собеседником или психологом». 2) Правило обработки: «Сначала переведи свободный запрос пользователя в краткий смысловой вектор — буквально одной сухой фразой. Например, „сломался экран“ превращается в „физическое повреждение дисплейного модуля вследствие падения“. Затем ищи в базе только по этой итоговой формулировке». 3) Жесткое ограничение: «Если максимальное сходство найденной статьи с запросом меньше 0.8, выведи заглушку: „Точной инструкции не найдено“. Не пытайся рассуждать, не объединяй две разные статьи в одну, не придумывай названия кнопок» .

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

Что сделать завтра: Откройте вашу CRM или Help Desk. Выгрузите последние 50 диалогов, закрытых тегом «Неверный ответ бота». Выберите один конкретный сценарий — например, обращения по поломкам техники после падения. Подключите к вашему каналу промежуточный скрипт (если пишете на Python — библиотека LangChain делает это в 10 строк, если используете конструкторы вроде n8n — готовый блок Embedding Search). Пропишите туда роль, правило перевода в смысл и порог отсечения 0.8. Загрузите туда текущую базу FAQ. Дайте доступ трем самым недовольным клиентам в качестве бета-тестеров. Через сутки посмотрите на метрики эскалации (пересылок живому оператору): они упадут минимум вдвое, потому что машина наконец начала измерять расстояние между идеями, а не считать буквы.