Skip to main content

Развертывание векторной базы данных

Векторная база данных предоставляет возможность выполнять быстрый поиск похожих и связанных с основным запросом документов и их чанков – частей файла заранее заданного размера.

База данных делится на коллекции, внутри которых можно производить поиск. Коллекции можно отождествлять с таблицами в привычных баз данных SimpleOne. При загрузке документа или текста происходит его дробление на чанки.

note

Подготовка при развертывании

Создайте резервную копию данных. Это позволит восстановить данные в случаи их потери.

Инструкция по развертыванию


Следуйте инструкции, чтобы развернуть векторную базу данных. Дополнительно вы можете настроить создание резервных копий и мониторинг.

В инструкции ниже приведена полная версия решения.

note

Инструкция воспроизводима на сервере с Ubuntu 22.04. Минимальные требования: 1 CPU, 2 RAM, 50 SSD.

Чтобы развернуть векторную базу данных и приступить к работе с Vector Collection Definition, введите последовательно следующие команды:

  1. docker pull harbor.ainergy.ru/vectordb/chroma:chroma_new

  2. docker pull harbor.ainergy.ru/vectordb/my-cron-docker:my-cron-docker_new

  3. mkdir VectorDb

  4. cd VectorDb

  5. nano compose.yml и вставьте текст из файла.

  6. 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.
  1. docker compose up -d

В результате сервис будет доступен по порту 4005.

Настройка мониторинга


Настройте мониторинг, чтобы получать оповещения в Telegram-боте. Для этого выполните следующие шаги:

  1. Скачайте архив и разархивируйте его при помощи команды tar -zxvf monitoring_vectordb.tar.gz

  2. Выполните команду cd Docker-Prometheus-Blackbox-Exporter, чтобы перейти в папку Docker-Prometheus-Blackbox-Exporter.

  3. Создайте бота в приложении Telegram, для этого выполните следующее:

    1. Откройте приложение Telegram и введите в поиске BotFather.
    2. Нажмите на контакт, чтобы открыть чат с ним.
    3. Нажмите Start, чтобы начать общение с BotFather.
    4. Выберите из предложенного списка /newbot или отправьте это сообщением.
    5. Далее FatherBot предложит создать название вашего бота и уникальное имя пользователя – после выполнения этих шагов вы получите сообщение об успешном создании бота, в котором также будет содержаться токен.
    6. Скопируйте токен и вставьте его в файл docker-compose в поле --telegram.token.
  4. Выполните последовательно команды cd config и nano prometheus.yml, чтобы открыть документ prometheus.yml

  5. Замените конечные точки static_configs на собственные.

  6. Выполните команду nano blackbox.yml и вставьте свой токен авторизации AUTH_TOKEN в поле Authorization.

  7. Чтобы завершить настройку мониторинга, выполните команду docker compose up -d.

Конечные точки


МетодКонечная точкаОписание
POSTload_document_to_collectionЗагрузка документов в векторную базу (.pdf, .docx).
POSTload_text_to_collectionЗагрузка текста в векторную базу.
POSTget_relevant_documentsПолучение релевантных чанков.
POSTget_content_by_tagПолучение чанков с определенными тегами.
GETget_content_by_idПолучение чанков с определённым ID.
GETget_list_of_documents_namesПолучение списка документов из коллекции.
GETdelete_document_from_collectionУдаление документа из коллекции.
GETget_list_of_collectionПолучение списка коллекций.
GETdelete_collectionУдаление коллекции.

Читайте подробнее о вызове конечной точки в статье Настройки REST API.