Техническая документация InsighStream

Введение

Данная документация предназначена для специалистов, занимающихся развертыванием и промышленной эксплуатацией, а также пользователей InsightStream (https://insightstream.ru) — системы поиска и суммаризации корпоративных данных. InsightStream помогает упростить доступ к информации, автоматизировать поиск и создавать суммарные ответы, что повышает эффективность работы сотрудников.

InsightStream позволяет обрабатывать корпоративные данные, такие как регламенты, инструкции и другие неструктурированные документы, помогая сократить время поиска и повысить продуктивность сотрудников.

Общее описание системы

InsightStream представляет собой интеллектуальную поисковую систему для корпоративной сети, использующую технологии Retrieval-Augmented Generation (RAG) и большую языковую модель (LLM) для генерации ответов. Система позволяет создавать ассистентов для поиска и суммаризации информации из загруженных документов.

Основные компоненты системы

  • База данных: Qdrant — используется для хранения и поиска данных (устанавливается отдельно)
  • Шина сообщений: RabbitMQ — управляет очередями задач и обменом сообщениями между сервисами
  • Индексатор: работает с Qdrant для хранения и поиска данных, обеспечивая поиск релевантных документов по схожести
  • Суммаризатор: использует GPT для создания кратких и точных ответов на запросы
  • Веб-интерфейс: предоставляет доступ к системе через браузер, построен на React.js и взаимодействует с backend через REST API
Важно: InsightStream не имеет встроенной аутентификации. Настройка RabbitMQ, Qdrant и системы мониторинга осуществляется отдельно и описана в их документации.

Процесс получения дистрибутива

  1. Отправьте запрос на req@insightstream.ru с указанием информации о вашей организации и целях использования системы
  2. После обработки запроса вы получите доступы и компоуз-файл для установки

Технические требования

Минимальные требования

Компонент Требование
ОС Linux (рекомендуется Ubuntu 20.04+)
CPU 4 ядра
RAM 8 GB
Диск 50 GB
Сеть 100 Мбит/с

Рекомендуемые требования

Компонент Требование
CPU 8 ядер
RAM 16 GB и более
Диск 100 GB SSD
Сеть 1 Гбит/с

Установка и запуск системы

InsightStream устанавливается с помощью Docker Compose.

Основные конфигурационные переменные

Для корректной работы системы необходимо указать значение следующих переменных:

  • CHAT_API_KEY: ключ доступа к LLM API
  • CHAT_MODEL: модель LLM
  • CHAT_API_BASE: URL для доступа к LLM API
  • EMBED_MODEL, EMBED_TIKTOKEN_MODEL, EMBED_API_KEY, EMBED_API_BASE: настройки модели и API эмбеддингов
  • RERANK_MODEL, RERANK_API_KEY, RERANK_API_BASE: настройки модели и API реранка
  • OPENAI_API_KEY: ключ (токен) для доступа к Compressa
  • OPENAI_BASE: адрес для доступа к API Compressa
  • QDRANT_URL: базовый URL базы данных Qdrant
  • RABBITMQ_URL: строка подключения к RabbitMQ (с логином и паролем)

Дополнительные настраиваемые переменные:

  • RABBIT_USER, RABBIT_PASS: логин и пароль пользователя RabbitMQ (по умолчанию: guest/guest)
  • AMQP_URL, AMQP_USER, AMQP_PASS: дублирующие переменные для RabbitMQ в случае проблем с доступом

Шаги установки

  1. Проверка окружения:
    • Убедитесь, что Docker и Docker Compose установлены корректно
    • Проверьте доступ к Docker Registry или наличие импортированных образов
  2. Настройка компонентов:
    • Изучите документацию Qdrant и RabbitMQ
    • Укажите местоположение компонентов в переменных окружения
  3. Подготовка компоуз-файла:
    • Настройте конфигурацию всех компонентов InsightStream
    • Используйте файл .env для настройки переменных (на основе .env.example)
  4. Запуск установки: Выполните команду docker-compose up -d
  5. Проверка компонентов: Используйте команды docker ps и docker logs <container_name>

Доступ к компонентам

  • Индексатор: http://localhost:8501
  • Поисковый интерфейс: http://localhost:3000

Обеспечение безопасности

InsightStream не имеет встроенной аутентификации. Для её настройки рекомендуется использовать Nginx. Пример базовой конфигурации с фиксированным токеном:

server {
    listen 443 ssl;
    server_name yourdomain.com;
    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/privkey.pem;

    location /api/ {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        if ($http_authorization != "Bearer your_api_key_here") {
            return 401;
        }
    }
}

Рекомендации по безопасности

  • Интеграция с корпоративной системой SSO (Single Sign-On)
  • Использование OAuth2 для повышения уровня безопасности

Журналирование и мониторинг

Журналирование

Логи InsightStream записываются в stdout. Для интеграции с ELK используйте следующую конфигурацию:

Logstash конфигурация:

input {
  docker {
    containers => ["insightstream"]
    type => "docker-logs"
  }
}
output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "insightstream-logs"
  }
}

После настройки Logstash, настройте дашборды в Kibana для анализа логов.

Пример формата лога:

[2024-10-29 14:32:45] INFO: Запрос пользователя: "Какие документы необходимы для регистрации?"
[2024-10-29 14:32:50] ERROR: Ошибка индексации документа "doc123.pdf": Недопустимый формат.

Резервное копирование и восстановление данных

Создание резервной копии

curl -X POST "http://localhost:6333/collections/{collection_name}/snapshots"

Восстановление данных

curl -X PUT "http://localhost:6333/collections/{collection_name}/snapshots/recover" -H 'Content-Type: application/json' -d'
{
  "location": "http://qdrant-node-1:6333/collections/{collection_name}/snapshots/snapshot-2022-10-10.snapshot"
}'

Обновление системы

  1. Получите новые версии Docker-образов: docker pull
  2. Остановите текущие контейнеры: docker-compose down
  3. Обновите компоуз-файл
  4. Запустите систему: docker-compose up -d

Часто задаваемые вопросы по технической эксплуатации системы (FAQ)

  • Как добавить авторизацию? Используйте Nginx или интеграцию с OAuth2/SSO
  • Какие типы документов поддерживаются? PDF
  • Можно ли развернуть InsightStream в облаке? Да, на AWS, GCP, Azure или других платформах
  • Что делать, если индексация завершилась с ошибкой? Проверьте логи