ваше сообщение коммита

This commit is contained in:
2025-06-25 20:01:44 +03:00
parent a79aa7fa3a
commit 5f66a577f4
5 changed files with 49 additions and 0 deletions

207
md/RAG_TASKS.md Normal file
View File

@@ -0,0 +1,207 @@
# Внедрение RAG-ассистента: поэтапный план
---
## Особенности проекта: разнообразие клиентов, каналов и данных
- **Клиенты:**
- Различные сегменты: B2B, B2C, VIP, оптовые и розничные покупатели, корпоративные клиенты, частные лица и др.
- Различные сценарии взаимодействия (покупка, поддержка, консультация, возврат и т.д.).
- **Каналы коммуникации:**
- Веб-чат
- Email
- Telegram/мессенджеры
- Возможна интеграция с другими каналами (WhatsApp, телефон и др.)
- **Типы данных:**
- Текстовые сообщения
- Аудио, видео, изображения (мультимодальные данные)
- Вложения (документы, сканы, фото товаров и т.д.)
- **Языки:**
- Русский
- Английский
- Испанский
- Китайский
- Возможность расширения на другие языки
- **Товары и услуги:**
- Широкий ассортимент товаров (разные категории, бренды, характеристики)
- Различные услуги (консультации, сервис, доставка, гарантия, возврат и др.)
- Возможность кросс-продаж и рекомендаций
- **Требования к RAG:**
- Гибкая фильтрация знаний по сегменту клиента, языку, категории товара/услуги, каналу обращения
- Поддержка мультиязычности и мультимодальности
- Масштабируемость для добавления новых ассистентов, сегментов, каналов и языков
---
## Этап 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. Интеграция RAG в pipeline ассистента
1. **Модификация логики ответа ассистента:**
- При получении сообщения пользователя — искать релевантные знания и включать их в prompt LLM.
- Обеспечить мультиязычность поиска и генерации ответа.
2. **Логирование и трассировка:**
- Сохранять, какие знания были использованы для ответа.
---
## Этап 4. Интерфейс для админа
1. **UI для управления знаниями:**
- Добавить на фронте раздел для просмотра, добавления, редактирования и удаления знаний.
2. **UI для модерации ответов ассистента:**
- Кнопки "Редактировать", "Отправить", "Добавить в RAG" для сообщений и ответов.
- Возможность быстро добавить сообщение пользователя или ответ ассистента в базу знаний.
---
## Этап 5. Поддержка мультимодальности и мультиязычности
1. **Обработка вложений (аудио, видео, картинки):**
- Решить, как хранить и индексировать такие данные (например, хранить ссылки и метаданные, а не сами файлы).
2. **Мультиязычный поиск и генерация:**
- Проверить корректность работы эмбеддингов и LLM для разных языков.
---
## Этап 6. Тестирование и оптимизация
1. **Покрытие тестами ключевых сценариев (unit, интеграционные).**
2. **Оптимизация скорости поиска и генерации.**
3. **Документация для команды.**
---
## Бизнес-логика управления знаниями и тегами для RAG-ассистента
### 1. Гибкая система тегов и связей с пользователями
- Пользователь может создавать собственные таблицы тегов (например, "покупатель", "поставщик", "VIP-клиент" и т.д.).
- В таблице тегов должна быть возможность добавлять ссылки (relation) на пользователей из таблицы `users`.
- Для одного тега может быть привязано несколько пользователей (мультисвязь).
- Для одного пользователя может быть несколько тегов.
### 2. Управление знаниями (FAQ, инструкции, ответы)
- Пользователь может создавать таблицы с вопросами и ответами (например, FAQ для определённой группы клиентов).
- Каждая запись (вопрос-ответ) может быть связана с определённым тегом или группой тегов.
- Возможна фильтрация и поиск знаний по тегам, языку, типу клиента и другим параметрам.
### 3. Использование тегов и знаний в RAG-ассистенте
- При обработке запроса пользователя RAG-ассистент определяет его теги (по связям в таблице тегов).
- Для генерации ответа ассистент использует только те знания (вопросы/ответы), которые соответствуют тегам пользователя.
- Администратор может добавлять новые теги, связывать их с пользователями, а также создавать и редактировать знания для каждой группы.
### 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-таблицу (сделать сообщение или ответ частью базы знаний)
- Кнопки должны быть доступны для каждого сообщения в истории.
---
**Этот документ будет дополняться по мере реализации каждого этапа.**