Статьи

Как работает поиск AnyQuery: от базовых понятий до сложных механик

Все вы так или иначе знакомы с основным продуктом AnyQuery — AI поиском. Вы знакомы с нашими кейсами и знаете, какие результаты может выдавать этот продукт. Но как именно он работает — нужно рассказывать отдельно, чем мы и займемся.

Расширенное название товара.

Начнем с базового элемента. Обычное название товара, которое видит пользователь, чаще всего состоит из одной небольшой фразы. К примеру: “Серьги с бриллиантами”. Это название отражает суть товара, но не передает всех его характеристик.

Что если пользователь будет искать конкретный бренд? Или размер? Пробу?

Естественно, можно добавить все эти параметры в название. Получится: Серьги с бриллиантами, “бренд”, “материал”, “проба”, “стиль”, “вид”...

Но в интерфейсе такое название будет слишком длинным, нечитабельным, не поместится в карточку… В общем, получится плохой UX.

Выходит, есть 2 пути:

1️⃣Оставить всю информацию внутри карточки, пожертвовать конверсией и сохранить дизайн.

2️⃣Пожертвовать дизайном и вынести все потенциальные ключи в название товара.

Но в случае с поиском AnyQuery ничем жертвовать не нужно.

У нас существует сразу 2 названия. Одно видит пользователь и совсем другое — поисковой движок.

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

Векторный поиск

Вторая ключевая составляющая AI поиска.

Векторный поиск используют Airbnb, Alibaba, Spotify и другие гиганты. Они нанимают десятки специалистов для разработки и оптимизации поисковых движков.

А мы научились адаптировать это решение под любой интернет-магазин.

Обычный поиск по сайту работает так:

1️⃣Пользователь вводит слово «компьютер».

2️⃣Система ищет совпадения в названиях товаров.

3️⃣Пользователь видит все товары со словом «компьютер» в названии.

Если слова «компьютер» в названии нет, пользователь этот товар не увидит.

Если на сайте нет ни одного товара с ключом «компьютер», пользователь получит пустую выдачу.

Поиск AnyQuery работает так:

1️⃣Пользователь ищет «компьютер».

2️⃣ИИ находит слова, близкие по смыслу.

3️⃣Пользователь видит ПК, ноутбуки и планшеты.

Так мы повышаем вероятность того, что пользователь найдет подходящий товар. А значит, повышаем конверсию и выручку магазина.

Нормализация запросов

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

Но что делать, если совпадение неполное?

Допустим, пользователь вводит запрос “красное платье стразЫ”. А у нас в названии “красное платье со стразАМИ вечернее”. “Стразы” и “Стразами” поисковой движок воспринимает как 2 разных слова. Если начать их сравнивать, ничего не получится.

Казалось бы, в этом случае на помощь приходит векторный поиск. Но зачем использовать настолько продвинутый инструмент, если есть вариант проще — нормализация.

Чтобы 2 слова совпали, мы просто убираем их окончания. После нормализации расширенное название товара (его видит только движок) выглядит так: “красн платье страз вечер”. А запрос пользователя меняется на “красн платье страз”.

Получаем 100% совпадение.

А в части стратегий, чтобы гарантировать, что все релевантные товары попадут в выдачу, применяется векторный поиск.

И вот, после всех манипуляций наш поиск подобрал, к примеру, 50 релевантных товаров. В каком порядке их показать?

Ранжирование товаров

Продукт AnyQuery глобально состоит из 2-х частей:

1️⃣Собственно, поиск. Когда пользователь ищет “красное платье”, эта часть подбирает, к примеру, 50 релевантных товаров.

2️⃣Ранжирование. Эти 50 товаров в выдаче нужно расположить. Сверху должны оказаться товары, которые с большой долей вероятности подойдут пользователю.

Чтобы показать в топе выдачи релевантные товары, мы присваиваем каждому т. н. скор — определенное количество баллов, и создаем рейтинговую систему.

У каждого товара есть параметры, которые дают ему баллы, например:

📍Текстовое совпадение запроса и названия = X баллов.

📍Товар часто просматривают\заказывают = Y баллов.

📍Векторная близость запроса и названия = Z баллов

И так далее. Подобных параметров больше 10.

Эти баллы прогоняются через формулу, и на выходе получается рейтинг товара. Таким образом первыми пользователь видит самые релевантные и популярные товары.

И вот этот комплекс поиск+ранжирование складывается в стратегию поиска AnyQuery.

Выпрямитель запросов

Выпрямитель — инструмент, без которого AnyQuery работал бы не так эффективно.

Дело в том, что поиск подбирает товары по частичному или полному совпадению запроса и расширенного названия. И если в запросе ошибка, в обычном поиске выдача остается пустой.

Поиск AnyQuery находит нужный товар даже по некорректному запросу.

Сначала наш алгоритм исправляет все возможные ошибки в запросе. Условная фраза “крвснле плптье стрмзы” исправляется на “красное платье стразы” и только после этого проходит через нормализацию, с которой вы уже знакомы.

На выходе получается универсальное “красн платье страз”.

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

Работа инструмента делится на 8 этапов. Разберем каждый по отдельности.

1️ этап. Black&White list.

На этом этапе мы устраняем ошибки, которые допускает сам алгоритм. Он может пропустить неправильное слово, или напротив, заменить корректное.

Вспомните T9 в своем смартфоне. Он иногда меняет слова, которые вы написали правильно.

Чтобы этого не происходило, мы вручную создаем 2 списка:

✅White list — слова, у которых всегда есть конкретная замена.

❌Black list — слова, которые никогда не нужно менять.

2️ этап. Транслитерация похожих символов.

В латинице и кириллице есть ряд идентичных символов: сс, хх, аа, оо, рр, уу. Эти символы приводятся в соответствие с языком, на котором написана большая часть запроса.

3️ этап. Транслитерация слов.

Часто пользователи вводят английские слова буквами кириллицы. Особенно это касается брендов. Примеры: айфон, самсунг, найк, прада.

4 этап. Исправление раскладки.

Не менее часто пользователи забывают сменить раскладку и слово “Adidas” превращается в “Фвшвфы”. Подобные ошибки исправляются после транслитерации.

5 этап. Пунктуация.

На этом этапе мы просто убираем все знаки препинания, чтобы они не мешали. После окончания работы алгоритма пунктуация возвращается.
Из ссылок и email-адресов знаки препинания не удаляются.

6 этап. Работа с пробелами.

Каждый пробел проверяется на возможность удаления или замены на дефис или слеш.

7 этап. Исправление опечаток.

Это самый длительный этап, поэтому алгоритм не исправляет более 2-х опечаток в одном слове.

8 этап. Повтор транслитерации.

Этот шаг повторяется на случай, если в процессе исправления ошибок алгоритм обнаружит название бренда, написанное кириллицей.
Также, после каждого этапа алгоритм сверяется с Black&White list, чтобы сделать исправления более корректными.
Только после выполнения всех этих шагов запрос пользователя проходит через нормализацию.

А что в итоге?

А в итоге у нас есть куча эффективных инструментов, которые помогаю пользователям находить нужные товары. Но все эти инструменты должны работать в связке и по конкретным принципам. Эти принципы мы называем стратегиями поиска.
О них и поговорим через неделю.
Матчасть