Развертывание векторной базы данных (Weaviate)
Ainergy поддерживает создание сервиса векторной базы данных на сервере Weaviate.
Сервер
Сервер Weaviate — это автономный экземпляр векторной базы данных, развертываемый как отдельный Docker-образ. Сервер предназначен для хранения коллекций данных и векторной базы данных, используемых для семантического поиска и работы с векторными запросами.
Взаимодействие с сервером осуществляется через API. Сервер Weaviate может запускаться независимо от основн ого проекта, что позволяет использовать его как самостоятельный сервис или интегрировать в существующую инфраструктуру.
Клиент
Клиент — это асинхронный API-клиент, в котором реализованы необходимые методы для работы с векторной базой.
Развертывание
Клиент и сервер развертываются с помощью Docker Compose и работают в рамках одной Docker-сети. Сервер изолирован от внешнего доступа — взаимодействие с ним осуществляется только внутри сети. Клиент предоставляет внешнее API с авторизацией по Bearer-токену.
Конфигурация эмбеддингов и реранкера
Система поддерживает два типа API:
-
Nexus API (по умо лчанию для эмбеддингов):
USE_OPENAI_LIKE_EMBEDDINGS=False- Использует переменные
NEXUS_*
-
OpenAI-совместимое API:
USE_OPENAI_LIKE_EMBEDDINGS=TrueUSE_OPENAI_LIKE_RERANKER=True- Использует переменные
EMBEDDING_API_URL,RERANKER_API_URL
Установка и запуск
-
Создайте целевую директорию:
mkdir -p vectordb
cd vectordb -
Создайте
.envфайл в целевой директории и вставьте в него текст из файла. -
Создайте файл
compose.ymlс содержимым из файла. -
Создайте Docker-сеть:
docker network create ainergy-net -
Скачайте образы:
docker compose pull -
Запустите сервисы:
docker compose up -d -
Проверьте статус:
docker compose ps
Доступ к API
- Client API:
http://localhost:3002 - Weaviate API:
http://localhost:8081(только для отладки) - Документация Swagger:
http://localhost:3002/docs
Управление
- Остановка:
docker compose down - Перезапуск:
docker compose restart - Логи:
docker compose logs -f - Обновление:
docker compose pull && docker compose up -d
Структура папок
vectordb/
├── .env # Конфигурация
├── compose.yml # Docker Compose файл
├── data/ # Данные Weaviate
└── cron/
└── logs/ # Логи cron задач
Примечания
- Все переменные окружения должны быть настроены в .env файле.
- Данные Weaviate сохра няются в папке
./data. - Резервные копии создаются автоматически согласно расписанию
SCHEDULE. - Порты можно изменить в файле
compose.ymlпри необходимости.
Работа с фильтрацией и метаданными
Формат загрузки документов
В VectorDB документы загружаются с текстом и метаданными. Метаданные – это словарь с произвольными ключами и значениями. Поддерживаемые типы: String, Integer, Float, Boolean, Date по стандарту ISO-8601.
Пример загрузки текста с метаданными:
{
"metadata": {
"sys_id": "12345",
"status": "active",
"priority": 1,
"flag": true,
"type": "project_management",
"created": "2024-01-01T00:00:00Z"
},
"text": "Документ о системе управления проектами..."
}
Пример загрузки файла с метаданными:
{
"metadata": {
"sys_id": "67890",
"status": "draft",
"priority": 2,
"flag": false,
"type": "safety_instruction",
"created": "2024-01-02T00:00:00Z"
},
"file": "<файл>"
}
- Метаданные автоматически определяют схему коллекции (тип поля определяется по первому загруженному значению).
- Для значений типа Boolean используйте
true/false(без кавычек). - Для дат используйте формат
YYYY-MM-DDTHH:MM:SSZ.