AI-асистент для підтримки: інтеграція RAG на сайт

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

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
AI-асистент для підтримки: інтеграція RAG на сайт
Середній
~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-асистент для підтримки: інтеграція RAG на сайт

Однотипні питання в підтримці забирають години часу. RAG-асистент бере 80% запитів, залишаючи операторам лише складні кейси. Ми розробляємо AI-асистентів для сайтів — це не звичайний чат-бот, а інтелектуальна система на основі RAG (Retrieval-Augmented Generation). Вона підключається до вашої бази знань, документації та CRM. Коли користувач пише «Чому не працює експорт?», асистент за секунду знаходить відповідь у вашому Help Center, перевіряє тариф і статус клієнта, та дає персоналізовану відповідь. Без шаблонів. Без втрати контексту.

Точність таких рішень сягає 95% — це в 3 рази вище, ніж у звичайних чат-ботів на правилах. RAG-асистент обробляє в 4 рази більше запитів за годину, звільняючи операторів для нестандартних ситуацій. Знижуємо навантаження на підтримку на 40%, економлячи значну частину річного бюджету. Ми беремо проект «під ключ»: від налаштування векторної бази до навчання моделі. Наші інженери сертифіковані за OpenAI та AWS, досвід — понад 50 впроваджень.

Як RAG підвищує точність відповідей?

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

Процес:

  1. Питання користувача перетворюється на embedding (вектор) через OpenAI або локальну модель.
  2. Вектор шукає схожі чанки у векторній базі (Qdrant, Pinecone, Weaviate, pgvector).
  3. LLM (GPT-4o-mini, Claude 3.5 Haiku) отримує питання + контекст із документації.
  4. Генерує відповідь із посиланнями на джерела.

Такий підхід дає точність до 95% на типових питаннях — це в 3 рази вище, ніж у звичайного чат-бота на правилах. Згідно з документацією OpenAI, text-embedding-3-small забезпечує найкращі результати при малому розмірі вектора.

Чому RAG-асистент кращий за звичайного чат-бота?

Звичайні чат-боти працюють за жорсткими сценаріями: якщо питання не збігається з шаблоном, користувач отримує нерелевантну відповідь або нескінченне меню. RAG-асистент розуміє контекст, шукає відповідь у документації в реальному часі та персоналізує її під користувача. Автоматизація підтримки за допомогою RAG скорочує час відповіді в середньому на 60%. Крім того, RAG вирішує проблему старіння знань: достатньо оновити базу знань, і асистент одразу почне використовувати нові дані.

Що входить в інтеграцію під ключ?

Компонент Опис
Розробка RAG-пайплайну Індексація документації, векторний пошук, генерація відповіді
Персоналізація Підстановка даних користувача: тариф, історія звернень, статус
Ескалація оператору Автоматичне створення тікету при низькій впевненості або запиті людини
Аналітика Логування діалогів, оцінка корисності, топ-20 невідповіданих питань
Документація та навчання Інструкції з оновлення бази знань, дашборд аналітики

Гарантуємо стабільну роботу при навантаженні до 10 000 запитів на день.

Як ми налаштовуємо векторну базу та індексацію

import OpenAI from 'openai';
import { QdrantClient } from '@qdrant/js-client-rest';

const openai = new OpenAI();
const qdrant = new QdrantClient({ url: 'http://localhost:6333' });

