Files
DLE/docs/setup-ai-assistant.md
2025-10-28 13:21:56 +03:00

919 lines
44 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Инструкция по настройке AI Ассистента с векторным поиском
## 🤖 Полное руководство по запуску интеллектуального помощника
Этот документ описывает пошаговый процесс настройки AI ассистента для решения бизнес-задач через электронные таблицы и векторный поиск.
---
## 📚 Что вы настроите
После выполнения инструкции у вас будет:
✅ Работающий AI ассистент с локальной моделью (Ollama)
✅ База знаний для ответов клиентам (FAQ)
✅ Автоматизация работы с поставщиками
✅ Система обучения персонала
✅ Векторный поиск по вашим данным
✅ Значительная экономия времени и ресурсов
> 💡 **Экономический эффект**: См. [AI Ассистент](./ai-assistant.md) - там подробно описаны все возможности и расчеты экономии.
---
## ⏱️ Время настройки
- **Быстрая настройка**: 20-30 минут (базовый FAQ)
- **Полная настройка**: 1-2 часа (все возможности)
---
## Шаг 1: Установка и запуск Ollama
### 1.1 Проверка статуса Ollama
1. Перейдите в **Настройки** → вкладка **Интеграции**
2. Найдите блок **"Ollama"** и нажмите **"Подробнее"**
3. Проверьте статус подключения:
-**"Ollama is running"** — все готово, переходите к шагу 1.3
-**"Ollama API not responding"** — переходите к шагу 1.2
### 1.2 Запуск Ollama (если не запущен)
Если Ollama не запущен, выполните в терминале:
```bash
# Для Docker (рекомендуется)
docker-compose up -d ollama
# Или локально
ollama serve
```
Обновите страницу и проверьте статус снова.
### 1.3 Установка модели для AI
1. В разделе **Ollama** нажмите **"Установить модель"**
2. Выберите модель:
- **qwen2.5:7b** (рекомендуется) — для русского языка, 4.7 GB
- **llama2:7b** — для английского, 3.8 GB
- **mistral:7b** — универсальная, 4.1 GB
3. Нажмите **"Установить"**
4. Дождитесь завершения загрузки (5-10 минут в зависимости от скорости интернета)
> 💡 **Подсказка**: Модель скачивается один раз и хранится локально
### 1.4 Установка Embedding модели
1. В том же разделе найдите **"Установить Embedding модель"**
2. Выберите модель:
- **mxbai-embed-large:latest** (рекомендуется) — 670 MB
- **nomic-embed-text:latest** — альтернатива, 274 MB
3. Нажмите **"Установить"**
> ⚠️ **Важно**: Embedding модель нужна для векторного поиска (RAG)
---
## Шаг 2: Создание базы знаний (электронные таблицы)
### 2.1 Создание таблицы FAQ
1. Перейдите в **Таблицы** (в главном меню)
2. Нажмите **"+ Создать таблицу"**
3. Заполните:
- **Название**: `FAQ - Часто задаваемые вопросы`
- **Описание**: `База знаний для AI ассистента по работе с клиентами`
4. Нажмите **"Создать"**
### 2.2 Настройка столбцов таблицы
Добавьте следующие столбцы:
#### Столбец 1: Вопрос (обязательный для RAG)
1. Нажмите **"+ Добавить столбец"**
2. Заполните:
- **Название**: `Вопрос`
- **Тип**: `Текст`
- **Назначение**: Выберите `Вопрос для AI`
3. Нажмите **"Сохранить"**
> ⚠️ **Критично**: Обязательно выберите назначение "Вопрос для AI" — это поле будет индексироваться для векторного поиска
#### Столбец 2: Ответ (обязательный для RAG)
1. Нажмите **"+ Добавить столбец"**
2. Заполните:
- **Название**: `Ответ`
- **Тип**: `Текст`
- **Назначение**: Выберите `Ответ AI`
3. Нажмите **"Сохранить"**
#### Столбец 3: Продукт (опционально, для фильтрации)
1. Нажмите **"+ Добавить столбец"**
2. Заполните:
- **Название**: `Продукт`
- **Тип**: `Множественный выбор`
- **Варианты**: `Базовый`, `Премиум`, `Корпоративный`
- **Назначение**: Выберите `Фильтр по продукту`
3. Нажмите **"Сохранить"**
#### Столбец 4: Теги (опционально, для категоризации)
1. Нажмите **"+ Добавить столбец"**
2. Заполните:
- **Название**: `Теги`
- **Тип**: `Множественный выбор`
- **Варианты**: `Оплата`, `Доставка`, `Возврат`, `Гарантия`, `Техподдержка`
- **Назначение**: Выберите `Теги пользователя`
3. Нажмите **"Сохранить"**
#### Столбец 5: Приоритет (опционально)
1. Нажмите **"+ Добавить столбец"**
2. Заполните:
- **Название**: `Приоритет`
- **Тип**: `Число`
- **Назначение**: Выберите `Приоритет`
3. Нажмите **"Сохранить"**
> 💡 **Подсказка**: Вопросы с более высоким приоритетом будут показываться AI первыми
### 2.3 Заполнение базы знаний
Добавьте типовые вопросы и ответы:
**Пример 1: Оплата**
| Вопрос | Ответ | Продукт | Теги | Приоритет |
|--------|-------|---------|------|-----------|
| Как оплатить заказ? | Мы принимаем оплату банковской картой, через PayPal, или банковским переводом. Выберите удобный способ при оформлении заказа. | Все | Оплата | 10 |
| Можно ли оплатить частями? | Да, для заказов от 50,000₽ доступна рассрочка на 3, 6 или 12 месяцев без переплаты. | Премиум, Корпоративный | Оплата | 8 |
**Пример 2: Доставка**
| Вопрос | Ответ | Продукт | Теги | Приоритет |
|--------|-------|---------|------|-----------|
| Сколько времени занимает доставка? | Стандартная доставка: 3-5 рабочих дней по России. Экспресс-доставка: 1-2 дня в крупных городах. | Все | Доставка | 10 |
| Сколько стоит доставка? | Бесплатная доставка при заказе от 5,000₽. Для заказов менее 5,000₽ стоимость доставки 300₽. | Все | Доставка | 9 |
**Пример 3: Возврат**
| Вопрос | Ответ | Продукт | Теги | Приоритет |
|--------|-------|---------|------|-----------|
| Как вернуть товар? | Возврат возможен в течение 14 дней с момента получения. Товар должен быть в оригинальной упаковке, с сохранением товарного вида. Свяжитесь с поддержкой для оформления возврата. | Все | Возврат | 10 |
| Когда вернут деньги? | Возврат денежных средств производится в течение 5-10 рабочих дней после получения товара на наш склад. | Все | Возврат | 8 |
> 💡 **Рекомендация**: Добавьте минимум 20-30 вопросов для качественной работы AI. Чем больше вопросов, тем точнее ответы!
### 2.4 Активация таблицы как источника для AI
1. В правом верхнем углу таблицы найдите **⚙️ Настройки таблицы**
2. Включите переключатель **"Использовать как источник для AI"** ✅
3. Нажмите **"Сохранить"**
> ✅ **Готово!** Таблица теперь индексируется для векторного поиска
---
## Шаг 3: Настройка AI провайдера (Ollama)
### 3.1 Открытие настроек Ollama
1. Перейдите в **Настройки****Интеграции**
2. Найдите блок **"Ollama"** и нажмите **"Подробнее"**
### 3.2 Проверка Base URL
1. Проверьте поле **Base URL**:
- Для Docker: `http://ollama:11434`
- Для локального: `http://localhost:11434`
2. Если URL неверный, исправьте и нажмите **"Сохранить"**
### 3.3 Выбор модели
1. В поле **"Модель (LLM)"** выберите установленную модель:
- `qwen2.5:7b` (рекомендуется для русского)
2. В поле **"Embeddings-модель"** выберите:
- `mxbai-embed-large:latest`
3. Нажмите **"Сохранить"**
---
## Шаг 4: Настройка AI Ассистента
### 4.1 Открытие настроек ассистента
1. Перейдите в **Настройки****Интеграции**
2. Найдите блок **"ИИ-ассистент"** и нажмите **"Подробнее"**
### 4.2 Настройка системного промта
В поле **"Системный промт"** введите инструкции для AI:
**Базовый промт (для начала)**:
```
Вы — профессиональный ассистент службы поддержки компании.
Правила:
1. Отвечайте вежливо и профессионально
2. Используйте информацию из базы знаний
3. Если информации нет — предложите связаться с оператором
4. Отвечайте кратко и по существу
5. Всегда заканчивайте вопросом "Чем еще могу помочь?"
```
**Продвинутый промт (с персонализацией)**:
```
Вы — профессиональный ассистент службы поддержки компании "Название вашей компании".
О компании:
- Мы занимаемся [краткое описание бизнеса]
- Наши ценности: качество, надежность, клиентоориентированность
Стиль общения:
- Дружелюбный, но профессиональный
- Обращайтесь к клиенту на "Вы"
- Используйте эмодзи умеренно (1-2 на сообщение)
Правила ответа:
1. Сначала ищите ответ в базе знаний (RAG)
2. Если нашли — отвечайте на основе найденной информации
3. Если не нашли — честно скажите и предложите помощь оператора
4. Не придумывайте информацию о ценах, сроках, условиях
5. При сложных вопросах предлагайте связаться с менеджером
Всегда заканчивайте: "Чем еще могу помочь? 😊"
```
### 4.3 Выбор моделей
1. **LLM-модель**: Выберите `qwen2.5:7b (ollama)`
2. **Embedding-модель**: Выберите `mxbai-embed-large:latest (ollama)`
> 💡 **Подсказка**: Модели автоматически подтянутся из настроек Ollama
### 4.4 Выбор RAG-таблицы
1. В поле **"Выбранные RAG-таблицы"** выберите созданную таблицу:
- `FAQ - Часто задаваемые вопросы`
2. Нажмите **"Сохранить"**
### 4.5 Настройка правил AI (Rules)
Создайте набор правил для управления поведением AI:
1. Нажмите кнопку **"Создать"** рядом с полем "Набор правил"
2. В модальном окне заполните:
**Название**: `Гибридный режим (RAG + генерация)`
**Описание**: `AI сначала ищет в базе знаний, если не находит — генерирует ответ`
**Правила (JSON)**:
```json
{
"checkUserTags": true,
"searchRagFirst": true,
"generateIfNoRag": true,
"temperature": 0.7,
"maxTokens": 500
}
```
3. Нажмите **"Сохранить"**
4. Выберите созданное правило в выпадающем списке
> 💡 **Что означают параметры**:
> - `checkUserTags: true` — учитывать теги пользователя при поиске
> - `searchRagFirst: true` — сначала искать в базе знаний
> - `generateIfNoRag: true` — генерировать ответ, если ничего не найдено
> - `temperature: 0.7` — баланс между точностью и креативностью (0.0-1.0)
> - `maxTokens: 500` — максимальная длина ответа
### 4.6 Настройки RAG поиска
Разверните раздел **"🔍 Настройки RAG поиска"**:
**Базовые настройки:**
1. **Метод поиска**: Выберите `Гибридный поиск` (рекомендуется)
2. **Максимальное количество результатов**: `5`
3. **Порог релевантности**: `0.1` (от 0.01 до 1.0)
**Извлечение ключевых слов:**
1.**Включить извлечение ключевых слов**
2. **Минимальная длина слова**: `3`
3. **Максимальное количество ключевых слов**: `10`
4.**Удалять стоп-слова**
**Веса поиска (для гибридного):**
1. **Семантический поиск**: `70%` (точность)
2. **Поиск по ключевым словам**: `30%` (скорость)
**Дополнительные настройки:**
1.**Нечеткий поиск** (для опечаток)
2.**Стемминг слов** (находит разные формы слова)
3.**Поиск синонимов** (пока отключен)
### 4.7 Сохранение настроек
Нажмите кнопку **"Сохранить"** внизу формы.
---
## Шаг 5: Тестирование AI Ассистента
### 5.1 Использование встроенного тестера
1. На странице настроек AI ассистента прокрутите вниз до блока **"🔍 Мониторинг системы"**
2. В разделе **"🧠 Тест RAG-функциональности"**:
- Убедитесь, что выбрана таблица `FAQ - Часто задаваемые вопросы`
- Введите тестовый вопрос: `Как оплатить заказ?`
- Нажмите **"Тестировать RAG"**
3. Наблюдайте за процессом:
- 🔍 Ищем ответ в базе знаний... (векторный поиск)
- 🤖 Генерируем ответ с помощью ИИ... (LLM генерация)
- ✅ Готово!
4. Проверьте результат:
- Должен отобразиться ответ из вашей таблицы
- Score (оценка близости): чем ближе к 0, тем лучше
> 💡 **Хороший Score**: от -300 до 0 (ответ найден)
> ⚠️ **Плохой Score**: больше 300 (ответ не найден, AI придумает свой)
### 5.2 Тестирование через Web Chat
1. Перейдите на главную страницу приложения
2. Найдите виджет **"💬 Чат с AI"** (обычно справа внизу)
3. Нажмите на виджет, чтобы открыть чат
4. Введите вопрос: `Сколько стоит доставка?`
5. Проверьте ответ AI
**Ожидаемый результат:**
```
🤖 AI Ассистент:
Бесплатная доставка при заказе от 5,000₽.
Для заказов менее 5,000₽ стоимость доставки 300₽.
Чем еще могу помочь? 😊
```
### 5.3 Тестирование разных сценариев
Попробуйте задать различные вопросы:
**✅ Вопрос из базы знаний:**
```
Пользователь: "Как вернуть товар?"
AI: [Ответ из таблицы FAQ]
```
**⚠️ Вопрос НЕ из базы знаний:**
```
Пользователь: "Какая погода сегодня?"
AI: "Извините, я специализируюсь на вопросах о нашей компании и продуктах.
По вопросам погоды обратитесь к специализированным сервисам.
Чем еще могу помочь?"
```
**🎯 Вопрос с опечаткой:**
```
Пользователь: "Как аплатить заказ?" (опечатка)
AI: [Найдет правильный ответ благодаря нечеткому поиску]
```
---
## Шаг 6: Расширенные возможности (опционально)
### 6.1 Создание таблицы для работы с поставщиками
#### Структура таблицы "База поставщиков"
1. Создайте новую таблицу: `База поставщиков`
2. Добавьте столбцы:
| Столбец | Тип | Описание |
|---------|-----|----------|
| Название компании | Текст | Наименование поставщика |
| Категория товаров | Множественный выбор | Электроника, Мебель, Одежда, и т.д. |
| Контактное лицо | Текст | ФИО менеджера |
| Email | Текст | Электронная почта |
| Телефон | Текст | Контактный телефон |
| Цены | Текст | Прайс-лист (краткое описание) |
| Условия оплаты | Текст | Отсрочка, предоплата, и т.д. |
| Минимальный заказ | Число | Минимальная сумма заказа |
| Срок доставки | Текст | Сроки поставки |
| Рейтинг | Число | Оценка от 1 до 10 |
| Примечания | Текст | Дополнительная информация |
3. Активируйте как источник для AI
4. Заполните данными о ваших поставщиках
#### Промт для AI закупщика
Добавьте в системный промт:
```
ДОПОЛНИТЕЛЬНО - Работа с поставщиками:
Когда пользователь спрашивает о поставщиках:
1. Ищите в базе "База поставщиков"
2. Фильтруйте по категории товаров
3. Сортируйте по рейтингу и условиям
4. Предоставьте ТОП-3 рекомендации
Формат ответа:
🏆 TOP-3 поставщика по запросу "[категория]":
1. [Название] ⭐ [Рейтинг]/10
📧 [Email] | 📞 [Телефон]
💰 Условия: [Условия оплаты]
🚚 Доставка: [Срок доставки]
📦 Минимум: [Минимальный заказ]₽
2. ...
3. ...
Рекомендую связаться с [Название первого поставщика] — лучшие условия.
```
### 6.2 Создание таблицы для обучения персонала
#### Структура таблицы "База знаний для сотрудников"
1. Создайте новую таблицу: `База знаний для сотрудников`
2. Добавьте столбцы:
| Столбец | Тип | Описание |
|---------|-----|----------|
| Вопрос | Текст | Вопрос сотрудника (назначение: Вопрос для AI) |
| Ответ | Текст | Подробный ответ (назначение: Ответ AI) |
| Категория | Множественный выбор | Продажи, HR, Финансы, IT, Маркетинг |
| Отдел | Множественный выбор | Для какого отдела актуально |
| Сложность | Число | От 1 (простой) до 5 (сложный) |
| Инструкции | Текст | Пошаговые инструкции (если есть) |
| Ссылки | Текст | Ссылки на документы/видео |
| Дата обновления | Дата | Когда информация обновлялась |
3. Примеры вопросов:
**Категория "Продажи":**
- "Как оформить возврат клиенту?"
- "Какие скидки можно давать постоянным клиентам?"
- "Как работать с корпоративными клиентами?"
**Категория "HR":**
- "Как оформить отпуск?"
- "Куда обращаться по больничному?"
- "Как происходит адаптация новых сотрудников?"
**Категория "IT":**
- "Как получить доступ к корпоративной почте?"
- "Что делать при проблемах с VPN?"
- "Как создать заявку в техподдержку?"
### 6.3 Создание связей между таблицами
#### Пример: Связь "Клиенты" → "Заказы"
1. Создайте таблицу **"Клиенты"**:
- Название, Email, Телефон, Статус (VIP/Обычный)
2. Создайте таблицу **"Заказы"**:
- Номер заказа, Дата, Сумма
3. В таблице "Заказы" добавьте столбец:
- **Название**: `Клиент`
- **Тип**: `Связь (Relation)`
- **Связанная таблица**: выберите `Клиенты`
- **Показывать поле**: выберите `Название`
4. Добавьте еще один столбец в "Заказы":
- **Название**: `Email клиента`
- **Тип**: `Lookup (Подстановка)`
- **Связь через**: выберите столбец `Клиент`
- **Подставлять поле**: выберите `Email`
**Результат**: При выборе клиента автоматически подставится его Email!
#### Использование AI с связанными таблицами
AI автоматически понимает связи и может отвечать на вопросы:
```
Пользователь: "Покажи все заказы клиента Иванов"
AI: [Ищет в таблице Заказы, фильтрует по клиенту Иванов]
```
---
## Шаг 7: Интеграция с Telegram и Email (опционально)
### 7.1 Настройка Telegram бота
1. Перейдите в **Настройки****Интеграции****Telegram**
2. Создайте бота через [@BotFather](https://t.me/botfather) в Telegram:
- Отправьте `/newbot`
- Выберите имя и username бота
- Скопируйте **Bot Token**
3. В настройках DLE введите:
- **Bot Token**: вставьте токен от BotFather
- **Bot Username**: username вашего бота (например, `@mycompany_bot`)
4. Нажмите **"Сохранить"**
5. В настройках AI ассистента выберите этот Telegram бот в поле **"Telegram-бот"**
**Результат**: AI будет отвечать на сообщения в Telegram!
### 7.2 Настройка Email интеграции
1. Перейдите в **Настройки****Интеграции****Email**
2. Заполните IMAP настройки (для получения писем):
- **IMAP Host**: `imap.gmail.com` (для Gmail)
- **IMAP Port**: `993`
- **IMAP User**: ваш email
- **IMAP Password**: пароль приложения (не основной пароль!)
3. Заполните SMTP настройки (для отправки писем):
- **SMTP Host**: `smtp.gmail.com`
- **SMTP Port**: `587`
- **SMTP User**: ваш email
- **SMTP Password**: пароль приложения
- **From Email**: email для отправки
4. Нажмите **"Тест IMAP"** и **"Тест SMTP"** для проверки
5. Нажмите **"Сохранить"**
6. В настройках AI ассистента выберите этот Email в поле **"Email для связи"**
> ⚠️ **Важно для Gmail**: Создайте "Пароль приложения" в настройках безопасности Google
**Результат**: AI будет отвечать на входящие email автоматически!
---
## Шаг 8: Мониторинг и оптимизация
### 8.1 Проверка статуса сервисов
1. Перейдите в **Настройки****Интеграции****ИИ-ассистент**
2. Прокрутите вниз до **"🔍 Мониторинг системы"**
3. Нажмите **"🔄 Обновить статус"**
4. Проверьте статусы:
- 🟢 **Backend**: должен быть "Работает"
- 🟢 **Postgres**: должен быть "Работает"
- 🟢 **Ollama**: должен показывать количество моделей
- 🟢 **Vector Search**: должен быть "Работает"
> ⚠️ Если что-то красное (🔴) — см. раздел "Решение проблем" ниже
### 8.2 Анализ качества ответов
Регулярно проверяйте качество ответов AI:
1. **Score в тестере RAG**:
- **-300 до 0** ✅ — отличное совпадение
- **0 до 300** ⚠️ — среднее совпадение
- **>300** ❌ — совпадение не найдено
2. **Если Score плохой**:
- Добавьте больше похожих вопросов в таблицу
- Используйте разные формулировки одного вопроса
- Увеличьте порог релевантности (например, до 0.2)
### 8.3 Оптимизация настроек RAG
Экспериментируйте с настройками для улучшения результатов:
**Для более точных ответов:**
```
Метод поиска: Семантический
Порог релевантности: 0.05 (ниже = строже)
Веса: Семантический 100% / Ключевые слова 0%
```
**Для более быстрых ответов:**
```
Метод поиска: Поиск по ключевым словам
Максимальное количество результатов: 3
```
**Для баланса (рекомендуется):**
```
Метод поиска: Гибридный
Веса: Семантический 70% / Ключевые слова 30%
Порог релевантности: 0.1
```
---
## ✅ AI Ассистент готов к работе!
### Что у вас теперь есть
**Локальный AI ассистент** без зависимости от облака
**База знаний FAQ** для ответов клиентам
**Векторный поиск** для точных ответов
**Настроенные правила** поведения AI
**Система мониторинга** для контроля качества
### Экономический эффект
При правильной настройке AI ассистента вы получите:
**Автоматизацию рутинных задач** - высвобождение времени для стратегии
**Повышение качества обслуживания** - AI работает 24/7 без усталости
**Снижение операционных расходов** - меньше персонала на рутинных задачах
**Ускорение принятия решений** - мгновенный доступ к информации
> 💡 **Подробная информация**: См. [AI Ассистент - полное описание](./ai-assistant.md#экономический-эффект) - там детально описаны все возможности, кейсы применения и расчеты экономии.
---
## 📚 Следующие шаги
### Расширьте возможности AI
1. **Добавьте больше таблиц**:
- База знаний для партнеров
- Инструкции для персонала
- Каталог продуктов
- База контактов
2. **Создайте правила для разных сценариев**:
- Строгий режим (только RAG) — для финансов
- Креативный режим (больше генерации) — для маркетинга
- Гибридный режим (баланс) — для поддержки
3. **Интегрируйте с другими системами**:
- CRM (синхронизация клиентов)
- Складская система (остатки товаров)
- Бухгалтерия (счета и оплаты)
### Обучите команду
1. Покажите сотрудникам, как работает AI
2. Объясните, как добавлять новые вопросы в базу
3. Установите процесс регулярного обновления базы знаний
4. Назначьте ответственного за качество ответов AI
---
## 🆘 Решение проблем
### Проблема: Ollama не запускается
**Симптомы**: Статус "Ollama API not responding"
**Решение**:
```bash
# Проверить контейнер
docker ps | grep ollama
# Перезапустить
docker-compose restart ollama
# Проверить логи
docker-compose logs ollama
```
### Проблема: AI отвечает неточно
**Симптомы**: Ответы не соответствуют базе знаний
**Решение**:
1. Проверьте Score в тестере (должен быть < 300)
2. Добавьте больше вариантов вопросов в таблицу
3. Уменьшите порог релевантности (например, до 0.05)
4. Проверьте, что столбцы имеют правильные назначения ("Вопрос для AI", "Ответ AI")
### Проблема: Vector Search не работает
**Симптомы**: Статус Vector Search показывает ошибку
**Решение**:
1. Проверьте, установлена ли Embedding модель
2. Пересоберите индекс: на странице таблицы нажмите **"🔄 Пересобрать индекс"**
3. Проверьте, что таблица активирована как источник для AI
### Проблема: AI отвечает на неправильном языке
**Симптомы**: Ответы на английском вместо русского
**Решение**:
1. Измените системный промт, добавив в начало: `ВСЕГДА отвечай на русском языке.`
2. Используйте модель `qwen2.5:7b` вместо `llama2:7b`
3. В правилах AI установите `"language": "ru"`
### Проблема: Медленные ответы
**Симптомы**: AI отвечает дольше 5-10 секунд
**Решение**:
1. Используйте меньшую модель (`mistral:7b` вместо `qwen2.5:14b`)
2. Уменьшите `maxResults` в настройках RAG (например, до 3)
3. Отключите "Поиск синонимов" в дополнительных настройках
4. Используйте SSD для хранения моделей
---
## 📖 Дополнительная документация
### Изучите возможности AI
- 🤖 **[AI Ассистент - полное описание](./ai-assistant.md)** - все возможности и кейсы применения
- 📊 **[Система электронных таблиц](./tables-system.md)** - техническое описание таблиц (временный)
- **[Конфигурация AI](./ai-assistant-configuration.md)** - технические детали настройки (временный)
### Общая документация
- 🛡 **[Безопасность](./security.md)** - как AI защищает ваши данные
- 💼 **[Блокчейн для бизнеса](./blockchain-for-business.md)** - интеграция AI с блокчейном
- 📋 **[FAQ](./FAQ.md)** - часто задаваемые вопросы
### Поддержка
- 💬 **Чат поддержки**: https://hb3-accelerator.com/
- 📧 **Email**: info@hb3-accelerator.com
- 📚 **База знаний**: https://docs.hb3-accelerator.com
---
## 🔧 Техническая документация (для разработчиков)
### Архитектура системы AI
```
┌───────────────────────────────────────────────────────────┐
│ Настройка AI Ассистента в DLE │
├───────────────────────────────────────────────────────────┤
│ │
│ 🤖 AI Провайдеры: │
│ ├── OpenAI (GPT-4, GPT-3.5) │
│ ├── Anthropic (Claude) │
│ ├── Google (Gemini) │
│ └── Ollama (локальные модели) │
│ │
│ ⚙️ Настройки AI: │
│ ├── System Prompt │
│ ├── Выбор LLM модели │
│ ├── Выбор Embedding модели │
│ ├── Выбор RAG-таблиц │
│ ├── Правила (Rules) │
│ └── Настройки RAG поиска │
│ │
│ 📋 Правила (Rules): │
│ ├── JSON конфигурация поведения │
│ ├── Создание/редактирование/удаление │
│ └── Привязка к AI ассистенту │
│ │
│ 🔗 Интеграции: │
│ ├── Email (IMAP + SMTP) │
│ └── Telegram Bot │
│ │
│ 🔍 RAG: │
│ ├── Выбор таблиц для поиска │
│ ├── Настройки поиска (гибридный/семантический) │
│ ├── Порог релевантности │
│ └── Извлечение ключевых слов │
│ │
│ 📊 Мониторинг: │
│ ├── Статус сервисов (Backend, Ollama, Postgres) │
│ ├── Тест RAG-функциональности │
│ └── Отслеживание прогресса │
│ │
└───────────────────────────────────────────────────────────┘
```
### База данных
#### Таблица: `ai_providers_settings`
```sql
CREATE TABLE IF NOT EXISTS ai_providers_settings (
id SERIAL PRIMARY KEY,
provider_encrypted TEXT, -- Провайдер: openai, anthropic, google, ollama
api_key_encrypted TEXT, -- API ключ (зашифрован)
base_url_encrypted TEXT, -- Base URL для API
selected_model_encrypted TEXT, -- Выбранная LLM модель
embedding_model_encrypted TEXT, -- Выбранная Embedding модель
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
```
#### Таблица: `ai_assistant_settings`
```sql
CREATE TABLE IF NOT EXISTS ai_assistant_settings (
id SERIAL PRIMARY KEY,
system_prompt_encrypted TEXT, -- Системный промт
selected_rag_tables INTEGER[], -- Массив ID RAG-таблиц
languages TEXT[], -- Массив поддерживаемых языков
model_encrypted TEXT, -- Выбранная LLM модель
embedding_model_encrypted TEXT, -- Выбранная Embedding модель
rules JSONB, -- Правила (DEPRECATED)
rules_id INTEGER REFERENCES ai_assistant_rules(id), -- Ссылка на правило
telegram_settings_id INTEGER, -- Ссылка на Telegram бота
email_settings_id INTEGER, -- Ссылка на Email настройки
rag_settings JSONB, -- Настройки RAG поиска
updated_at TIMESTAMP DEFAULT NOW(),
updated_by INTEGER
);
```
#### Таблица: `ai_assistant_rules`
```sql
CREATE TABLE IF NOT EXISTS ai_assistant_rules (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL, -- Название набора правил
description TEXT, -- Описание правила
rules JSONB NOT NULL, -- JSON конфигурация
rules_encrypted TEXT, -- Зашифрованная версия правил
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
```
### Backend API
#### Настройки AI провайдеров
- **GET** `/settings/ai-settings/:provider` Получить настройки провайдера
- **PUT** `/settings/ai-settings/:provider` Сохранить настройки провайдера
- **DELETE** `/settings/ai-settings/:provider` Удалить настройки провайдера
- **GET** `/settings/ai-settings/:provider/models` Получить список моделей
- **POST** `/settings/ai-settings/:provider/verify` Проверить API ключ
#### Настройки AI ассистента
- **GET** `/settings/ai-assistant` Получить настройки ассистента
- **PUT** `/settings/ai-assistant` Сохранить настройки ассистента
#### Правила AI
- **GET** `/settings/ai-assistant-rules` Получить все правила
- **GET** `/settings/ai-assistant-rules/:id` Получить правило по ID
- **POST** `/settings/ai-assistant-rules` Создать правило
- **PUT** `/settings/ai-assistant-rules/:id` Обновить правило
- **DELETE** `/settings/ai-assistant-rules/:id` Удалить правило
#### Ollama (локальные модели)
- **GET** `/ollama/status` Проверить статус Ollama
- **GET** `/ollama/models` Получить список моделей
- **POST** `/ollama/install` Установить модель
- **DELETE** `/ollama/models/:modelName` Удалить модель
### Frontend страницы
- **`/settings/ai`** Главная страница интеграций
- **`/settings/ai/:provider`** Настройки AI провайдера
- **`/settings/ai/assistant`** Настройки AI ассистента
### Процесс обработки сообщения
```
1. Пользователь → Сообщение
2. UnifiedMessageProcessor
3. Проверка языка (только русский)
4. Дедупликация (хеш сообщения)
5. Загрузка настроек (aiAssistantSettingsService)
6. Загрузка правил (aiAssistantRulesService)
7. RAG поиск (ragService)
├── Семантический поиск (vector search)
├── Поиск по ключевым словам
└── Гибридный поиск
8. Генерация ответа (generateLLMResponse)
├── System Prompt
├── История разговора
├── Контекст из RAG
└── Правила
9. Ответ → Пользователь
```
### Безопасность
- **Шифрование**: Все чувствительные поля зашифрованы с помощью AES-256
- **Права доступа**: Только администраторы могут изменять настройки
- **Валидация**: Проверка всех входных данных и API ключей
---
**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.**
**Версия документа**: 1.0.0
**Дата создания**: October 25, 2025