Векторный поиск: зачем он бизнесу, а не только программистам
Векторный поиск — это поиск по смыслу, а не по буквам. Он находит «кресло офисное на колёсиках» по запросу «стул компьютерный с роликами», хотя ни одно слово не совпадает. Ниже — как это устроено, в каких задачах разница видна владельцу и когда обычного поиска достаточно.
Чем ломается обычный поиск
Классический поиск по сайту сравнивает слова. Он умеет учитывать окончания и опечатки, но в основе всё равно лежит совпадение написания.
Отсюда три типовых провала. Человек называет вещь синонимом, которого нет в карточке. Человек описывает ситуацию, а не предмет. Человек пишет длинную фразу, и совпадений не находится ни по одному слову.
В детском магазине это выглядит так. Родитель ищет «чем занять ребёнка в поездке». В каталоге есть подходящие наборы, но слова «поездка» нет ни в одном названии, и поиск честно отвечает, что ничего не найдено.
Пустая выдача — самый дорогой экран магазина. Человек, который увидел ноль результатов, обычно не переформулирует запрос, а уходит.
Что такое вектор, если объяснять без математики
Представьте, что каждому тексту система выдаёт координаты. Не одну и не две, а несколько сотен чисел, каждое из которых отвечает за какой-то оттенок смысла.
Тексты с близким смыслом получают близкие координаты. «Кресло офисное на колёсиках» и «стул компьютерный с роликами» окажутся рядом, потому что описывают одно и то же, хотя написаны по-разному.
Этот набор чисел и называется вектором. Считает его специальная модель, обученная на большом объёме текстов: она видела достаточно, чтобы знать, какие формулировки означают одно и то же.
Поиск после этого превращается в геометрию. Запрос тоже переводится в вектор, а система ищет те позиции, чьи координаты ближе всего. Результат — список по смысловой близости, а не по совпадению слов.
Как это выглядит внутри системы
Порядок словами такой.
Сначала для каждой позиции каталога считается вектор из её текста: название, характеристики, описание. Вектора складываются в специальное хранилище, где быстро ищется ближайшее.
Пересчёт нужен только тогда, когда меняется текст позиции. Добавили товар — посчитали вектор для него; поправили описание — пересчитали одну строку, а не весь каталог.
В момент запроса система считает вектор фразы пользователя и достаёт ближайшие позиции. Дальше результат обычно смешивается с обычным поиском: точные совпадения по артикулу и названию поднимаются наверх, смысловые идут следом.
Отдельная деталь, о которой редко говорят: качество зависит от того, что вы кладёте в текст позиции. Вектор от строки «Артикул 4417-Б» бессмысленен, потому что смысла в этой строке нет.
Где мы это применяли
В платформе Papa BU векторный поиск стоит на базе позиций. Оператор ищет похожее своими словами, чтобы не завести дубль, взять описание за основу или посмотреть, за сколько уходила такая же вещь.
Там же он помогает при генерации объявлений: система подтягивает близкие по смыслу позиции и берёт их как ориентир для структуры текста.
В магазине «Жук и Плут» той же логикой устроен ИИ-консультант: родитель описывает ситуацию, а система подбирает материал по смыслу, а не по названию товара. Разница видна на вопросах вида «что взять четырёхлетке, который не усидчив».
Три задачи, где разница заметна владельцу
Поиск в каталоге с длинными запросами. Пустых выдач становится меньше, потому что система находит близкое, даже когда точного совпадения нет.
Поиск дублей при заведении позиций. Оператор вводит описание и сразу видит похожие карточки — это дешевле, чем чистить каталог от дублей потом.
Ответы на однотипные вопросы. База накопленных ответов ищется по смыслу вопроса, и человек в поддержке находит готовый текст вместо того, чтобы писать заново.
Сколько это весит в проекте
Инженерно механизм несложен: посчитать вектора, положить в хранилище, научиться искать ближайшее. В проекте с уже готовым каталогом это дни, а не недели.
Дорогой оказывается подготовка. Описания, характеристики, единые формулировки — работа со стороны заказчика, и она обычно занимает больше времени, чем весь код поиска.
Поэтому мы почти всегда предлагаем сначала посмотреть на реальные запросы из существующего поиска. Если в логах видно много длинных фраз и пустых выдач, смысловой поиск окупится; если люди ищут по артикулу, разговор заканчивается на этом месте.
Чего он не делает
Векторный поиск не понимает наличие, цену и сроки. Это данные, и они берутся из базы, а не из смысла текста.
Он не заменяет фильтры. Когда покупатель точно знает, что ему нужен размер 42 и синий цвет, фильтр отработает точнее и быстрее любого смыслового поиска.
Он не спасает каталог без описаний. Смысл считается из текста, и если текста нет, считать нечего — это самая частая причина, по которой внедрение разочаровывает.
И он не бесплатный в работе: вектора надо хранить и пересчитывать, а вызовы модели стоят денег, пусть и небольших.
Почему результат надо ограничивать
Смысловой поиск всегда что-нибудь находит. В этом его сила и его главная опасность.
Ближайшая позиция может быть близкой по меркам чисел и совершенно неуместной по меркам человека. Допустим, покупатель ищет «подарок годовалому», а система выдаёт набор для десятилетних, потому что оба текста про подарки и про детей.
Лечится это порогом близости и фильтрами поверх результата. Если ближайшая позиция дальше заданной границы, честнее показать пустую выдачу с предложением написать в чат, чем выдать случайное.
Второй слой ограничений — обычные условия каталога: наличие, категория, возрастная группа. Смысл предлагает кандидатов, а правила магазина решают, кого из них показать.
Кому не нужно
Если в каталоге пятьдесят позиций с понятными названиями, обычного поиска и фильтров достаточно. Смысловой поиск в такой ситуации — расход без заметного эффекта.
Если товары ищут по артикулу или коду, вся ценность механизма проходит мимо: точное совпадение и так работает лучше.
Смысл появляется на объёме от нескольких сотен позиций, при живых описаниях и при запросах, где человек описывает задачу словами. Как считаются такие работы, видно в разделе цены.
Коротко
Векторный поиск переводит тексты в координаты, где близкий смысл означает близкое расположение, и ищет по этой близости вместо совпадения слов. Он закрывает длинные человеческие запросы, поиск дублей и подбор по ситуации. Обычный поиск и фильтры при этом остаются на месте: артикул, цену и наличие смысл искать точным совпадением. Без нормальных описаний в каталоге механизм бесполезен, потому что считать смысл будет не из чего.
Первый разговор — разбор задачи: нужна ли вам система или хватит одной страницы. Без обязательств и без счёта.
Частые вопросы
Векторный поиск заменяет обычный поиск по сайту?
Нет, они решают разные задачи и обычно работают вместе. Точное совпадение — артикул, номер заказа, название модели — быстрее и надёжнее находится обычным поиском. Векторный подключается там, где человек описывает своими словами то, чего не знает как назвать.
Нужен ли для этого искусственный интеллект и внешние сервисы?
Нужна модель, которая превращает текст в числа, и хранилище этих чисел. Модель может работать на своём сервере или вызываться у внешнего сервиса, разница в цене и в том, уходят ли данные наружу. Для каталога товаров обычно хватает недорогого варианта.
Сколько стоит добавить такой поиск в существующий магазин?
Зависит от того, есть ли осмысленные описания. Сам механизм — сравнительно небольшая часть работы, основное время уходит на подготовку текстов, из которых считается смысл. Каталог без описаний придётся сначала наполнить, и это не работа разработчика.
Те, что не помогают, мы переписываем — по этой кнопке и решаем, какие именно.
Ещё по теме
Что малому бизнесу от CRM реально нужно, чем готовая система отличается от своей внутри сайта и по каким признакам выбирать между ними.
тем, кто заказывает CRM купили, а работать в ней не стали: разбор причинШесть ошибок, из-за которых оплаченная CRM превращается в пустую базу, и что делать с каждой, пока подписка ещё действует.
тем, кто заказывает Freedom Gym: клубная система с абонементами и расписаниемИстория одного проекта: как из журнала на ресепшене выросла клубная система с абонементами, расписанием и правами тренеров, и что пошло не так.
тем, кто заказывает