Создание разделов

Milvus позволяет разбить векторные данные на несколько разделов. Поиск и другие операции могут быть ограничены одним разделом для улучшения производительности.

Коллекция состоит из одного или нескольких разделов. При создании новой коллекции Milvus создаст раздел по умолчанию _default.

В следующем примере создается раздел с именем novel в коллекции book.

from pymilvus import Collection
collection = Collection("book")      # Получить существующую коллекцию
collection.create_partition("novel")
Параметр Описание
partition_name Имя создаваемого раздела.
description (необязательно) Описание создаваемого раздела.

Ограничения

Функция Максимальное ограничение
Количество разделов в коллекции 4,096

Проверка существования раздела

Проверить, существует ли указанный раздел в указанной коллекции.

from pymilvus import Collection
collection = Collection("book")      # Получить существующую коллекцию
collection.has_partition("novel")

Перечисление всех разделов

from pymilvus import Collection
collection = Collection("book")      # Получить существующую коллекцию
collection.partitions

Удаление раздела

from pymilvus import Collection
collection.drop_partition("novel")

Загрузка раздела

Загрузка раздела в память вместо загрузки всей коллекции может значительно сократить использование памяти. Все операции поиска и запроса в Milvus выполняются в памяти.

Начиная с версии 2.3.0, Milvus улучшил операции с разделами и поддерживает каскадную загрузку и освобождение. Это означает, что вы можете выполнять любую комбинацию следующих операций:

  • Загрузка уже загруженной коллекции.
  • Загрузка коллекции, затем загрузка конкретного раздела(ов) в коллекции.
  • Загрузка раздела, затем загрузка коллекции, к которой принадлежит раздел.
  • Загрузка раздела и повторная загрузка перед освобождением.

Milvus позволяет пользователям загружать разделы в виде нескольких реплик для использования ресурсов CPU и памяти дополнительных узлов запросов. Эта функция поддерживается в текущей версии через PyMilvus.

from pymilvus import Collection
collection = Collection("book")      # Получить существующую коллекцию
collection.load(["novel"], replica_number=2)

from pymilvus import Partition
partition = Partition("novel")       # Получить существующий раздел
partition.load(replica_number=2)

Получение информации о репликах

Вы можете просмотреть информацию о загруженных репликах.

from pymilvus import Partition
partition = Partition("novel")       # Получить существующий раздел
partition.load(replica_number=2)     # Загрузить раздел с 2 репликами
result = partition.get_replicas()
print(result)

Освобождение раздела

Как освободить раздел из памяти после поиска или запроса для сокращения использования памяти.

Начиная с версии 2.3.0, Milvus улучшил операции с разделами и поддерживает каскадную загрузку и освобождение. Это означает, что вы можете выполнять любую комбинацию следующих операций:

  • Освобождение загруженной коллекции.
  • Освобождение конкретного раздела(ов) в загруженной коллекции.
  • Освобождение загруженного раздела.
  • Освобождение частично загруженных разделов в коллекции.
from pymilvus import Partition
partition = Partition("novel")       # Получить существующий раздел
partition.release()