Dans Milvus, les collections équivalent aux tables d'une base de données relationnelle. Elles constituent l'unité fondamentale pour organiser et gérer les données vectorielles ainsi que leurs métadonnées scalaires associées. Configurez des index, des partitions et des shards pour personnaliser le flux de traitement des données. Vous disposerez ainsi d'une solution complète pour l'ingestion, le stockage, l'interrogation et l'analyse des données.
Prérequis
Créer une collection
Création rapide d'une collection
Spécifiez le nom et la dimension vectorielle pour créer rapidement une collection.
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)
Ce code crée une collection comportant uniquement deux champs : id (clé primaire) et vector (champ vectoriel). Les propriétés auto_id et enable_dynamic_field sont activées par défaut.
auto_id: lorsque cette propriété est activée, Milvus attribue automatiquement une clé primaire auto-incrémentée à chaque enregistrement. Définir la valeur de la clé primaire n'est pas nécessaire.enable_dynamic_field: si cette propriété est activée, tous les champs autres que les champs prédéfinisidetvectorsont considérés comme dynamiques. Ils sont stockés sous forme de paires clé-valeur dans un champ spécial nommé$meta. Cette fonctionnalité permet d'insérer des données pour des champs non définis dans le schéma.
Ces paramètres offrent une grande flexibilité pour insérer et gérer des données sans définir tous les champs au préalable.
Création d'une collection personnalisée
Lors de la création d'une collection personnalisée, spécifiez les paramètres du schéma et de l'index.
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)
Vous pouvez également créer séparément la collection et l'index, comme illustré dans l'exemple suivant.
# 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)
Consulter les collections
-
Consultez les détails d'une collection spécifique.
res = client.describe_collection(collection_name="milvus_collection") print(res) -
Répertoriez toutes les collections de la base de données actuelle.
res = client.list_collections() print(res)
Charger et libérer une collection
Charger une collection place ses fichiers d'index associés en mémoire, tandis que la libérer les décharge. Chargez impérativement une collection en mémoire avant toute opération de recherche.
Charger une collection
client.load_collection(
collection_name="milvus_collection"
)
res = client.get_load_state(
collection_name="milvus_collection"
)
print(res)
Libérer une collection
client.release_collection(
collection_name="milvus_collection"
)
res = client.get_load_state(
collection_name="milvus_collection"
)
print(res)
Supprimer une collection
client.drop_collection(
collection_name="milvus_collection"
)
client.drop_collection(
collection_name="milvus_collection1"
)