Однотипные вопросы в поддержке отнимают часы времени. RAG-ассистент берёт 80% запросов, оставляя операторам только сложные кейсы. Мы разрабатываем AI-ассистентов для сайтов — это не обычный чат-бот, а интеллектуальная система на основе RAG (Retrieval-Augmented Generation). Она подключается к вашей базе знаний, документации и CRM. Когда пользователь пишет «Почему не работает экспорт?», ассистент за секунду находит ответ в вашем Help Center, проверяет тариф и статус клиента, и даёт персонализированный ответ. Без шаблонов. Без потери контекста.
Точность таких решений достигает 95% — это в 3 раза выше, чем у обычных чат-ботов на правилах. RAG-ассистент обрабатывает в 4 раза больше запросов за час, освобождая операторов для нестандартных ситуаций. Снижаем нагрузку на поддержку на 40%, экономя значительную часть годового бюджета. Мы берём проект «под ключ»: от настройки векторной базы до обучения модели. Наши инженеры сертифицированы по OpenAI и AWS, опыт — более 50 внедрений.
Как RAG повышает точность ответов?
RAG — это подход, при котором языковая модель не запоминает ваш продукт, а получает релевантные куски документации при каждом вопросе. Это решает проблему галлюцинаций и устаревания знаний.
Процесс:
- Вопрос пользователя превращается в embedding (вектор) через OpenAI или локальную модель.
- Вектор ищет похожие чанки в векторной базе (Qdrant, Pinecone, Weaviate, pgvector).
- LLM (GPT-4o-mini, Claude 3.5 Haiku) получает вопрос + контекст из документации.
- Генерирует ответ со ссылками на источники.
Такой подход даёт точность до 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, distance: 'Cosine' }, }); // Индексирование статей async function indexArticle(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-эндпоинта. Сроки уточняются после оценки вашего стека и объёма базы знаний. Цена рассчитывается индивидуально. Для обсуждения вашего проекта свяжитесь с нами. Получите консультацию — мы покажем, как система встанет на вашем стеке. Закажите интеграцию прямо сейчас.







