Перейти к основному содержимому

Quickstart: InsightStream

Это руководство показывает, как развернуть чат-бот InsightStream RAG вместе с Compressa для инференса моделей.

Требования

Для развертывания InsightStream с Compressa необходим сервер с 2 GPU.
Требования к GPU и настройке сервера можно найти на этой странице.

Настройка сервера

Сначала клонируйте репозиторий с настройками:

git clone -b insight-stream git@github.com:compressa-ai/compressa-deploy.git
cd compressa-deploy

Репозиторий содержит два основных файла, которые мы будем настраивать:

  • .env
  • docker-compose.yml

Настройте id GPU, которые будут использоваться в файле .env

DOCKER_GPU_IDS_CHAT=<ID1>
DOCKER_GPU_IDS_EMB=<ID2>

По умолчанию сервисы используют следующие порты:

  • qdrant - 6333
  • compressa - 5500
  • insight-stream-bot - 80

Если вам нужно изменить эти настройки, обновите маппинги портов в docker-compose.yml для контейнеров qdrant, openai-api, nginx.

Переменная SERVER_NAME должна содержать URL, по которому будет использоваться бот InsightStream. Например, localhost:80, если вы запускаете решение локально или перенаправляете порт 80 сервера на порт 80 localhost.

Настройка хранилища

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

  • qdrant - ./data/qdrant
  • compressa - ./data/compressa
    Для этой директории должны быть установлены права 777, это можно сделать командой:
    chmod 777 -R ./data/compressa
  • хранилище документов - ./data/documents
    Для этой директории должны быть установлены права 755 для пользователя systemd-network и группы systemd-journal, это можно сделать командой:
    sudo chown systemd-network:systemd-journal ./data/documents && sudo chmod 755 ./data/documents

Вы можете изменить директории в docker-compose.yml.

Для запуска контейнеров выполните:

docker compose up --build

Развертывание Inference и Embedding моделей

Когда сервисы запущены, нам нужно развернуть модели в Compressa. Решение использует модель LLama3-8B для чата и модель SFR-Embedding-Mistral для векторных представлений.
Модели можно развернуть, используя REST API или UI Swagger'а.

REST API доступны по адресам:

  • SERVER_NAME:5500/api/chat/
  • SERVER_NAME:5500/api/embeddings/

Swagger UI доступны по адресам:

  • SERVER_NAME:5500/api/chat/docs
  • SERVER_NAME:5500/api/embeddings/docs

Модели могут быть развернты с помощью следующих комманд curl:

Загрузка LLama3-8B в Compressa:

curl -X 'POST' \
'http://localhost:5500/api/chat/v1/models/add/?model_id=compressa-ai%2FLlama-3-8B-Instruct' \
-H 'accept: application/json' \
-d ''

Загрузка embedding-модели в Compressa:

curl -X 'POST' \
'http://localhost:5500/api/embeddings/v1/models/add/?model_id=Salesforce%2FSFR-Embedding-Mistral' \
-H 'accept: application/json' \
-d ''

После завершения загрузки, можно развернуть модели:

Развертывание LLama3-8B

curl -X 'POST' \
'http://localhost:5500/api/chat/v1/deploy/' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model_id": "compressa-ai/Llama-3-8B-Instruct",
"dtype": "float16"
}'

Развертывание embedding-модели

curl -X 'POST' \
'http://localhost:5500/api/embeddings/v1/deploy/' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model_id": "Salesforce/SFR-Embedding-Mistral",
"dtype": "float16"
}'

When the models are deployed, the server is ready to use!

CLI

CLI используется для добавления новых документов в базу.

Установка

CLI можно установить из того же репозитория (требуется python3.10+):

cd compressa-deploy/cli
pip install -r requirements.txt

Настройка

CLI-инструмент должен иметь доступ к развернутому чат-боту, моделям и qdrant.
Пожалуйста, установите URL к ним в файле .env:

SERVER_NAME=<SERVER_NAME> # in case of port 80
QDRANT_URL=<SERVER_NAME>:6333
OPENAI_BASE=<SERVER_NAME>:5500/v1 # Compressa
QDRANT_KEY=your_secret_api_key_here

Использование

Добавление документа в индекс

Когда все переменные среды установлены, документы можно добавить в систему с помощью одной из следующих команд:

python3 create_bot.py <BOT_ID> /path/to/document.pdf  
python3 create_bot.py <BOT_ID> /path/to/folder

Бот InsightStream поддерживает форматы .docx и .pdf.

Когда документы загружены, бот доступен по адресу <SERVER_NAME>/agent/<bot_id>.

Использование бота InsightStream

Вы можете открыть бота InsightStream по адресу <SERVER_NAME>/agent/<bot_id> и задать вопрос в чате: Chat UI

Бот также доступен через REST API.

REST API

Задать вопрос боту:

curl -X POST \
-H "Content-Type: application/json" \
-d '{
"question": "<your_question_here>"
}' \
"<SERVER_NAME>/v.1.0/<bot_id>"

Загрузить файл с сервера:

curl <SERVER_NAME>/documents/<filename> > <filename> 

Загрузить файл на сервер:

curl -X PUT -T /path/to/file <SERVER_NAME>/documents/<filename>