Развертывание векторной базы данных
Векторная база данных предоставляет возможность выполнять быстрый поиск похожих и связанных с основным запросом документов и их чанков – частей файла заранее заданного размера.
База данных делится на коллекции, внутри которых можно производить поиск. Коллекции можно отождествлять с таблицами в привычных баз данных SimpleOne. При загрузке документа или текста происходит его дробление на чанки.
Подготовка при развертывании
Создайте резервную копию данных. Это позволит восстановить данные в случаи их потери.
Инструкция по развертыванию
Следуйте инструкции, чтобы развернуть векторную базу данных. Дополнительно вы можете настроить создание резервных копий и мониторинг.
В инструкции ниже приведена полная версия решения.
- Инструкция воспроизводима на сервере с Ubuntu 22.04.
- Минимальные системные требования: 1 CPU, 2 RAM, 50 SSD.
- Рекомендуемые системные требования: 4 CPU, 8 GB RAM, 100 GB NVMe SSD.
- Скорость накопителей влияет на пропускную способность.
Чтобы развернуть векторную базу данных и приступить к работе с Vector Collection Definition, введите последовательно следующие команды:
-
docker pull harbor.ainergy.ru/vectordb/chroma:latest
-
docker pull harbor.ainergy.ru/vectordb/my-cron-docker:my-cron-docker_new
-
mkdir VectorDb
-
cd VectorDb
-
nano compose.yml
и вставьте текст из файла. -
nano.env
, вставьте текст из файла и дополните его нужными значениями.Содержание .env файла:
- AUTH_TOKEN=xxx – укажите Bearer token для авторизации.
- DB_NAME=xxx – укажите имя векторной базы. Используйте только латинские буквы [a-z], например, mydb.
- NEXUS=ain.e5-large.embedding
- NEXUS_AUTH_TOKEN=xxx – используйте токен, полученный от вендора.
- NEXUS_URL=https://your_instance/v1/you_client_code/ask – укажите URL, как в шаблоне.
- AWS_ENDPOINT=xxx – укажите путь к вашему хранилищу S3.
- AWS_ACCESS_KEY_ID=xxx – укажите логин.
- AWS_SECRET_ACCESS_KEY=xxx – укажите пароль.
- AWS_BUCKET_NAME=xxx – укажите имя бакета.
- AWS_FOLDER_NAME=xxx – укажите название папки внутри бакета, куда будет производиться резервная копия данных.
- SCHEDULE=0 0 * * * – укажите частоту формирования резервной копии данных в формате Cron.
- NUM_WORKERS=xxx – укажите количество процессов, запускаемых приложением для обработки запросов. Значение по умолчанию вычисляется по формуле
(2*<количество ядер процессора> + 1)
. Значение не должно превышать 12. При установке вручную рекомендуется указывать значение от 4 до 12.
docker compose up -d
В результате сервис будет доступен по порту 4005.
Настройка мониторинга
Настройте мониторинг, чтобы получать оповещения в Telegram-боте. Для этого выполните следующие шаги:
-
Скачайте архив и разархивируйте его при помощи команды
tar -zxvf monitoring_vectordb.tar.gz
-
Выполните команду
cd Docker-Prometheus-Blackbox-Exporter
, чтобы перейти в папку Docker-Prometheus-Blackbox-Exporter. -
Создайте бота в приложении Telegram, для этого выполните следующее:
- Откройте приложение Telegram и введите в поиске BotFather.
- Нажмите на контакт, чтобы открыть чат с ним.
- Нажмите Start, чтобы начать общение с BotFather.
- Выберите из предложенного списка
/newbot
или отправьте это сообщением. - Далее FatherBot предложит создать название вашего бота и уникальное имя пользователя – после выполнения этих шагов вы получите сообщение об успешном создании бота, в котором также будет содержаться токен.
- Скопируйте токен и вставьте его в файл docker-compose в поле --telegram.token.
-
Выполните последовательно команды
cd config
иnano prometheus.yml
, чтобы открыть документ prometheus.yml -
Замените конечные точки static_configs на собственные.
-
Выполните команду
nano blackbox.yml
и вставьте свой токен авторизации AUTH_TOKEN в поле Authorization. -
Чтобы завершить настройку мониторинга, выполните команду
docker compose up -d
.
Конечные точки
Метод | Конечная точка | Описание |
---|---|---|
POST | load_document_to_collection | Загрузка документов в векторную базу (.pdf, .docx). |
POST | load_text_to_collection | Загрузка текста в векторную базу. |
POST | get_relevant_documents | Получение релевантных чанков. |
POST | get_content_by_tag | Получение чанков с определенными тегами. |
GET | get_content_by_id | Получение чанков с определённым ID. |
GET | get_list_of_documents_names | Получение списка документов из коллекции. |
GET | delete_document_from_collection | Удаление документа из коллекции. |
GET | get_list_of_collection | Получение списка коллекций. |
GET | delete_collection | Удаление коллекции. |
DELETE | delete_document_from_collection | Удаление документа из коллекции. |
DELETE | delete_collection | Удаление коллекции. |
Читайте подробнее о вызове конечной точки в стать е Настройки REST API.