462 lines
31 KiB
Markdown
462 lines
31 KiB
Markdown
<!--
|
||
Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||
All rights reserved.
|
||
|
||
This software is proprietary and confidential.
|
||
Unauthorized copying, modification, or distribution is prohibited.
|
||
|
||
For licensing inquiries: info@hb3-accelerator.com
|
||
Website: https://hb3-accelerator.com
|
||
GitHub: https://github.com/HB3-ACCELERATOR
|
||
-->
|
||
|
||
# Внедрение RAG-ассистента: поэтапный план
|
||
|
||
---
|
||
|
||
## Особенности проекта: разнообразие клиентов, каналов и данных
|
||
|
||
- **Клиенты:**
|
||
- Различные сегменты: B2B, B2C, VIP, оптовые и розничные покупатели, корпоративные клиенты, частные лица и др.
|
||
- Различные сценарии взаимодействия (покупка, поддержка, консультация, возврат и т.д.).
|
||
|
||
- **Каналы коммуникации:**
|
||
- Веб-чат
|
||
- Email
|
||
- 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: Сохранение контекста
|
||
- Обновляет профиль пользователя
|
||
- Сохраняет контекст беседы
|
||
- Логирует использованные знания
|
||
- Обновляет кэш саммари и анализа контакта
|
||
- Сохраняет оптимизированный контекст для будущих запросов
|
||
|
||
### 🎨 Преимущества многоагентной архитектуры
|
||
|
||
1. **Модульность:** Каждый агент решает свою специализированную задачу
|
||
2. **Масштабируемость:** Легко добавлять новых агентов
|
||
3. **Эффективность:** Параллельная обработка разных аспектов
|
||
4. **Гибкость:** Разные комбинации агентов для разных ситуаций
|
||
5. **Персонализация:** Глубокое понимание каждого пользователя
|
||
6. **Качество:** Специализированная обработка каждого аспекта
|
||
7. **Оптимизация:** Саммари бесед снижает количество токенов
|
||
8. **Кэширование:** Быстрый доступ к контексту без пересчета
|
||
9. **Производительность:** Уменьшение времени ответа и нагрузки на AI
|
||
|
||
---
|
||
|
||
## Персонализация на уровне аккаунта пользователя
|
||
|
||
### 👤 Профиль пользователя
|
||
- **Базовые данные:** Имя, компания, должность, контактная информация
|
||
- **История взаимодействий:** Все предыдущие обращения и решения
|
||
- **Предпочтения:** Стиль общения, технический уровень, приоритеты
|
||
- **Статус:** Стадия в воронке продаж, статус клиента
|
||
- **Теги:** Категории, сегменты, специализации
|
||
|
||
### 📊 Контекстная картина
|
||
- **Текущая беседа:** Сообщения в рамках одной сессии
|
||
- **История обращений:** Все предыдущие взаимодействия
|
||
- **Решенные проблемы:** Успешно закрытые задачи
|
||
- **Открытые вопросы:** Незавершенные обращения
|
||
- **Эмоциональное состояние:** Тон и настроение клиента
|
||
|
||
### 🎯 Алгоритм персонализации
|
||
|
||
#### 1. Анализ входящего сообщения
|
||
- Определение типа обращения
|
||
- Извлечение ключевой информации
|
||
- Анализ эмоционального контекста
|
||
|
||
#### 2. Загрузка профиля пользователя
|
||
- Получение персональных данных
|
||
- Анализ истории взаимодействий
|
||
- Определение текущего статуса
|
||
|
||
#### 3. Поиск в RAG базе
|
||
- Фильтрация по тегам пользователя
|
||
- Поиск релевантных решений
|
||
- Анализ похожих случаев
|
||
|
||
#### 4. Формирование контекста
|
||
- Объединение данных профиля и истории
|
||
- Анализ текущей ситуации
|
||
- Определение оптимального подхода
|
||
|
||
#### 5. Генерация персонализированного ответа
|
||
- Учет персональных данных
|
||
- Адаптация под стиль общения
|
||
- Ссылки на предыдущие взаимодействия
|
||
|
||
---
|
||
|
||
## Этап 1. Проектирование и подготовка инфраструктуры
|
||
1. **Проектирование схемы хранения знаний (RAG):**
|
||
- Описать структуру таблицы `knowledge_documents` (миграция).
|
||
- Определить поля: id, content, language, type (текст/медиа), метаданные, дата, автор и т.д.
|
||
2. **Подготовка backend:**
|
||
- Создать миграцию и модель для `knowledge_documents`.
|
||
- Подготовить базовые CRUD-эндпоинты для работы с базой знаний.
|
||
|
||
---
|
||
|
||
## Этап 2. Интеграция векторного поиска (RAG)
|
||
1. **Реализация векторного хранилища:**
|
||
- Реализовать методы инициализации и поиска (`initVectorStore`, `findSimilarDocuments`) в `ai-assistant.js`.
|
||
- Настроить хранение эмбеддингов для документов.
|
||
2. **API для поиска знаний:**
|
||
- Добавить эндпоинт для поиска релевантных знаний по запросу пользователя.
|
||
|
||
---
|
||
|
||
## Этап 3. Разработка многоагентной архитектуры
|
||
1. **Создание базовой структуры агентов:**
|
||
- Реализовать главный AI-координатор
|
||
- Создать базовые классы для специализированных агентов
|
||
- Настроить систему координации между агентами
|
||
2. **Разработка специализированных агентов:**
|
||
- Агент "Персонализация пользователя"
|
||
- Агент "Анализ запроса"
|
||
- Агент "RAG поиск"
|
||
- Агент "Контекст беседы"
|
||
- Агент "Детализация"
|
||
- Агент "Персонализация ответа"
|
||
- Агент "Саммари беседы" (новый)
|
||
- Агент "Анализ контакта" (новый)
|
||
- Агент "Кэширование бесед" (новый)
|
||
3. **Интеграция с существующей системой:**
|
||
- Подключение агентов к текущему pipeline
|
||
- Настройка логирования и мониторинга
|
||
- Тестирование взаимодействия агентов
|
||
4. **Реализация оптимизаций:**
|
||
- Создание сервиса саммари бесед
|
||
- Интеграция анализа контактов для персонализации
|
||
- Настройка кэширования для повышения производительности
|
||
|
||
---
|
||
|
||
## Этап 4. Интеграция RAG в pipeline ассистента
|
||
1. **Модификация логики ответа ассистента:**
|
||
- При получении сообщения пользователя — искать релевантные знания и включать их в prompt LLM.
|
||
- Обеспечить мультиязычность поиска и генерации ответа.
|
||
- Интегрировать саммари беседы вместо передачи полной истории.
|
||
- Использовать анализ контактов для персонализации ответов.
|
||
2. **Логирование и трассировка:**
|
||
- Сохранять, какие знания были использованы для ответа.
|
||
- Логировать использование саммари и кэширования.
|
||
- Отслеживать производительность оптимизаций.
|
||
|
||
---
|
||
|
||
## Этап 5. Интерфейс для админа
|
||
1. **UI для управления знаниями:**
|
||
- Добавить на фронте раздел для просмотра, добавления, редактирования и удаления знаний.
|
||
2. **UI для модерации ответов ассистента:**
|
||
- Кнопки "Редактировать", "Отправить", "Добавить в RAG" для сообщений и ответов.
|
||
- Возможность быстро добавить сообщение пользователя или ответ ассистента в базу знаний.
|
||
|
||
---
|
||
|
||
## Этап 6. Поддержка мультимодальности и мультиязычности
|
||
1. **Обработка вложений (аудио, видео, картинки):**
|
||
- Решить, как хранить и индексировать такие данные (например, хранить ссылки и метаданные, а не сами файлы).
|
||
2. **Мультиязычный поиск и генерация:**
|
||
- Проверить корректность работы эмбеддингов и LLM для разных языков.
|
||
|
||
---
|
||
|
||
## Этап 7. Тестирование и оптимизация
|
||
1. **Покрытие тестами ключевых сценариев (unit, интеграционные).**
|
||
2. **Оптимизация скорости поиска и генерации.**
|
||
3. **Тестирование производительности саммари и кэширования.**
|
||
4. **Оптимизация использования токенов и времени ответа.**
|
||
5. **Документация для команды.**
|
||
|
||
---
|
||
|
||
## Бизнес-логика управления знаниями и тегами для 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. Схема действий администратора
|
||
1. В разделе "Контакты" находит нового пользователя/сообщение через фильтры.
|
||
2. В деталях контакта добавляет нужные теги пользователю.
|
||
3. В настройках ассистента выбирает, какие RAG-таблицы использовать для поиска по тегам.
|
||
4. ИИ-ассистент при ответе использует только релевантные 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
|
||
|
||
1. **Создать RAG-таблицы для ИИ-ассистента**
|
||
- Таблицы для хранения знаний о компании, продуктах, услугах (например, `rag_tables`, `rag_entries`).
|
||
- Возможность добавлять, редактировать, удалять записи через UI.
|
||
- Каждая запись может быть связана с тегами (например, категория продукта, язык, сегмент клиента).
|
||
|
||
2. **Создать таблицы с тегами для пользователей**
|
||
- Таблица тегов (`tags`).
|
||
- Связующая таблица `user_tags` (user_id, tag_id).
|
||
- UI для управления тегами и их привязкой к пользователям.
|
||
|
||
3. **Отредактировать страницу настройки ИИ-ассистента**
|
||
- Добавить выбор, какие RAG-таблицы использовать для поиска.
|
||
- Отображать список тегов, связанных с выбранными таблицами.
|
||
- Возможность быстро подключать/отключать таблицы и теги.
|
||
|
||
4. **Добавить в раздел "Контакты" фильтры (отдельные компоненты)**
|
||
- Фильтр по новым пользователям.
|
||
- Фильтр по новым входящим сообщениям.
|
||
- Фильтр по тегам (мультиселект).
|
||
- Каждый фильтр реализовать отдельным Vue-компонентом для переиспользования.
|
||
|
||
5. **В "Детали контакта" добавить инлайн-кнопки**
|
||
- Кнопки:
|
||
- Сгенерировать (ответ с помощью ИИ)
|
||
- Редактировать (отредактировать сгенерированный ответ)
|
||
- Отправить (отправить ответ пользователю)
|
||
- Добавить в RAG-таблицу (сделать сообщение или ответ частью базы знаний)
|
||
- Кнопки должны быть доступны для каждого сообщения в истории.
|
||
|
||
---
|
||
|
||
**Этот документ будет дополняться по мере реализации каждого этапа.** |