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

This commit is contained in:
2025-06-26 20:34:58 +03:00
parent 25f1286c93
commit 1f4024d5be
36 changed files with 1709 additions and 967 deletions

View File

@@ -7,13 +7,14 @@
- Поддерживает фильтрацию по продуктам, сегментам клиентов (тегам), приоритету, дате и другим бизнес-полям.
- Интегрируется с LLM (Ollama/OpenAI) для генерации финального ответа на основе найденного контекста.
- Позволяет настраивать системный промт с плейсхолдерами для гибкой персонализации ответов.
- Позволяет генерировать draft-ответ для администратора, который может быть отредактирован и отправлен вручную.
---
## Основные требования
1. **Структура RAG-таблицы**
- Каждая строка содержит:
1. **Гибкая структура RAG-таблицы**
- Пользователь может создавать таблицы с произвольными столбцами и назначать им специальное значение (purpose) через выпадающий список:
- Вопрос (`question`)
- Ответ (`answer`)
- Ответ с уточняющим вопросом (`clarifyingAnswer`)
@@ -23,12 +24,13 @@
- Дополнительный контекст (`context`)
- Приоритет (`priority`)
- Дата (`date`)
- Для каждого столбца указывается назначение (purpose) через выпадающий список при создании/редактировании.
- Для каждого столбца указывается назначение при создании/редактировании.
- Можно добавлять дополнительные столбцы для бизнес-атрибутов.
2. **Фильтрация и поиск**
- При поступлении вопроса пользователя:
- Фильтровать строки по продукту, тегам пользователя, приоритету, дате и другим полям.
- Выполнять векторный поиск (embedding) только по релевантным строкам.
- Выполнять векторный поиск (embedding) только по релевантным строкам (по столбцу "Вопрос").
3. **Интеграция с LLM**
- После поиска по RAG-таблице формировать системный промт с подстановкой найденных данных (через плейсхолдеры).
@@ -59,6 +61,11 @@
- Логируются все этапы работы ассистента: запрос пользователя, найденный контекст, результат LLM, время ответа, id пользователя и т.д.
- Вся информация сохраняется для последующего анализа и улучшения качества ответов.
7. **Автоответ и draft-ответ**
- Если найден релевантный вопрос (score > 0.95) — ассистент автоматически отвечает пользователю.
- Если нет — ассистент генерирует draft-ответ для администратора (через роут `/ai-draft`), который подставляется в поле ввода и ожидает отправки админом. Draft генерируется всегда, даже если нет точного совпадения в RAG.
- Draft-ответ строится с учётом промта, истории и всех доступных данных из RAG.
---
## Пример бизнес-сценария
@@ -69,6 +76,7 @@
- Векторный поиск проводится только по релевантным строкам.
- В системном промте используются плейсхолдеры для подстановки найденных данных.
- LLM генерирует финальный ответ с учётом контекста, уточняющих вопросов и ответов на возражения.
- Если точного совпадения нет — draft-ответ для администратора формируется на основе промта и истории.
---
@@ -89,4 +97,5 @@
- Персонализированные, точные и масштабируемые ответы для разных продуктов и сегментов клиентов.
- Гибкая настройка ассистента через UI и системный промт.
- Возможность расширения под любые бизнес-сценарии.
- Возможность расширения под любые бизнес-сценарии.
- Draft-ответы для администратора, которые можно редактировать и отправлять вручную.

View File

@@ -0,0 +1,51 @@
# План настройки и тестирования поиска по таблице RAG
## 1. Подготовка таблицы RAG
- Убедиться, что таблица RAG создана и содержит пары "вопрос-ответ".
- Добавить несколько тестовых записей через UI или напрямую в базу данных.
## 2. Настройка провайдера эмбеддингов
- В настройках ассистента выбрать нужного провайдера (OpenAI, Ollama и др.).
- Ввести API-ключ и Base URL (например, для OpenAI: https://api.openai.com/v1).
- Сохранить настройки.
## 3. Проверка настроек ассистента
- Убедиться, что выбран актуальный ID таблицы RAG.
- Проверить выбранного провайдера эмбеддингов.
- Установить порог релевантности (например, 0.95).
## 4. Проверка backend-логики
- Проверить, что в backend (например, в ragService.js) реализован поиск по RAG с использованием выбранного провайдера эмбеддингов.
- Убедиться, что используется актуальный ID таблицы и динамический выбор провайдера.
- Проверить возможность изменения порога релевантности.
## 5. Тестирование через UI
- Отправить ассистенту вопрос, который есть в RAG-таблице — убедиться, что ответ возвращается из базы.
- Отправить вопрос, которого нет в таблице — убедиться, что ассистент либо не отвечает, либо использует LLM (по настройкам).
## 6. Проверка логов backend
- Проверить логи на наличие сообщений о поиске по RAG, найденных совпадениях и выбранном провайдере эмбеддингов.
- В случае ошибок — проанализировать и устранить их.
## 7. Тестирование через API (опционально)
- Использовать Postman/curl для отправки запросов напрямую к backend.
- Пример запроса:
```http
POST /api/chat/message
{
"userId": 137,
"message": "Как зовут?"
}
```
## 8. Автоматизация тестирования (по желанию)
- Написать автотесты (например, на Mocha/Jest), которые будут отправлять вопросы и сверять ответы с ожидаемыми из RAG.
## 9. Рекомендации
- Для тестов использовать уникальные, простые вопросы и ответы.
- После каждого изменения настроек проводить тестовые запросы.
- Добавить в UI индикатор источника ответа (из базы или сгенерирован).
---
**Если потребуется пример кода или помощь с конкретной реализацией — обращайтесь!**