7.7 KiB
7.7 KiB
Интеграция RAG-ассистента для бизнеса с поддержкой продуктов, сегментов клиентов и LLM
Цель
Реализовать интеллектуального ассистента для бизнеса, который:
- Использует RAG-таблицы для хранения вопросов, ответов, уточняющих вопросов, ответов на возражения и дополнительного контекста.
- Поддерживает фильтрацию по продуктам, сегментам клиентов (тегам), приоритету, дате и другим бизнес-полям.
- Интегрируется с LLM (Ollama/OpenAI) для генерации финального ответа на основе найденного контекста.
- Позволяет настраивать системный промт с плейсхолдерами для гибкой персонализации ответов.
- Позволяет генерировать draft-ответ для администратора, который может быть отредактирован и отправлен вручную.
Основные требования
-
Гибкая структура RAG-таблицы
- Пользователь может создавать таблицы с произвольными столбцами и назначать им специальное значение (purpose) через выпадающий список:
- Вопрос (
question) - Ответ (
answer) - Ответ с уточняющим вопросом (
clarifyingAnswer) - Ответ на возражение (
objectionAnswer) - Теги пользователя/сегмента (
userTags) - Продукт/услуга (
product) - Дополнительный контекст (
context) - Приоритет (
priority) - Дата (
date)
- Вопрос (
- Для каждого столбца указывается назначение при создании/редактировании.
- Можно добавлять дополнительные столбцы для бизнес-атрибутов.
- Пользователь может создавать таблицы с произвольными столбцами и назначать им специальное значение (purpose) через выпадающий список:
-
Фильтрация и поиск
- При поступлении вопроса пользователя:
- Фильтровать строки по продукту, тегам пользователя, приоритету, дате и другим полям.
- Выполнять векторный поиск (embedding) только по релевантным строкам (по столбцу "Вопрос").
- При поступлении вопроса пользователя:
-
Интеграция с LLM
- После поиска по RAG-таблице формировать системный промт с подстановкой найденных данных (через плейсхолдеры).
- Передавать промт и вопрос пользователя в LLM (Ollama/OpenAI).
- Возвращать финальный ответ пользователю.
-
Плейсхолдеры для промта
- Поддерживаются плейсхолдеры:
{context}— дополнительная информация{answer}— основной ответ{clarifyingAnswer}— уточняющий вопрос{objectionAnswer}— ответ на возражение{question}— вопрос пользователя{userTags}— теги пользователя{product}— продукт/услуга{priority}— приоритет{date}— дата{rules}— описание применённых правил{history}— история диалога{model}— используемая LLM{language}— язык ответа
- Поддерживаются плейсхолдеры:
-
Кэширование embedding
- Для ускорения поиска embedding для вопросов кэшируются в БД.
- При изменении вопроса embedding обновляется.
-
Логирование и аналитика
- Логируются все этапы работы ассистента: запрос пользователя, найденный контекст, результат LLM, время ответа, id пользователя и т.д.
- Вся информация сохраняется для последующего анализа и улучшения качества ответов.
-
Автоответ и 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-ответы для администратора, которые можно редактировать и отправлять вручную.