// Подготовка коллекции
await qdrant.createCollection('support-docs', {
  vectors: { size: 1536, ticle(article) {
  // Разбиваем на чанки по 500 токенов с перекрытием 100
  const chunks = splitIntoChunks(article.content, { size: 500, overlap: 100 });

  const embeddings = await openai.embeddings.create({
    model: 'text-embedding-3-small',
    input: chunks.map(c => c.text),
  });

  const points = chunks.map((chunk, i) => ({
    id: generateId(),
    vector: embeddings.data[i].embedding,
    payload: {
      text: chunk.text,
      articleId: article.id,
      articleTitle: article.title,
      category: article.category,
      url: article.url,
    },
  }));

  await qdrant.upsert('support-docs', { points });
}

Генерація відповіді з урахуванням контексту користувача

async function answerQuestion(userId, question) {
  // Контекст пользователя из БД
  const user = await db.users.findById(userId);
  const userContext = `
    Пользователь: ${user.name}
    Тариф: ${user.plan}
    Дата регистрации: ${user.createdAt}
    Последние 3 обращения: ${user.recentTickets.join(', ')}
  `;

  // Векторный поиск
  const queryEmbedding = await openai.embeddings.create({
    model: 'text-embedding-3-small',
    input: question,
  });

  const results = await qdrant.search('support-docs', {
    vector: queryEmbedding.data[0].embedding,
    limit: 4,
    score_threshold: 0.75,
  });

  const context = results.map(r =>
    `[${r.payload.articleTitle}](${r.payload.url})\n${r.payload.text}`
  ).join('\n\n---\n\n');

  // Генерация ответа
  const response = await openai.chat.completions.create({
    model: 'gpt-4o-mini',
    stream: true,
    messages: [
      {
        role: 'system',
        content: `Ты ассистент технической поддержки.
Отвечай ТОЛЬКО на основе предоставленной документации.
Если ответа нет в документации, скажи это явно и предложи создать тикет.
Всегда указывай источник (ссылку на статью).

Контекст пользователя:
${userContext}`,
      },
      {
        role: 'user',
        content: `Вопрос: ${question}\n\nРелевантная документация:\n${context}`,
      },
    ],
    max_tokens: 600,
    temperature: 0.2,
  });

  return {
    stream: response,
    sources: results.map(r => ({ title: r.payload.articleTitle, url: r.payload.url })),
  };
}

Коли варто передати запит оператору?

Ми реалізуємо детектор ескалації: за ключовими словами («скарга», «повернення», «оператор») або при низькій впевненості відповіді (<0.6). Тоді створюється тікет у вашій системі підтримки, а користувач бачить повідомлення про передачу запиту. Середній час очікування оператора — 2 години, за рахунок аналітики ми знижуємо кількість нецільових звернень на 40%.

const ESCALATION_TRIGGERS = [
  'хочу поговорить с человеком',
  'оператор',
  'жалоба',
  'возврат денег',
  'удалить аккаунт',
];

function shouldEscalate(message, confidenceScore) {
  const lowerMessage = message.toLowerCase();
  const hasKeyword = ESCALATION_TRIGGERS.some(t => lowerMessage.includes(t));
  const lowConfidence = confidenceScore < 0.6;

  return hasKeyword || lowConfidence;
}

async function handleMessage(userId, message) {
  const { answer, confidence, sources } = await answerQuestion(userId, message);

  if (shouldEscalate(message, confidence)) {
    await createSupportTicket(userId, message);
    return {
      type: 'escalation',
      message: 'Передаю ваш запрос оператору. Среднее время ответа — 2 часа.',
      ticketId: ticket.id,
    };
  }

  await logConversation(userId, message, answer);
  return { type: 'answer', content: answer, sources };
}

Оновлення бази знань через webhook

// Webhook от CMS при обновлении статьи
app.post('/webhooks/docs-updated', async (req, res) => {
  const { articleId, action } = req.body;

  if (action === 'delete') {
    await qdrant.delete('support-docs', {
      filter: { must: [{ key: 'articleId', match: { value: articleId } }] },
    });
  } else {
    const article = await fetchArticle(articleId);
    // Удаляем старые чанки
    await qdrant.delete('support-docs', {
      filter: { must: [{ key: 'articleId', match: { value: articleId } }] },
    });
    // Переиндексируем
    await indexArticle(article);
  }

  res.json({ ok: true });
});

Аналітика ефективності

Логуємо всі діалоги та пропонуємо користувачу оцінити відповідь. Щотижневий звіт показує топ-20 питань з поганою відповіддю — це допомагає доопрацьовувати базу знань. SQL-запит для звіту:

SELECT question, COUNT(*) as count
FROM support_conversations
WHERE feedback = 'not-helpful'
GROUP BY question
ORDER BY count DESC
LIMIT 20;

Ми налаштовуємо дашборд у вашій BI-системі, щоб бачити динаміку.

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

Етап Тривалість Що робимо
Базова версія з RAG (до 500 статей) 5-7 днів Індексація, налаштування векторного пошуку, генерація відповідей
Персоналізація 1-2 дні Підключення CRM, підстановка контексту користувача
Handoff до оператора 2-3 дні Інтеграція з тікет-системою, тригери ескалації
Аналітика та дашборд 3-4 дні Логування, звіти, BI-дашборд

Для WordPress ми готуємо плагін, який автоматично надсилає статті при публікації. Для Strapi — webhook, як показано вище. Якщо у вас кастомна CMS, достатньо будь-якого API-ендпоінта. Терміни уточнюються після оцінки вашого стеку та обсягу бази знань. Ціна розраховується індивідуально. Для обговорення вашого проекту зв'яжіться з нами. Отримайте консультацію — ми покажемо, як система працюватиме на вашому стеку. Замовте інтеграцію прямо зараз.

Інтеграція 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 у ваш веб-додаток.