AI-ассистент поддержки
▍RAG-ассистент учится на базе знаний компании, отвечает в чате и Telegram, эскалирует сложное оператору.
Контекст
Клиент под NDA: сервисная компания с большой базой знаний и поддержкой, которая тонула в однотипных вопросах. 70% обращений — это «где счёт», «как вернуть», «не приходит код» — ответы давно лежат в регламентах, но люди ищут их вручную.
Готовые чат-боты на скриптах не подходили: база знаний меняется каждую неделю, а на жёстких сценариях бот быстро врёт. Нужен был ассистент, который отвечает по актуальным документам и честно отдаёт оператору то, чего не знает.
Задача
- 01Отвечать по реальной базе знаний клиента, а не «из головы» модели
- 02Один ассистент в трёх каналах: сайт-виджет, Telegram, чат поддержки
- 03Бесшовная эскалация на оператора с полным контекстом диалога
- 04Аналитика дефлекции: что закрыто ботом, что ушло людям и почему
- 05Никаких выдуманных ответов: нет источника — нет ответа
Решение
Индексация базы знаний
Регламенты, FAQ и статьи режем на смысловые чанки, считаем эмбеддинги и кладём в векторную БД. Переиндексация по вебхуку при правке документа — ответы всегда на свежей версии.
RAG-пайплайн с цитатами
На вопрос достаём релевантные фрагменты, LLM формулирует ответ строго по ним и прикладывает ссылки на источники. Низкая уверенность или пустой контекст — сразу эскалация, без догадок.
Каналы и эскалация
Один движок, три фронта: виджет на сайте, Telegram-бот и встройка в чат поддержки. При передаче оператор получает весь диалог и найденные источники — не нужно переспрашивать клиента.
Дашборд дефлекции
Видно процент тикетов, закрытых без человека, темы с низкой уверенностью и пробелы в базе знаний. Раз в неделю отдаём отчёт «что дописать», и дефлекция растёт сама.
Архитектура
Ядро — retrieval-сервис поверх векторной БД (pgvector на старте, Qdrant под рост). На запрос он отдаёт top-k фрагментов с порогом схожести; LLM работает только с этим контекстом, а каждый ответ хранит, какие источники использованы — для аудита и аналитики.
Каналы — тонкие адаптеры к одному API: виджет, Telegram-бот и встройка в чат поддержки. Диалоги, метрики дефлекции и логи эскалаций лежат в Postgres; дашборд читает их напрямую, без отдельного хранилища событий.
Результаты
- тикетов без оператора
- среднее время ответа
- нагрузка на поддержку
- первая линия
Что не получилось с первого раза
- ✕На старте бот отвечал уверенно даже при слабом совпадении с базой — пара ответов оказалась выдумкой. Добавили порог уверенности и правило «нет источника — нет ответа»: при низком совпадении ассистент честно зовёт оператора вместо догадок.
- ✕Переиндексацию сначала гоняли по ночному расписанию, и свежие правки регламентов попадали в ответы только на следующий день. Перевели на вебхук по событию правки — теперь база и ответы синхронны в минутах.
“Главное — он не выдумывает. Если ответа нет в базе, передаёт оператору с контекстом, а не врёт уверенным тоном. Поэтому мы спокойно поставили его на первую линию.
Команда
Что дальше
- →Голосовая линия: тот же RAG для входящих звонков
- →Авто-черновики ответов оператору на эскалациях
- →Проактивные подсказки по пробелам в базе знаний

