ваше сообщение коммита
This commit is contained in:
37
md/MASKING_AND_ENCRYPTION_PLAN.md
Normal file
37
md/MASKING_AND_ENCRYPTION_PLAN.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# План задач по маскировке и шифрованию данных
|
||||
|
||||
## 1. Анализ данных
|
||||
- [ ] Определить, какие поля и таблицы содержат чувствительные данные (например, email, ФИО, адрес, сообщения, вложения).
|
||||
- [ ] Составить список полей для маскировки (для user/guest) и для шифрования (для хранения в БД).
|
||||
|
||||
## 2. Маскировка данных (токенизация)
|
||||
- [ ] Реализовать функцию маскировки на backend (Node.js):
|
||||
- [ ] Для ролей user/guest возвращать токены вместо реальных данных (например, `token_<id>`).
|
||||
- [ ] Для admin возвращать реальные значения.
|
||||
- [ ] Внедрить маскировку в API-эндпоинты, возвращающие списки пользователей, чатов, сообщений и т.д.
|
||||
- [ ] Обновить frontend для корректного отображения токенов и подсказок (например, «Данные скрыты, доступ только администратору»).
|
||||
|
||||
## 3. Шифрование данных при хранении
|
||||
- [ ] Выбрать алгоритм шифрования (например, AES-256-GCM).
|
||||
- [ ] Реализовать функции шифрования/дешифрования на backend для чувствительных полей.
|
||||
- [ ] Хранить ключи шифрования только в переменных окружения (не в коде и не в БД).
|
||||
- [ ] Мигрировать существующие данные: зашифровать чувствительные поля в БД.
|
||||
- [ ] Обновить логику создания/обновления записей: шифровать данные перед сохранением.
|
||||
- [ ] Обновить логику чтения: расшифровывать данные для admin, возвращать токены для user/guest.
|
||||
|
||||
## 4. Шифрование файлов и вложений
|
||||
- [ ] Реализовать шифрование файлов/вложений перед сохранением на диск или в облако.
|
||||
- [ ] Обеспечить расшифровку файлов только для admin.
|
||||
|
||||
## 5. Безопасное хранение ключей
|
||||
- [ ] Настроить хранение ключей шифрования в переменных окружения (Akash/Flux Cloud).
|
||||
- [ ] Обновить Dockerfile и инструкции деплоя для поддержки секретов.
|
||||
|
||||
## 6. Тестирование и аудит
|
||||
- [ ] Провести тестирование маскировки и шифрования для всех ролей.
|
||||
- [ ] Проверить, что admin видит реальные данные, user/guest — только токены.
|
||||
- [ ] Провести аудит безопасности (внешний или внутренний).
|
||||
|
||||
## 7. Документация
|
||||
- [ ] Описать логику маскировки и шифрования в README или отдельном разделе.
|
||||
- [ ] Добавить инструкции по настройке переменных окружения и деплою на Akash/Flux Cloud.
|
||||
92
md/RAG_ASSISTANT_INTEGRATION.md
Normal file
92
md/RAG_ASSISTANT_INTEGRATION.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Интеграция RAG-ассистента для бизнеса с поддержкой продуктов, сегментов клиентов и LLM
|
||||
|
||||
## Цель
|
||||
|
||||
Реализовать интеллектуального ассистента для бизнеса, который:
|
||||
- Использует RAG-таблицы для хранения вопросов, ответов, уточняющих вопросов, ответов на возражения и дополнительного контекста.
|
||||
- Поддерживает фильтрацию по продуктам, сегментам клиентов (тегам), приоритету, дате и другим бизнес-полям.
|
||||
- Интегрируется с LLM (Ollama/OpenAI) для генерации финального ответа на основе найденного контекста.
|
||||
- Позволяет настраивать системный промт с плейсхолдерами для гибкой персонализации ответов.
|
||||
|
||||
---
|
||||
|
||||
## Основные требования
|
||||
|
||||
1. **Структура RAG-таблицы**
|
||||
- Каждая строка содержит:
|
||||
- Вопрос (`question`)
|
||||
- Ответ (`answer`)
|
||||
- Ответ с уточняющим вопросом (`clarifyingAnswer`)
|
||||
- Ответ на возражение (`objectionAnswer`)
|
||||
- Теги пользователя/сегмента (`userTags`)
|
||||
- Продукт/услуга (`product`)
|
||||
- Дополнительный контекст (`context`)
|
||||
- Приоритет (`priority`)
|
||||
- Дата (`date`)
|
||||
- Для каждого столбца указывается назначение (purpose) через выпадающий список при создании/редактировании.
|
||||
|
||||
2. **Фильтрация и поиск**
|
||||
- При поступлении вопроса пользователя:
|
||||
- Фильтровать строки по продукту, тегам пользователя, приоритету, дате и другим полям.
|
||||
- Выполнять векторный поиск (embedding) только по релевантным строкам.
|
||||
|
||||
3. **Интеграция с LLM**
|
||||
- После поиска по RAG-таблице формировать системный промт с подстановкой найденных данных (через плейсхолдеры).
|
||||
- Передавать промт и вопрос пользователя в LLM (Ollama/OpenAI).
|
||||
- Возвращать финальный ответ пользователю.
|
||||
|
||||
4. **Плейсхолдеры для промта**
|
||||
- Поддерживаются плейсхолдеры:
|
||||
- `{context}` — дополнительная информация
|
||||
- `{answer}` — основной ответ
|
||||
- `{clarifyingAnswer}` — уточняющий вопрос
|
||||
- `{objectionAnswer}` — ответ на возражение
|
||||
- `{question}` — вопрос пользователя
|
||||
- `{userTags}` — теги пользователя
|
||||
- `{product}` — продукт/услуга
|
||||
- `{priority}` — приоритет
|
||||
- `{date}` — дата
|
||||
- `{rules}` — описание применённых правил
|
||||
- `{history}` — история диалога
|
||||
- `{model}` — используемая LLM
|
||||
- `{language}` — язык ответа
|
||||
|
||||
5. **Кэширование embedding**
|
||||
- Для ускорения поиска embedding для вопросов кэшируются в БД.
|
||||
- При изменении вопроса embedding обновляется.
|
||||
|
||||
6. **Логирование и аналитика**
|
||||
- Логируются все этапы работы ассистента: запрос пользователя, найденный контекст, результат LLM, время ответа, id пользователя и т.д.
|
||||
- Вся информация сохраняется для последующего анализа и улучшения качества ответов.
|
||||
|
||||
---
|
||||
|
||||
## Пример бизнес-сценария
|
||||
|
||||
- Клиент B2B интересуется продуктом "ProductX".
|
||||
- Вопрос: "Как интегрировать ваш продукт с нашей ERP?"
|
||||
- Система фильтрует строки по `product = "ProductX"` и тегу `B2B`.
|
||||
- Векторный поиск проводится только по релевантным строкам.
|
||||
- В системном промте используются плейсхолдеры для подстановки найденных данных.
|
||||
- LLM генерирует финальный ответ с учётом контекста, уточняющих вопросов и ответов на возражения.
|
||||
|
||||
---
|
||||
|
||||
## Пример системного промта
|
||||
|
||||
```
|
||||
Ты — ассистент компании. Пользователь интересуется продуктом: {product}, сегмент: {userTags}.
|
||||
Используй только релевантные ответы и контекст для этого продукта и типа клиента.
|
||||
Контекст: {context}
|
||||
Ответ: {answer}
|
||||
Уточняющий вопрос: {clarifyingAnswer}
|
||||
Ответ на возражение: {objectionAnswer}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Результат
|
||||
|
||||
- Персонализированные, точные и масштабируемые ответы для разных продуктов и сегментов клиентов.
|
||||
- Гибкая настройка ассистента через UI и системный промт.
|
||||
- Возможность расширения под любые бизнес-сценарии.
|
||||
207
md/RAG_TASKS.md
Normal file
207
md/RAG_TASKS.md
Normal 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-таблицу (сделать сообщение или ответ частью базы знаний)
|
||||
- Кнопки должны быть доступны для каждого сообщения в истории.
|
||||
|
||||
---
|
||||
|
||||
**Этот документ будет дополняться по мере реализации каждого этапа.**
|
||||
Reference in New Issue
Block a user