31 KiB
31 KiB
Внедрение RAG-ассистента: поэтапный план
Особенности проекта: разнообразие клиентов, каналов и данных
-
Клиенты:
- Различные сегменты: B2B, B2C, VIP, оптовые и розничные покупатели, корпоративные клиенты, частные лица и др.
- Различные сценарии взаимодействия (покупка, поддержка, консультация, возврат и т.д.).
-
Каналы коммуникации:
- Веб-чат
- Telegram/мессенджеры
- Возможна интеграция с другими каналами (WhatsApp, телефон и др.)
-
Типы данных:
- Текстовые сообщения
- Аудио, видео, изображения (мультимодальные данные)
- Вложения (документы, сканы, фото товаров и т.д.)
-
Языки:
- Русский
- Английский
- Испанский
- Китайский
- Возможность расширения на другие языки
-
Товары и услуги:
- Широкий ассортимент товаров (разные категории, бренды, характеристики)
- Различные услуги (консультации, сервис, доставка, гарантия, возврат и др.)
- Возможность кросс-продаж и рекомендаций
-
Требования к RAG:
- Гибкая фильтрация знаний по сегменту клиента, языку, категории товара/услуги, каналу обращения
- Поддержка мультиязычности и мультимодальности
- Масштабируемость для добавления новых ассистентов, сегментов, каналов и языков
Многоагентная архитектура AI-ассистента
🎯 Главный AI-координатор
- Роль: Анализирует входящие сообщения и координирует работу специализированных агентов
- Функции:
- Определяет какие агенты нужны для обработки сообщения
- Собирает результаты от всех агентов
- Генерирует финальный персонализированный ответ
- Управляет контекстом беседы
🤖 Специализированные агенты
1. Агент "Персонализация пользователя"
- Задача: Извлечение и управление персональными данными
- Функции:
- Извлекает имя из сообщений ("меня зовут Саша")
- Анализирует профиль пользователя (компания, должность, предпочтения)
- Отслеживает историю взаимодействий
- Определяет стадию в воронке продаж
- Результат: Персонализированный контекст для ответа
2. Агент "Анализ запроса"
- Задача: Классификация и понимание сути обращения
- Функции:
- Определяет тип вопроса (техническая проблема, вопрос о цене, жалоба)
- Анализирует эмоциональное состояние клиента
- Выявляет скрытые потребности
- Определяет приоритетность запроса
- Результат: Структурированный анализ запроса
3. Агент "RAG поиск"
- Задача: Поиск релевантной информации в базе знаний
- Функции:
- Векторный поиск по RAG базе
- Фильтрация по тегам пользователя
- Поиск похожих случаев и решений
- Извлечение контекстной информации
- Результат: Релевантные ответы и шаблоны
4. Агент "Контекст беседы"
- Задача: Анализ истории взаимодействий
- Функции:
- Изучает предыдущие сообщения в беседе
- Анализирует все предыдущие обращения пользователя
- Определяет повторяющиеся темы и проблемы
- Отслеживает прогресс в решении задач
- Результат: Контекстная картина взаимодействия
5. Агент "Детализация"
- Задача: Выяснение недостающей информации
- Функции:
- Формулирует уточняющие вопросы
- Определяет какие детали нужны для решения
- Адаптирует вопросы под контекст беседы
- Отслеживает ответы на уточняющие вопросы
- Результат: Структурированные уточняющие вопросы
6. Агент "Персонализация ответа"
- Задача: Адаптация ответа под конкретного пользователя
- Функции:
- Учитывает стиль общения пользователя
- Адаптирует тон (формальный/неформальный)
- Использует имя и персональные данные
- Ссылается на предыдущие взаимодействия
- Результат: Персонализированный ответ
7. Агент "Мультиязычность"
- Задача: Обработка многоязычных запросов
- Функции:
- Определяет язык входящего сообщения
- Ищет ответы на соответствующем языке
- Генерирует ответы на языке пользователя
- Адаптирует культурные особенности
- Результат: Локализованный ответ
8. Агент "Мультимодальность"
- Задача: Обработка различных типов контента
- Функции:
- Анализ изображений, аудио, видео
- Извлечение текста из медиафайлов
- Поиск похожих медиа в базе знаний
- Генерация мультимодальных ответов
- Результат: Контекст из медиафайлов
9. Агент "Саммари беседы"
- Задача: Создание краткого саммари истории беседы
- Функции:
- Анализирует последние 10-20 сообщений из истории
- Создает краткое саммари через AI (вместо передачи полной истории)
- Кэширует результат для повторного использования
- Обновляет саммари при поступлении новых сообщений
- Оптимизирует количество токенов в промпте
- Результат: Оптимизированный контекст беседы для AI
10. Агент "Анализ контакта"
- Задача: Извлечение и анализ данных пользователя из профиля
- Функции:
- Получает данные из профиля контакта (имя, теги, язык, роль)
- Анализирует предпочтения и историю взаимодействий
- Кэширует анализ для быстрого доступа
- Обновляет при изменении профиля пользователя
- Определяет стиль общения и приоритет
- Результат: Персонализированный контекст для ответа
11. Агент "Кэширование бесед"
- Задача: Управление кэшем бесед и контекста
- Функции:
- Кэширует саммари беседы + анализ контакта
- Управляет TTL (Time To Live) для автоматической очистки
- Проверяет актуальность кэша при новых сообщениях
- Оптимизирует производительность системы
- Предотвращает повторные вычисления
- Результат: Быстрый доступ к контексту без пересчета
⚙️ Логика работы многоагентной системы
Шаг 1: Получение сообщения
- Координатор получает входящее сообщение
- Анализирует базовый контекст
- Определяет необходимых агентов
Шаг 2: Параллельный запуск агентов
- Агент "Персонализация" → извлекает данные пользователя
- Агент "Анализ запроса" → классифицирует обращение
- Агент "RAG поиск" → ищет релевантную информацию
- Агент "Контекст" → анализирует историю
- Агент "Мультиязычность" → определяет язык
- Агент "Мультимодальность" → обрабатывает медиа
- Агент "Саммари беседы" → создает краткое саммари истории
- Агент "Анализ контакта" → извлекает данные из профиля
- Агент "Кэширование бесед" → проверяет и обновляет кэш
Шаг 3: Сбор и анализ результатов
- Координатор собирает данные от всех агентов
- Анализирует полноту информации
- Определяет необходимость дополнительных уточнений
Шаг 4: Генерация ответа
- Если информации достаточно → генерирует персонализированный ответ
- Если нужно уточнить → запускает агента "Детализация"
- Если требуется дополнительный контекст → запрашивает у других агентов
Шаг 5: Сохранение контекста
- Обновляет профиль пользователя
- Сохраняет контекст беседы
- Логирует использованные знания
- Обновляет кэш саммари и анализа контакта
- Сохраняет оптимизированный контекст для будущих запросов
🎨 Преимущества многоагентной архитектуры
- Модульность: Каждый агент решает свою специализированную задачу
- Масштабируемость: Легко добавлять новых агентов
- Эффективность: Параллельная обработка разных аспектов
- Гибкость: Разные комбинации агентов для разных ситуаций
- Персонализация: Глубокое понимание каждого пользователя
- Качество: Специализированная обработка каждого аспекта
- Оптимизация: Саммари бесед снижает количество токенов
- Кэширование: Быстрый доступ к контексту без пересчета
- Производительность: Уменьшение времени ответа и нагрузки на AI
Персонализация на уровне аккаунта пользователя
👤 Профиль пользователя
- Базовые данные: Имя, компания, должность, контактная информация
- История взаимодействий: Все предыдущие обращения и решения
- Предпочтения: Стиль общения, технический уровень, приоритеты
- Статус: Стадия в воронке продаж, статус клиента
- Теги: Категории, сегменты, специализации
📊 Контекстная картина
- Текущая беседа: Сообщения в рамках одной сессии
- История обращений: Все предыдущие взаимодействия
- Решенные проблемы: Успешно закрытые задачи
- Открытые вопросы: Незавершенные обращения
- Эмоциональное состояние: Тон и настроение клиента
🎯 Алгоритм персонализации
1. Анализ входящего сообщения
- Определение типа обращения
- Извлечение ключевой информации
- Анализ эмоционального контекста
2. Загрузка профиля пользователя
- Получение персональных данных
- Анализ истории взаимодействий
- Определение текущего статуса
3. Поиск в RAG базе
- Фильтрация по тегам пользователя
- Поиск релевантных решений
- Анализ похожих случаев
4. Формирование контекста
- Объединение данных профиля и истории
- Анализ текущей ситуации
- Определение оптимального подхода
5. Генерация персонализированного ответа
- Учет персональных данных
- Адаптация под стиль общения
- Ссылки на предыдущие взаимодействия
Этап 1. Проектирование и подготовка инфраструктуры
- Проектирование схемы хранения знаний (RAG):
- Описать структуру таблицы
knowledge_documents(миграция). - Определить поля: id, content, language, type (текст/медиа), метаданные, дата, автор и т.д.
- Описать структуру таблицы
- Подготовка backend:
- Создать миграцию и модель для
knowledge_documents. - Подготовить базовые CRUD-эндпоинты для работы с базой знаний.
- Создать миграцию и модель для
Этап 2. Интеграция векторного поиска (RAG)
- Реализация векторного хранилища:
- Реализовать методы инициализации и поиска (
initVectorStore,findSimilarDocuments) вai-assistant.js. - Настроить хранение эмбеддингов для документов.
- Реализовать методы инициализации и поиска (
- API для поиска знаний:
- Добавить эндпоинт для поиска релевантных знаний по запросу пользователя.
Этап 3. Разработка многоагентной архитектуры
- Создание базовой структуры агентов:
- Реализовать главный AI-координатор
- Создать базовые классы для специализированных агентов
- Настроить систему координации между агентами
- Разработка специализированных агентов:
- Агент "Персонализация пользователя"
- Агент "Анализ запроса"
- Агент "RAG поиск"
- Агент "Контекст беседы"
- Агент "Детализация"
- Агент "Персонализация ответа"
- Агент "Саммари беседы" (новый)
- Агент "Анализ контакта" (новый)
- Агент "Кэширование бесед" (новый)
- Интеграция с существующей системой:
- Подключение агентов к текущему pipeline
- Настройка логирования и мониторинга
- Тестирование взаимодействия агентов
- Реализация оптимизаций:
- Создание сервиса саммари бесед
- Интеграция анализа контактов для персонализации
- Настройка кэширования для повышения производительности
Этап 4. Интеграция RAG в pipeline ассистента
- Модификация логики ответа ассистента:
- При получении сообщения пользователя — искать релевантные знания и включать их в prompt LLM.
- Обеспечить мультиязычность поиска и генерации ответа.
- Интегрировать саммари беседы вместо передачи полной истории.
- Использовать анализ контактов для персонализации ответов.
- Логирование и трассировка:
- Сохранять, какие знания были использованы для ответа.
- Логировать использование саммари и кэширования.
- Отслеживать производительность оптимизаций.
Этап 5. Интерфейс для админа
- UI для управления знаниями:
- Добавить на фронте раздел для просмотра, добавления, редактирования и удаления знаний.
- UI для модерации ответов ассистента:
- Кнопки "Редактировать", "Отправить", "Добавить в RAG" для сообщений и ответов.
- Возможность быстро добавить сообщение пользователя или ответ ассистента в базу знаний.
Этап 6. Поддержка мультимодальности и мультиязычности
- Обработка вложений (аудио, видео, картинки):
- Решить, как хранить и индексировать такие данные (например, хранить ссылки и метаданные, а не сами файлы).
- Мультиязычный поиск и генерация:
- Проверить корректность работы эмбеддингов и LLM для разных языков.
Этап 7. Тестирование и оптимизация
- Покрытие тестами ключевых сценариев (unit, интеграционные).
- Оптимизация скорости поиска и генерации.
- Тестирование производительности саммари и кэширования.
- Оптимизация использования токенов и времени ответа.
- Документация для команды.
Бизнес-логика управления знаниями и тегами для RAG-ассистента
1. Гибкая система тегов и связей с пользователями
- Пользователь может создавать собственные таблицы тегов (например, "покупатель", "поставщик", "VIP-клиент" и т.д.).
- В таблице тегов должна быть возможность добавлять ссылки (relation) на пользователей из таблицы
users. - Для одного тега может быть привязано несколько пользователей (мультисвязь).
- Для одного пользователя может быть несколько тегов.
2. Управление знаниями (FAQ, инструкции, ответы)
- Пользователь может создавать таблицы с вопросами и ответами (например, FAQ для определённой группы клиентов).
- Каждая запись (вопрос-ответ) может быть связана с определённым тегом или группой тегов.
- Возможна фильтрация и поиск знаний по тегам, языку, типу клиента и другим параметрам.
3. Использование тегов и знаний в RAG-ассистенте
- При обработке запроса пользователя RAG-ассистент определяет его теги (по связям в таблице тегов).
- Для генерации ответа ассистент использует только те знания (вопросы/ответы), которые соответствуют тегам пользователя.
- Администратор может добавлять новые теги, связывать их с пользователями, а также создавать и редактировать знания для каждой группы.
- Оптимизация через саммари: Вместо передачи полной истории беседы (10 сообщений), система создает краткое саммари через AI.
- Персонализация через контакты: Ассистент использует данные из профиля контакта (имя, язык, теги) для персонализации ответов.
- Кэширование контекста: Саммари беседы и анализ контактов кэшируются для быстрого доступа без пересчета.
4. UI/UX требования
- В интерфейсе создания/редактирования пользовательских таблиц должен быть доступен тип столбца "relation" (связь с users).
- Для ячеек типа "relation" реализовать выпадающий список с поиском по пользователям.
- Для таблиц знаний — возможность выбора одного или нескольких тегов для каждой записи.
Пример структуры:
- Таблица
user_tags: id, name, [user_id (relation, мультисвязь)] - Таблица
faq: id, question, answer, [tag_id (relation, мультисвязь)]
Применение:
- RAG-ассистент использует связи между пользователями, тегами и знаниями для персонализации ответов и поиска релевантной информации.
5. Безопасность и контроль
- Только администратор может создавать и редактировать системные теги и знания.
- Обычные пользователи могут видеть только свои теги и связанные с ними знания.
Требования к CRM-интерфейсу для работы с контактами, тегами и настройками RAG-ассистента
1. Раздел "Контакты" в CRM
- Фильтры:
- Новые пользователи (по дате создания или статусу "новый").
- Новые входящие сообщения (по наличию непрочитанных/неотвеченных сообщений).
- Теги (мультиселект по тегам пользователя).
- Детали контакта:
- Просмотр истории сообщений.
- Список тегов пользователя.
- Добавление/удаление тегов через выпадающий список или автокомплит (создание связи в таблице user_tags).
2. Настройки ИИ-ассистента
- Выбор RAG-таблиц:
- В настройках ассистента отображается список всех доступных RAG-таблиц.
- Администратор выбирает (чекбоксами или мультиселектом), какие таблицы использовать для поиска ответов.
- Для каждой выбранной таблицы отображается список тегов, которые она содержит.
- Связь с тегами:
- При генерации ответа ИИ использует только те RAG-таблицы и записи, которые соответствуют тегам пользователя.
3. Рекомендации по интерфейсу (Vue)
- Компоненты:
ContactList.vue— фильтры, список пользователейContactDetails.vue— история сообщений, теги, добавление теговAssistantSettings.vue— выбор RAG-таблицRagTableSelector.vue— список таблиц с чекбоксамиTagList.vue— просмотр тегов в выбранной таблице
4. Схема действий администратора
- В разделе "Контакты" находит нового пользователя/сообщение через фильтры.
- В деталях контакта добавляет нужные теги пользователю.
- В настройках ассистента выбирает, какие RAG-таблицы использовать для поиска по тегам.
- ИИ-ассистент при ответе использует только релевантные RAG-таблицы и теги.
5. Пример структуры таблиц для RAG и тегов
users— пользователиmessages— сообщенияtags— справочник теговuser_tags— связь пользователей и тегов (user_id, tag_id)rag_tables— таблицы знаний (например, FAQ, инструкции)rag_entries— записи в таблицах знаний (content, rag_table_id, ...)rag_entry_tags— связь записей знаний и тегов (rag_entry_id, tag_id)
План внедрения RAG-ассистента в CRM
-
Создать RAG-таблицы для ИИ-ассистента
- Таблицы для хранения знаний о компании, продуктах, услугах (например,
rag_tables,rag_entries). - Возможность добавлять, редактировать, удалять записи через UI.
- Каждая запись может быть связана с тегами (например, категория продукта, язык, сегмент клиента).
- Таблицы для хранения знаний о компании, продуктах, услугах (например,
-
Создать таблицы с тегами для пользователей
- Таблица тегов (
tags). - Связующая таблица
user_tags(user_id, tag_id). - UI для управления тегами и их привязкой к пользователям.
- Таблица тегов (
-
Отредактировать страницу настройки ИИ-ассистента
- Добавить выбор, какие RAG-таблицы использовать для поиска.
- Отображать список тегов, связанных с выбранными таблицами.
- Возможность быстро подключать/отключать таблицы и теги.
-
Добавить в раздел "Контакты" фильтры (отдельные компоненты)
- Фильтр по новым пользователям.
- Фильтр по новым входящим сообщениям.
- Фильтр по тегам (мультиселект).
- Каждый фильтр реализовать отдельным Vue-компонентом для переиспользования.
-
В "Детали контакта" добавить инлайн-кнопки
- Кнопки:
- Сгенерировать (ответ с помощью ИИ)
- Редактировать (отредактировать сгенерированный ответ)
- Отправить (отправить ответ пользователю)
- Добавить в RAG-таблицу (сделать сообщение или ответ частью базы знаний)
- Кнопки должны быть доступны для каждого сообщения в истории.
- Кнопки:
Этот документ будет дополняться по мере реализации каждого этапа.