AI-рекомендації контенту: трекінг, персоналізація та A/B тести

Відвідувачі заходять на сайт, але не затримуються: контент не відповідає їхнім інтересам, і вони йдуть. Ми розробляємо AI-рекомендації, які аналізують поведінку користувачів і підбирають персоналізований контент. Наша команда реалізує проєкт під ключ — від трекінгу та вибору алгоритму до A/B-тестування та підтримки.

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

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

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

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

Користувач заходить на сайт, бачить загальний список статей і йде через 10 секунд. Контент не релевантний, інтерес втрачається. Ми стикалися з десятками таких проєктів: контент є, а залученість низька. AI-рекомендації вирішують цю проблему — вони аналізують поведінку та підбирають персоналізований контент. Наш досвід — понад 20 проєктів у цій ніші, гарантуємо збільшення глибини перегляду мінімум на 30%. Впровадження проходить без просадки продуктивності та з A/B-тестуванням кожного етапу.

Чому AI-рекомендації збільшують глибину перегляду?

Персоналізація безпосередньо впливає на метрики. Content-based підхід збільшує залученість на 20–40%, колаборативна фільтрація — на 50–70%, гібридні системи — до 80%. Ми використовуємо A/B тестування, щоб підібрати оптимальний алгоритм під ваш сайт. Підсумковий приріст залежить від якості даних та обраної моделі.

Як організувати трекінг подій без втрати продуктивності?

Дані про поведінку — основа для будь-якої рекомендації. Ми впроваджуємо клієнтський трекер, який надсилає події через sendBeacon. Це не блокує рендеринг і не впливає на Core Web Vitals. Аналізуємо перегляди, скроли, час читання. Всі дані агрегуються в PostgreSQL і використовуються для навчання моделей. Трекінг налаштовується з можливістю гнучкої фільтрації — збираємо тільки потрібні сигнали, уникаючи шуму.

Порівняння підходів до рекомендацій

Підхід Дані Складність Коли застосовувати
Content-based (ембедінги) Тільки контент Низька Новий сайт, мала аудиторія
Колаборативна фільтрація Історія взаємодій Середня 10K+ користувачів
Гібридна Контент + поведінка Висока Медіа, блоги, новинні сайти
LLM-based Контент + профіль Середня Персоналізовані добірки з поясненнями

Content-based: швидкий старт з ембедінгами

Найшвидший спосіб отримати релевантні рекомендації — знаходити схожі статті за векторною відстанню. Ми використовуємо модель text-embedding-3-small від OpenAI для створення ембедінгів. Індексація відбувається при публікації, а пошук — через pgvector. Cosine similarity між векторами дає метрику схожості. Точність — 85-90% на тестових вибірках.

import OpenAI from 'openai';
import { sql } from '@vercel/postgres';

const openai = new OpenAI();

async function indexArticle(article) {
  const textToEmbed = [
    article.title,
    article.excerpt,
    article.tags.join(', '),
    article.body.slice(0, 2000),
  ].join('\n\n');

  const { data: [{ embedding }] } = await openai.embeddings.create({
    model: 'text-embedding-3-small',
    input: textToEmbed,
  });

  await sql`
    UPDATE articles
    SET embedding = ${JSON.stringify(embedding)}::vector
    WHERE id = ${article.id}
  `;
}

async function getSimilarArticles(articleId, limit = 6) {
  const result = await sql`
    WITH source AS (
      SELECT embedding FROM articles WHERE id = ${articleId}
    )
    SELECT
      a.id,
      a.title,
      a.slug,
      a.excerpt,
      a.published_at,
      a.category,
      a.read_time,
      1 - (a.embedding <=> source.embedding) AS similarity
    FROM articles a, source
    WHERE a.id != ${articleId}
      AND a.published = true
      AND a.embedding IS NOT NULL
    ORDER BY a.embedding <=> source.embedding
    LIMIT ${limit}
  `;
  return result.rows;
}
Як фільтрувати нерелевантні результати? Встановлюємо поріг схожості: відсікаємо статті з cosine similarity нижче 0.7. Додатково враховуємо категорію — не показуємо статті з інших рубрик. Це підвищує точність на 15%.

