Впровадження AI-рекомендацій товарів на сайті

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Впровадження AI-рекомендацій товарів на сайті
Складний
~1-2 тижні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    956
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    947

Кожен третій відвідувач інтернет-магазину йде без покупки через нерелевантні AI-рекомендації товарів. Гірше того, показ однотипних товарів знижує довіру до майданчика. На одному проекті — магазин електроніки з 50 000 SKU — ми зафіксували, що блок «схожі товари» на основі категорій видавав майже однакові позиції: 8 з 8 — смартфони тієї ж марки. Click-through rate впав до 0.3%. Проблема не у відсутності даних, а у виборі алгоритму. Content-based на атрибутах дає вузьку видачу, колаборативна фільтрація страждає від cold start, а гібрид вимагає грамотного міксу. Ми реалізували системи рекомендацій для 15+ магазинів і знайшли баланс: зростання конверсії в середньому 18%, а для одного клієнта — +34% за рахунок впровадження асоціативних правил «часто купують разом». Персоналізація e-commerce — це не просто тренд, а необхідність для утримання клієнтів.

Який алгоритм рекомендацій обрати?

Вибір залежить від даних і цілей. Content-based рекомендації шукають схожі за атрибутами — швидко запускається, але дає однотипні результати. Колаборативна фільтрація (ALS) виявляє приховані патерни — точніше, але вимагає історії дій. Гібридні рекомендації поєднують краще з обох: на 25% більше кліків, ніж чистий content-based. Для нового магазину без історії ми рекомендуємо починати з content-based рекомендацій на ембеддингах, поступово підключаючи ALS у міру накопичення даних.

Алгоритм Необхідні дані Переваги Недоліки Швидкість впровадження
Content-based рекомендації (ембеддинги) Описи товарів Працює одразу, без історії Однотипні результати 2–3 дні
Колаборативна фільтрація (ALS) Поведінка користувачів Висока точність, приховані патерни Cold start для нових користувачів 1–2 тижні
Гібридні рекомендації Обидва типи Кращий CTR на 20%+, згладжує cold start Складність налаштування ваг 2–3 тижні

Чому гібридний підхід ефективніший?

Він не страждає від cold start: нові товари отримують рекомендації через ембеддинги, а старі — через поведінку користувачів. Різноманітність вища — блок не забивається однаковими позиціями. Ми використовуємо динамічний мікс: якщо у користувача мало даних, робимо акцент на content-based, і навпаки. На практиці це дає зростання CTR на 15–20% порівняно з однорідною видачею. Крім того, гібрид дозволяє збільшити середній чек на 12–15% за рахунок крос-продажів. Таким чином, наш досвід показує, що гібридні рекомендації підвищують конверсію в 1.3 рази порівняно з однотипною видачею.

Структура даних та індексація

Для ембеддингів збираємо текстове представлення товару:

function buildProductText(product) {
  return [
    product.name,
    product.brand,
    product.category + ' > ' + product.subcategory,
    product.description?.slice(0, 500),
    product.tags?.join(', '),
    Object.entries(product.attributes || {})
      .map(([k, v]) => `${k}: ${v}`)
      .join(', '),
  ].filter(Boolean).join('\n');
}

async function indexProduct(product) {
  if (!product.active || product.stock === 0) return;
  const text = buildProductText(product);
  const { data: [{ embedding }] } = await openai.embeddings.create({
    model: 'text-embedding-3-small',
    input: text,
  });
  await db.query(`
    INSERT INTO product_embeddings (product_id, embedding, updated_at)
    VALUES ($1, $2::vector, NOW())
    ON CONFLICT (product_id) DO UPDATE
    SET embedding = $2::vector, updated_at = NOW()
  `, [product.id, JSON.stringify(embedding)]);
}

Індексація проходить при кожному оновленні товару. Ембеддинги зберігаємо в pgvector — це дає швидкість пошуку <10ms для 100К товарів.

Пошук схожих товарів

