19.10.2026

AI-ассистент для поиска и сравнения данных на сайте

ai
проектирование
разработка

Клиент

Компания Tarkett - мировой лидер в сфере производства напольных покрытий. Более 140 лет она выпускает качественную продукцию, ориентированную на безопасность и экологичность.
Об опыте разработки самого сайта читайте в отдельном кейсе

Задача

  1. Создать на сайте поиск, аналогичный Google/Yandex, но работающий исключительно по существующей базе данных сайта.
  2. Помимо канонического поиска - AI-ассистент, который показывает ответ модели на поисковый запрос. У пользователя должна быть возможность открыть ассистента на сайте и продолжить с ним общение.
  3. Для продуктовой матрицы и классического сравнения продуктов по параметрам реализовать раздел сравнения продукции. Помимо таблицы параметров - AI-сравнение по каждому продукту, участвующему в сравнении: ответ может содержать текст или ссылки на графические и видеоматериалы сайта, примеры оформления интерьеров с конкретным продуктом (референсы) и так далее. Раздел также учитывает динамически обновляемый контент сайта - например каталоги продукции с характеристиками.
  4. Система должна быть отказоустойчивой и выдерживать нагрузку, присущую интернет-магазину, с контролируемым расходом ресурсов.

Решение

Задача была нетривиальной, поэтому работы шли поэтапно:

  1. Разработка архитектуры AI-ассистента.
  2. Прототипирование.
  3. Подготовка и создание векторных БД.
  4. Создание AI-ассистента для поиска: блок общения с ИИ-ассистентом.
  5. Создание AI-ассистента для сравнения продукции: AI-сравнение по каждому продукту, участвующему в сравнении.
  6. Вывод управления системой в административную панель.

Прототип: проверка концепции

Чтобы не тратить время на настройку инфраструктуры, собрали MVP на n8n (селф-хост)- популярном no-code инструменте для автоматизации. В качестве «мозга» использовали локальную нейросеть Ollama (Gemma 2 9B).

В прототипе реализовали всю основную логику будущего ассистента:

  • Классический RAG-пайплайн. Выстроили конвейер: бот сначала ищет факты в базе знаний, потом генерирует ответ. Это отсекло проблему «галлюцинаций»: бот не выдумывал характеристики ламината, а опирался только на реальные данные из каталога.
  • Сценарий сравнения N товаров. Система разбирает сложные запросы вроде «Сравни коллекцию X и Y», находит оба товара в базе и собирает для них единый структурированный контекст для нейросети.
  • Умное кеширование. Бот не генерирует один и тот же ответ дважды. Это экономило вычислительные ресурсы и избавляло пользователя от лишнего ожидания.

Ещё на этапе no-code-прототипа мы четко определились со стеком для будущего продакшена. n8n - временная оболочка для проверки, поэтому сразу заложили, что «под капотом» итогового решения будут работать:

  • Redis - кеши и история диалогов;
  • RabbitMQ - очередь задач, чтобы сервер не падал при наплыве пользователей, а запросы корректно выстраивались;
  • Qdrant - векторная база данных.

Это сэкономило массу времени при переходе на код: отлаженную бизнес-логику мы просто перенесли в продакшн, ничего не изобретая заново. n8n подошёл и для быстрой отладки промптов, и для наглядной демонстрации заказчику - клиент увидел живой работающий продукт, а не абстрактные схемы.

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

Как работает «мозг» ассистента

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

1. Нормализация, интент и маршрутизация

Пользователь может написать: «А ещё?» или «Подешевле?». Для человека это понятно, для машины - пустой звук.

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

Система определяет интент (намерение): человек хочет конкретный товар, совет по выбору, инструкцию по укладке или сравнивает коллекции? От этого зависит, где именно мы будем искать ответ, и это позволяет увеличить хитрейт кеширования, сводя похожие запросы к единому ответу. Например, запросы «Коллекция Баллет» и «Коллекция Balet» сходятся к одному каноническому запросу - «коллекция BALLET».

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

Если запрос не относится к продукции компании, система распознаёт оффтоп и вежливо отвечает заготовленным шаблоном: она эксперт только по напольным покрытиям. Если это просто беседа («Привет, как дела?»), ассистент поддержит диалог как обычный ИИ, но обязательно попытается мягко перевести тему в русло консультации: «У меня всё отлично, спасибо! Кстати, вы уже присматривали покрытие для гостиной?».

2. Гибридный поиск

Обычный векторный поиск часто ошибается в точных названиях, а обычный текстовый не понимает синонимов. Мы объединили:

  • Векторный поиск (Qdrant): превращает текст в эмбеддинги и находит товары, близкие по смыслу.
  • Лексический поиск (Typesense): ищет точные совпадения и опечатки. Добавили алгоритм устранения опечаток и транслитерацию: если пользователь напишет «джуниор», система поймёт, что речь о коллекции «JUNIOR».

В итоге поисковый алгоритм выдает максимально релевантные хиты, которые затем отдаются нейросети.

3. Генерация и аннотации

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

