Files
DLE/docs/RAG_ASSISTANT_INTEGRATION.md

113 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.

<!--
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-ассистента для бизнеса с поддержкой продуктов, сегментов клиентов и LLM
## Цель
Реализовать интеллектуального ассистента для бизнеса, который:
- Использует RAG-таблицы для хранения вопросов, ответов, уточняющих вопросов, ответов на возражения и дополнительного контекста.
- Поддерживает фильтрацию по продуктам, сегментам клиентов (тегам), приоритету, дате и другим бизнес-полям.
- Интегрируется с LLM (Ollama/OpenAI) для генерации финального ответа на основе найденного контекста.
- Позволяет настраивать системный промт с плейсхолдерами для гибкой персонализации ответов.
- Позволяет генерировать draft-ответ для администратора, который может быть отредактирован и отправлен вручную.
---
## Основные требования
1. **Гибкая структура RAG-таблицы**
- Пользователь может создавать таблицы с произвольными столбцами и назначать им специальное значение (purpose) через выпадающий список:
- Вопрос (`question`)
- Ответ (`answer`)
- Ответ с уточняющим вопросом (`clarifyingAnswer`)
- Ответ на возражение (`objectionAnswer`)
- Теги пользователя/сегмента (`userTags`)
- Продукт/услуга (`product`)
- Дополнительный контекст (`context`)
- Приоритет (`priority`)
- Дата (`date`)
- Для каждого столбца указывается назначение при создании/редактировании.
- Можно добавлять дополнительные столбцы для бизнес-атрибутов.
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 пользователя и т.д.
- Вся информация сохраняется для последующего анализа и улучшения качества ответов.
7. **Автоответ и draft-ответ**
- Если найден релевантный вопрос (score > 0.95) — ассистент автоматически отвечает пользователю.
- Если нет — ассистент генерирует draft-ответ для администратора (через роут `/ai-draft`), который подставляется в поле ввода и ожидает отправки админом. Draft генерируется всегда, даже если нет точного совпадения в RAG.
- Draft-ответ строится с учётом промта, истории и всех доступных данных из RAG.
---
## Пример бизнес-сценария
- Клиент B2B интересуется продуктом "ProductX".
- Вопрос: "Как интегрировать ваш продукт с нашей ERP?"
- Система фильтрует строки по `product = "ProductX"` и тегу `B2B`.
- Векторный поиск проводится только по релевантным строкам.
- В системном промте используются плейсхолдеры для подстановки найденных данных.
- LLM генерирует финальный ответ с учётом контекста, уточняющих вопросов и ответов на возражения.
- Если точного совпадения нет — draft-ответ для администратора формируется на основе промта и истории.
---
## Пример системного промта
```
Ты — ассистент компании. Пользователь интересуется продуктом: {product}, сегмент: {userTags}.
Используй только релевантные ответы и контекст для этого продукта и типа клиента.
Контекст: {context}
Ответ: {answer}
Уточняющий вопрос: {clarifyingAnswer}
Ответ на возражение: {objectionAnswer}
```
---
## Результат
- Персонализированные, точные и масштабируемые ответы для разных продуктов и сегментов клиентов.
- Гибкая настройка ассистента через UI и системный промт.
- Возможность расширения под любые бизнес-сценарии.
- Draft-ответы для администратора, которые можно редактировать и отправлять вручную.