Колаборативна фільтрація: коли даних багато

Матрична факторизація через implicit feedback (перегляди, час на сторінці). Ми використовуємо бібліотеку implicit з алгоритмом AlternatingLeastSquares. Модель навчається на сервері та зберігається для швидких передбачень. Періодичність навчання — раз на добу.

import implicit
import numpy as np
from scipy.sparse import csr_matrix
import pickle

def train_collaborative_model():
    events = fetch_events_from_db()
    users = {u: i for i, u in enumerate(events['user_id'].unique())}
    items = {a: i for i, a in enumerate(events['article_id'].unique())}
    rows = events['user_id'].map(users)
    cols = events['article_id'].map(items)
    data = events['weight']
    matrix = csr_matrix((data, (rows, cols)))
    model = implicit.als.AlternatingLeastSquares(
        factors=128,
        regularization=0.01,
        iterations=50,
        use_gpu=False
    )
    model.fit(matrix)
    with open('/models/collab_model.pkl', 'wb') as f:
        pickle.dump({'model': model, 'users': users, 'items': items}, f)

Гібридна система: взяти найкраще від обох світів

Об'єднуємо content-based, колаборативні та трендові сигнали з вагами. Content-based швидше, але гібрид дає на 20% більше кліків. Приклад реалізації з вагами 0.4, 0.5, 0.1:

async function getPersonalizedRecommendations(userId, currentArticleId) {
  const [contentBased, collaborative, trending] = await Promise.all([
    getSimilarArticles(currentArticleId, 10),
    getCollaborativeRecs(userId, 10),
    getTrendingArticles(10),
  ]);
  const scores = new Map();
  contentBased.forEach((article, i) => {
    scores.set(article.id, (scores.get(article.id) || 0) + (10 - i) * 0.4);
  });
  collaborative.forEach((article, i) => {
    scores.set(article.id, (scores.get(article.id) || 0) + (10 - i) * 0.5);
  });
  trending.forEach((article, i) => {
    scores.set(article.id, (scores.get(article.id) || 0) + (10 - i) * 0.1);
  });
  const allArticleIds = [...scores.keys()];
  const articles = await fetchArticlesByIds(allArticleIds);
  return articles
    .map(a => ({ ...a, score: scores.get(a.id) }))
    .sort((a, b) => b.score - a.score)
    .slice(0, 6);
}

LLM-рекомендації з поясненням

Для персоналізованих добірок зі зрозумілим обґрунтуванням використовуємо GPT-4o-mini. Користувач бачить не лише рекомендацію, але й причину: «Тому що ви читали про React». Це підвищує довіру та клікабельність на 25%.

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

Кожен етап впровадження завершується здачею артефактів. У фінальний пакет входять:

  • Схема трекінгу та налаштований клієнтський трекер
  • API для рекомендацій з документацією (OpenAPI)
  • Дашборд метрик та A/B-тестів (Grafana/Tableau)
  • Доступ до моделі та репозиторію з кодом
  • Навчання команди та текстові інструкції
  • Гарантія підтримки протягом 30 днів після деплою

Ми не просто ставимо код — ми передаємо інструмент, який ви зможете самостійно доопрацьовувати.

Етапи впровадження

Етап Тривалість Результат
Аналітика та проєктування 1–2 дні Схема трекінгу, вибір алгоритму
Інтеграція трекера 1–2 дні Події надходять до бази
Навчання моделі 2–5 днів Працююча recommend API
A/B тестування 3–7 днів Статистично значущі метрики
Оптимізація та деплой 1–2 дні Продуктова версія

Терміни та вартість

Терміни — від 3 днів для базового рішення на pgvector до 3 тижнів для повної гібридної системи з LLM. Вартість розраховується індивідуально після аудиту. Ми гарантуємо результат, прописаний у договорі. Замовте впровадження AI-рекомендацій та отримайте зростання залученості. Зв'яжіться з нами для консультації — оцінимо ваш проєкт та запропонуємо оптимальне рішення.

pgvector

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060