async function getSimilarProducts(productId, options = {}) {
  const { limit = 8, minPrice, maxPrice, inStockOnly = true } = options;
  const result = await db.query(`
    WITH source AS (
      SELECT pe.embedding, p.price, p.category_id
      FROM product_embeddings pe
      JOIN products p ON p.id = pe.product_id
      WHERE pe.product_id = $1
    )
    SELECT p.id, p.name, p.slug, p.price, p.main_image, p.rating, p.reviews_count,
           1 - (pe.embedding <=> source.embedding) AS similarity
    FROM product_embeddings pe
    JOIN products p ON p.id = pe.product_id
    CROSS JOIN source
    WHERE pe.product_id != $1 AND p.active = true
      AND ($2::boolean IS FALSE OR p.stock > 0)
      AND ($3::numeric IS NULL OR p.price >= $3)
      AND ($4::numeric IS NULL OR p.price <= $4)
    ORDER BY pe.embedding <=> source.embedding
    LIMIT $5
  `, [productId, inStockOnly, minPrice || null, maxPrice || null, limit]);
  return result.rows;
}

Додали фільтри за ціною та наявністю — результати завжди актуальні та відповідають бізнес-правилам.

Асоціативні правила: «часто купують разом»

Аналізуємо історію замовлень за останні 90 днів через FP-Growth (швидше Apriori на великих даних):

from mlxtend.frequent_patterns import fpgrowth, association_rules
import pandas as pd

def compute_frequently_bought_together():
    orders = fetch_orders_last_90_days()
    basket = orders.groupby(['order_id', 'product_id'])['product_id'] \
        .count().unstack().fillna(0)
    basket = basket.map(lambda x: 1 if x > 0 else 0)
    frequent_sets = fpgrowth(basket, min_support=0.005, use_colnames=True)
    rules = association_rules(frequent_sets, metric='lift', min_threshold=1.5)
    for _, rule in rules.iterrows():
        antecedent = list(rule['antecedents'])[0]
        consequent = list(rule['consequents'])[0]
        save_association(antecedent, consequent, rule['confidence'], rule['lift'])

Практична користь: коли кладуть у кошик смартфон, пропонуємо чохол і скло — конверсія в допродаж зростає на 40%. Для магазину одягу ми виявили, що покупці джинсів часто беруть ремінь — це збільшило середній чек на 12%. Підвищення лояльності за рахунок релевантних пропозицій знижує витрати на ретаргетинг на 20–25%. Для магазину з 10 000 замовлень на місяць економія на ретаргетингу може сягати 3000 грн щомісяця.

Персональні рекомендації через ALS

Використовуємо implicit.ALS (64 фактори, 30 ітерацій) на поведінковій матриці (перегляд=1, кошик=3, покупка=10):

import implicit
from scipy.sparse import csr_matrix

def train_product_model(events):
    users_idx = {u: i for i, u in enumerate(events['user_id'].unique())}
    items_idx = {p: i for i, p in enumerate(events['product_id'].unique())}
    matrix = csr_matrix((
        events['weight'],
        (events['user_id'].map(users_idx), events['product_id'].map(items_idx))
    ))
    model = implicit.als.AlternatingLeastSquares(factors=64, iterations=30)
    model.fit(matrix.T)
    return model, users_idx, items_idx

Для кожного користувача отримуємо топ-N товарів, змішуючи з content-based для різноманіття.

Різноманітність рекомендацій (Diversity)

Блок з 8 однакових ноутбуків погіршує UX. Механізм диверсифікації пересортовує видачу, штрафуючи схожі категорії:

function diversify(recommendations, diversityFactor = 0.3) {
  const selected = [recommendations[0]];
  const remaining = recommendations.slice(1);
  while (selected.length < 8 && remaining.length > 0) {
    const scores = remaining.map(candidate => {
      const maxSimilarity = Math.max(
        ...selected.map(s => categorySimilarity(s, candidate))
      );
      return { item: candidate, score: candidate.score * (1 - diversityFactor * maxSimilarity) };
    });
    scores.sort((a, b) => b.score - a.score);
    selected.push(scores[0].item);
    remaining.splice(remaining.indexOf(scores[0].item), 1);
  }
  return selected;
}

У результаті у видачі — товари різних категорій та цінових сегментів. A/B тестування рекомендацій показало, що різноманітна видача збільшує CTR на 22% без втрати конверсії.