Проблема аннотаций: как сделать слова в ответе бота кликабельными ссылками на сайт? Мы прошли через три итерации:

  1. Авто-скан текста: система сама искала названия товаров в ответе. Работало криво, цепляло лишние слова.
  2. Отдельный LLM-аннотатор: просили нейросеть отдельно выписать термины. Слишком долго.
  3. Финальное решение: основная нейросеть выделяет названия товаров жирным шрифтом (**bold**) прямо во время генерации. Парсер на лету подхватывает эти фразы, дополнительный обработчик превращает их в кликабельные ссылки.

4. Сравнение продукции

Помимо классического сравнения по параметрам в разделе появился AI-блок: модель готовит вывод по каждому продукту, участвующему в сравнении. Ответ может содержать текст, ссылки на графику и видеоматериалы сайта, примеры оформления интерьеров с конкретным продуктом (референсы).

Данные подтягиваются из той же базы, что и поиск. Новые каталоги и характеристики попадают в сравнение сразу после синхронизации - раздел работает с динамически обновляемым контентом сайта.

Отказоустойчивость

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

  1. Основная машина: локальный мощный сервер с vLLM (модель Qwen 3.5).
  2. Облачный резерв: если локальный сервер «упал» или завис, запрос мгновенно уходит в облачный RouterAI.
  3. Локальный спасатель: если проблемы с сетью или облаком, подключается легковесная локальная Ollama.

Для пользователя этот процесс незаметен. В худшем случае ответ придёт на пару секунд позже, но он всегда придёт.

Оптимизация и контроль

Чтобы оптимизировать затраты и скорость ответа, внедрили многоуровневое кеширование:

  • Кеш эмбеддингов: векторы для одинаковых запросов не пересчитываются.
  • Кеш ответов: на популярный вопрос (например, «Как уложить ламинат?») система отдает готовый ответ из кеша, вообще не дергая нейросеть.
  • Умная инвалидация: мы используем Context Hashing. Кеш ответа привязан и к вопросу, и к хешу найденных товаров. Если в каталог пришли изменения, хеш меняется, кеш обновляется - пользователь всегда видит актуальные данные.

Контроль качества

Синхронизация - критический процесс, поэтому предусмотрели защиту:

  • Прогресс в реальном времени: эндпоинт /sync/status показывает, какая коллекция сейчас индексируется и сколько точек обработано.
  • Если индексация упала на середине, старые данные остаются в базе - бот продолжает работать.
  • История: последний успешный запуск сохраняется в Redis на 30 дней.

Синхронизация каталога

Если на сайте появилась новая коллекция или изменилась цена - бот должен об этом знать.

Источники данных

Вся информация приходит из API сайта, который отдаёт:

  • Товары (5000+ позиций): названия, артикулы, характеристики, описания
  • Коллекции (300+): группировки товаров по дизайну и назначению
  • Документы (1000+): сертификаты, каталоги PDF, инструкции по укладке
  • Новости и статьи (300+): контент для раздела «Как укладывать?»
  • Магазины (1700+): адреса и контакты точек продаж
  • Области применения: какие покрытия подходят для кухни, офиса, больницы и так далее

Дельта-синхронизация: обновляем только изменения

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

Полная переиндексация всех данных занимает ~1 час. Дельта-обновление - секунды.

Админ-панель

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

Что вынесли на дашборд:

  1. Цепочки моделей. Два визуальных списка - приоритеты генерации и приоритеты эмбеддингов. Сохранение подхватывается системой на лету: можно временно увести весь трафик в облако, если локальный сервер ушёл на обслуживание.
  2. Редактор промптов. Все 18 системных промптов (классификатор, товары, коллекции, сравнение, инструкции, «Где купить», аннотатор и так далее) редактируются прямо в браузере: поле текста, кнопки «Сохранить» и «Сбросить», бейдж «изменён». Правка применяется мгновенно и автоматически сбрасывает кеш ответов, чтобы пользователи не получили старый ответ, собранный по прежним правилам.
  3. Логи запросов. Живая лента последних обращений с автообновлением: интент, провайдер и модель, которые ответили, общее время и тайм-бар по этапам - классификация, поиск, буст, генерация.
  4. Отладка. В каждом запросе раскрываются детали: переформулированный запрос, число найденных источников, длина ответа, время до первого токена, финальный текст - и оба промпта (классификатора и генерации) в отдельном окне.

Перенос в Битрикс

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

Примеры использования

Из выдачи пользователь может перейти к ассистенту и продолжить диалог прямо на странице, не уходя с сайта.
Поиск по цвету и текстуре
Подбор товара по запросу
Сравнение товаров

Результаты

Обновление только вышло, и глобальные бизнес метрики пока считывать рано, однако уже сейчас:
  • Поиск стал работать в 2-3 раза быстрее и намного точнее.
  • Поисковое покрытие выросло с 30% до 90%, при том же объеме покрытия.
  • Меньше нерелевантных выдач, сложные запросы отрабатывают лучше.
  • Снипет с AI-ответом даёт больше переходов в карточки товаров из поиска.

Предвариательный заказ

Свяжитесь с нами

Опишите задачу, заполнив форму заявки.
Также вы можете оставить заявку в свободной форме по адресу info@techart.ru

Выберите услугу (опционально):
Бюджет проекта:
Превышен размер загружаемого файла в 10мб