# Интеграция 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-ответы для администратора, которые можно редактировать и отправлять вручную.