Files
DLE/docs/RAG_ASSISTANT_INTEGRATION.md

7.7 KiB
Raw Blame History

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