Векторный поиск: что это такое и зачем магазину
Объясняем векторный поиск без математики: как текст превращается в числа, почему это находит товар без совпадения слов и где такой поиск ошибается.
Векторный поиск — это способ искать по смыслу текста, а не по совпадению слов. Он умеет находить экскаватор по запросу «выкопать яму под фундамент», хотя общих слов в них нет. Разберём, как это устроено, без формул.
Как текст превращается в числа
Модель читает текст и выдаёт набор чисел — вектор. Правило одно: близкие по смыслу тексты дают близкие векторы.
Дальше всё просто:
- Каждой карточке каталога один раз считается вектор — по названию, описанию и характеристикам.
- Запросу клиента считается вектор в момент поиска.
- Система ищет карточки, чьи векторы ближе всего к вектору запроса.
Никакого перебора слов не происходит. Сравниваются смыслы.
Чем это отличается от обычного поиска
Полнотекстовый поиск отвечает на вопрос «где встречаются эти слова». Векторный — на вопрос «что похоже по смыслу».
Разница на примерах:
- «чем поднять плиту на третий этаж» → находит кран-манипулятор, хотя слова «кран» в запросе нет;
- «что-нибудь недорогое для дачи» → находит технику и услуги нужного класса, а не карточку со словом «недорогое»;
- «мойка высокого давления» → тут отлично сработает и обычный поиск: слова совпадают.
Отсюда вывод: векторный поиск не отменяет полнотекстовый, он закрывает те запросы, где слова не совпадают.
Где он ошибается
Слабые места нужно знать заранее:
- Точные артикулы и модели. «JCB 3CX» — это не смысл, а строка. Векторный поиск здесь проигрывает точному совпадению.
- Числа и единицы. «Стрела 22 метра» модель понимает как смысл, а не как условие. Числовые ограничения должны работать фильтром поверх.
- Пустые карточки. Если в описании три слова, вектор посчитан по трём словам.
- Похожее вместо нужного. Модель всегда найдёт что-то ближайшее. Без порога отсечения она будет предлагать похожее там, где правильный ответ — «такого нет».
Поэтому на практике работает связка: точное совпадение + вектор + фильтры + порог, ниже которого система честно отвечает, что не нашла.
Что нужно, чтобы это заработало на вашем каталоге
- Осмысленные названия. Не «Модель 4213», а «Экскаватор-погрузчик, ковш 0,3 м³».
- Описание хотя бы в одно-два предложения, желательно с назначением: для чего эта позиция.
- Характеристики отдельными полями, а не сплошным текстом.
- Регулярная переиндексация: вектор считается при загрузке карточки, изменили описание — пересчитайте.
Подробный чек-лист — в статье как подготовить каталог к умному поиску.
Сколько это стоит по ресурсам
Три величины, которые стоит понимать перед внедрением:
- Индексация. Считается один раз на карточку и повторяется при изменении. Для каталога в несколько тысяч позиций это минуты.
- Поиск. Сравнение векторов — быстрая операция. До нескольких тысяч карточек она уверенно укладывается в доли секунды даже без специальной базы.
- Хранение. Вектор — это несколько сотен чисел на карточку. На больших каталогах имеет смысл специализированное хранилище, на средних хватает обычной базы.
Вывод и следующий шаг
Векторный поиск — рабочий инструмент против запросов, где клиент описывает задачу своими словами. Он не заменяет точный поиск и фильтры, а дополняет их.
Следующий шаг: возьмите десять запросов, на которых ваш поиск сейчас выдаёт пустоту, и посмотрите, есть ли в каталоге товар, который человек имел в виду. Если есть — вам не хватает именно смысла.
Частые вопросы
Векторный поиск и семантический — это одно и то же?
Почти. «Семантический» описывает результат — поиск по смыслу. «Векторный» описывает способ, которым это сделано.
Нужна ли специальная база данных?
Не всегда. На каталогах до нескольких тысяч позиций близость считается прямо в приложении. Векторные расширения баз нужны, когда карточек десятки тысяч.
Как часто пересчитывать векторы?
При каждом изменении названия, описания или характеристик карточки. Цена и наличие на вектор не влияют.
Векторный поиск работает с опечатками?
Обычно да, потому что смысл сохраняется. Но грубые опечатки в редких словах лучше чинить отдельно.
Можно ли совместить его с фильтрами?
Не просто можно, а нужно: фильтры отсекают по жёстким условиям, вектор ранжирует то, что осталось.
Что делать, если поиск выдаёт «похожее», а не нужное?
Настроить порог отсечения и явно говорить клиенту, что точного совпадения нет. Об этом — честное «нет» работает лучше похожего товара.