Процес впровадження

  1. Аналіз — вивчаємо асортимент, сценарії поведінки, дані.
  2. Проектування — обираємо алгоритми під завдання бізнесу.
  3. Прототип — запускаємо на реальних даних, вимірюємо якість.
  4. A/B тест рекомендацій — порівнюємо з поточною версією (або її відсутністю).
  5. Деплой і моніторинг — налаштовуємо дашборди, фіксуємо базу.

Ми гарантуємо якість та підтримку — всі рішення проходять тестування та супроводжуються документацією. Завдяки 15+ реалізованим проектам ми маємо підтверджений досвід та гарантію результатів.

Що входить у роботу

  • Документація архітектури та опис моделей
  • Навчання команди роботі з системою
  • Дашборд ключових метрик (CTR, конверсія, виручка)
  • Підтримка протягом місяця після запуску

Орієнтовні терміни

Компонент Термін
Content-based схожі товари (pgvector) 3–4 дні
Асоціативні правила («часто купують разом») +2–3 дні
Персональні рекомендації (ALS) — Python-сервіс +4–5 днів
Повна система + A/B + аналітика 3–4 тижні

Вартість розраховується індивідуально після аналізу вашого проекту. Отримайте консультацію інженера — ми підготуємо комерційну пропозицію з точними термінами та етапами. Зв'яжіться з нами, щоб обговорити деталі та почати підвищувати конверсію вашого магазину.

Інтеграція AI у веб-додатки: чат-боти, RAG, семантичний пошук

У 8 з 10 проектів «AI-чат-бот» виявляється дорогою обгорткою над GPT-4o з системним промптом. Без доступу до реальних даних компанії. Користувач питає «скільки коштує тариф Преміум» — бот галюцинує ціну з повітря. Питає «коли прийде замовлення» — отримує ввічливе «напишіть у підтримку». Це не інтеграція AI у веб-додатки — це імітація. Ми за 5 років впровадили RAG-рішення в 30+ проектах: від інтернет-магазинів до медичних порталів. Гарантуємо: корисна AI-допомога починається там, де модель читає ваші документи, а не загальні відповіді. Закажіть консультацію, щоб отримати план інтеграції для вашого проекту.

Побудова RAG-систем: чанкінг, ембедінги, векторна БД

Retrieval-Augmented Generation — стандартна архітектура: запит → пошук релевантних фрагментів у векторній БД → вставка знайденого в контекст → відповідь моделі. Але диявол у деталях реалізації.

Чанкінг. Різати документ на шматки по 500 токенів без огляду на структуру — гарантія втрати сенсу. Якщо розріз припав на середину абзацу, контекст розривається. Рішення — рекурсивний RecursiveCharacterTextSplitter з overlap 10–15% для документації. Для контрактів та інструкцій використовуємо семантичний спліттер: виділяємо заголовки, списки, блоки коду — кожен розділ стає незалежним чанком. Результат: на медичному проекті precision зріс з 0.55 до 0.84 лише завдяки правильному нарізанню, скорочення витрат на підтримку на 40% заощадило 80 000 грн на місяць.

Модель ембедингів. Для україномовних текстів intfloat/multilingual-e5-large дає помітний приріст точності проти застарілої text-embedding-ada-002. Наші виміри: NDCG@10 на 12% вищий. text-embedding-3-large хороший для англомовного контенту, але для української рекомендуємо BAAI/bge-m3.

Векторна БД. Якщо вже стоїть PostgreSQL — pgvector заощаджує ресурси. Ставимо розширення CREATE EXTENSION vector, додаємо колонку vector(1024), створюємо HNSW-індекс. На проекті з 80 000 статей p95 пошуку — 12 мс. Для каталогів з мільйонами одиниць — Qdrant або Weaviate: нативний гібридний пошук і шардування «з коробки».

Технічна реалізація pgvector Індекс будується за 3 хвилини на 100 000 позицій, займає ~400 МБ (1536-вимірні вектори). Пошук cosine distance з HNSW-індексом — 20 мс.

Кроки реалізації RAG:

  1. Збір та структурування даних (очищення, метадані).
  2. Вибір моделі ембедингів (multilingual-e5-large або bge-m3).
  3. Створення чанків (семантичний спліт із 10–15% overlap).
  4. Індексація в pgvector (або Qdrant).
  5. Інтеграція пошуку (гібрид BM25 + векторний через RRF) та реранкінг.

Що дає гібридний пошук?

