As coleções no Milvus assemelham-se às tabelas de um banco de dados relacional. Elas são as unidades fundamentais para organizar e gerenciar dados vetoriais e seus metadados escalares associados. Configure índices, partições e shards para personalizar o fluxo de processamento de dados e criar uma solução completa de ingestão, armazenamento, consulta e análise.
Pré-requisitos
Crie uma coleção
Crie rapidamente uma coleção
Crie uma coleção rapidamente especificando seu nome e a dimensão do vetor.
from pymilvus import MilvusClient
# Create a Milvus client.
client = MilvusClient(
uri="http://c-xxxx.milvus.aliyuncs.com:19530", # The public endpoint of the Milvus instance.
token="<yourUsername>:<yourPassword>", # The username and password for the Milvus instance.
db_name="default" # The name of the database to connect to. This example uses the default database.
)
# Create a collection named milvus_collection.
client.create_collection(
collection_name="milvus_collection",
dimension=5
)
res = client.get_load_state(
collection_name="milvus_collection"
)
# Return the current loading status of the collection.
print(res)
Este código cria uma coleção com apenas dois campos: id (chave primária) e vector (campo vetorial). As propriedades auto_id e enable_dynamic_field vêm ativadas por padrão.
auto_id: Quando ativada, esta propriedade faz o Milvus atribuir automaticamente uma chave primária autoincremental a cada registro. Não é necessário definir o valor da chave primária.enable_dynamic_field: Se ativada, esta propriedade trata qualquer campo além dos predefinidosidevectorcomo campos dinâmicos. O sistema os armazena como pares chave-valor em um campo especial chamado$meta. Esse recurso permite inserir dados em campos não definidos no schema.
Essas configurações oferecem flexibilidade para inserir e gerenciar dados sem definir todos os campos antecipadamente.
Crie uma coleção personalizada
Ao criar uma coleção personalizada, especifique os parâmetros de schema e de índice.
from pymilvus import MilvusClient, DataType, time
# Create a Milvus client.
client = MilvusClient(
uri="http://c-xxxx.milvus.aliyuncs.com:19530", # The Internet-accessible address of the Milvus instance.
token="<yourUsername>:<yourPassword>", # The username and password to log on to the Milvus instance.
db_name="default" # The name of the database to connect to. This example uses the default database.
)
# Create a schema.
schema = MilvusClient.create_schema(
auto_id=False, # Disable automatic ID generation.
enable_dynamic_field=True, # Enable dynamic fields.
)
# Add schema fields.
# Add an INT64 field named test_id as the primary key.
schema.add_field(field_name="test_id", datatype=DataType.INT64, is_primary=True)
# Add a 768-dimensional float vector field named test_vector.
schema.add_field(field_name="test_vector", datatype=DataType.FLOAT_VECTOR, dim=768)
# Define index parameters.
index_params = client.prepare_index_params()
# Add indexes.
index_params.add_index(
field_name="test_id",
index_type="STL_SORT" # Set the index type.
)
index_params.add_index(
field_name="test_vector",
index_type="IVF_SQ8", # Set the index type.
metric_type="L2", # Set the metric type, such as L2.
params={"nlist": 128}
)
# Create a collection with the specified schema and index.
client.create_collection(
collection_name="milvus_collection", # Create a collection named milvus_collection.
schema=schema,
index_params=index_params
)
time.sleep(5)
res = client.get_load_state(
collection_name="milvus_collection"
)
print(res)
Também é possível criar a coleção e o índice separadamente. O código a seguir mostra um exemplo.
# Create a collection named milvus_collection1.
client.create_collection(
collection_name="milvus_collection1",
schema=schema,
)
# Query the loading status of milvus_collection1.
res = client.get_load_state(
collection_name="milvus_collection1"
)
print(res)
# Create an index for milvus_collection1.
client.create_index(
collection_name="milvus_collection1",
index_params=index_params
)
# Query the loading status of milvus_collection1 after the index is created.
res = client.get_load_state(
collection_name="milvus_collection1"
)
print(res)
Visualize coleções
-
Visualize os detalhes de uma coleção específica:
res = client.describe_collection(collection_name="milvus_collection") print(res) -
Liste todas as coleções no banco de dados atual:
res = client.list_collections() print(res)
Carregar e liberar uma coleção
Ao carregar uma coleção, o Milvus transfere os arquivos de índice associados para a memória. Ao liberá-la, o sistema remove esses arquivos da memória. Carregue a coleção na memória antes de executar buscas.
Carregar uma coleção
client.load_collection(
collection_name="milvus_collection"
)
res = client.get_load_state(
collection_name="milvus_collection"
)
print(res)
Liberar uma coleção
client.release_collection(
collection_name="milvus_collection"
)
res = client.get_load_state(
collection_name="milvus_collection"
)
print(res)
Exclua uma coleção
client.drop_collection(
collection_name="milvus_collection"
)
client.drop_collection(
collection_name="milvus_collection1"
)