Лише векторний пошук сліпий до точних збігів: артикули «ABC-123», власні назви, абревіатури губляться. Лише повнотекстовий не вловлює синоніми та перефразування. Комбінація через RRF (Reciprocal Rank Fusion) дає краще з двох світів: BM25 + векторний пошук, результати змішуються. На практиці recall@20 зростає з 0.65 до 0.92 — на 30% вищий за чисто векторний. Реранкінг через cross-encoder cross-encoder/ms-marco-MiniLM-L-6-v2 додає 50–100 мс до відповіді, але relevance піднімає ще на 5–10%.

Як реалізувати семантичний пошук у веб-додатку?

Пошук «зручні шкіряні крісла» має знаходити товари з описом «м'які стільці з натуральної шкіри» — звичайний LIKE-пошук не здатний. Архітектура: при додаванні товару/посту автоматично генеруємо ембединг через multilingual-e5-large, зберігаємо в pgvector. На запиті — ембедимо його тією ж моделлю, шукаємо найближчих сусідів через cosine distance з HNSW-індексом. Середній час пошуку — 20 мс.

Рекомендаційні системи: коли потрібна гібридна модель?

Колаборативна фільтрація («користувачі, схожі на вас, купували X») вимагає історії — мінімум 2–3 місяці даних із 1000+ активних користувачів. Для стартапів або малих проектів використовуємо content-based: ембединг поточного товару → пошук найближчих сусідів. Коли накопичується статистика (15–20 взаємодій на користувача), переключаємося на LightFM. Вона об'єднує поведінку та ознаки товарів. У e-commerce проекті з 50 000 SKU гібридна модель підвищила конверсію в рекомендаційний блок на 18% (A/B‑тест 2 тижні, що додатково принесло 250 000 грн прибутку за місяць).

Стрімінг відповідей через SSE

Користувач не зобов'язаний чекати, поки модель згенерує весь текст — це вбиває UX. Server-Sent Events (SSE) — протокол для стрімінгу токенів. OpenAI SDK підтримує stream: true, повертаючи AsyncIterator. На фронтенді — Vercel AI SDK (useChat) або самописний EventSource. Типова помилка: використовувати WebSocket для односпрямованого стріму — SSE простіше (менше коду, вбудований реконнект). Стек: Node.js + SSE + React.

Оркестрація агентів

Простий чат-бот відповідає. Агент — виконує дії: створює тікет у Jira, перевіряє статус замовлення в CRM, бронює слот у календарі. Для оркестрації використовуємо LangGraph: граф станів, кожен вузол — виклик моделі або інструменту. Vercel AI SDK дозволяє додати інтеграцію в 10 рядків коду. Головна складність — надійність: модель іноді викликає не той інструмент або передає криві параметри. Захист — Zod-схеми на кожен інструмент і structured outputs для гарантії JSON.

Процес роботи

Етап Результат Термін
Аудит даних та бізнес-логіки Карта джерел, формат документів, оцінка якості 1–2 дні
Прототип RAG або рекомендаційної системи Демонстрація з метриками (recall, precision, latency) 1–2 тижні
Інтеграція в існуючий веб-додаток API-ендпоінти, інтерфейс для чат-бота/пошуку 1–2 тижні
A/B-тестування та оптимізація Звіт за метриками (CTR, конверсія, hallucination rate) 1 тиждень
Документація та навчання команди Керівництво з експлуатації, код-рев'ю 2–3 дні

Додатково: передаємо вихідний код векторизатора, дашборди моніторингу (Langfuse), доступ до адмінки для оновлення бази знань. Постпродакшн-підтримка — 1 місяць безкоштовно.

Терміни

Задача Орієнтовний термін
RAG-чат-бот на базі існуючої бази знань 3–6 тижнів
Семантичний пошук по каталогу 2–4 тижні
Рекомендаційна система з A/B-тестуванням 6–10 тижнів
Мультиагентна система з інтеграціями від 8 тижнів

Вартість розраховується індивідуально після знайомства з проектом. Оцінимо ваш проект за 1 день. Зв'яжіться з нами — розкажемо, як перетворити AI з іграшки на інструмент, що приносить прибуток. Закажіть консультацію, щоб дізнатись, як інтегрувати AI у ваш веб-додаток.