milvus-logo
LFAI
< Docs
  • Python

CollectionSchema

A CollectionSchema instance represents the schema of a collection. A schema sketches the structure of a collection.

class pymilvus.CollectionSchema

Constructor

Constructs the schema of a collection by defining fields, data types, and other parameters.

CollectionSchema(
    fields: list,
    description: str
)

PARAMETERS:

  • fields (list) -

    [REQUIRED]

    A list of FieldSchema objects that define the fields in the collection schema.

    what is a field schema?

    A field schema represents and contains metadata for a single field, while CollectionSchema ties together a list of FieldSchema objects to define the full schema.

  • description (string) -

    The description of the schema.

    If a description is not provided, it will be set to an empty string.

  • kwargs -

    • auto_id (bool)

      Whether allows the primary field to automatically increment.

      Setting this to True makes the primary field automatically increment. In this case, the primary field should not be included in the data to insert to avoid errors.

    • enable_dynamic_field (bool)

      Whether allows Milvus saves the values of undefined fields in a dynamic field if the data being inserted into the target collection includes fields that are not defined in the collection's schema.

      When you set this to True, Milvus and will create a field called $meta to store any undefined fields and their values from the data that is inserted.

      what is a dynamic field?

      If the data being inserted into the target collection includes fields that are not defined in the collection's schema, those fields will be saved in a dynamic field as key-value pairs.

    • primary_field (str)

      The name of the primary field.

      The value should be the name of a field listed in fields.

      As an alternative, you can set is_primary when creating a FieldSchema object.

    • partition_key_field (str)

      The name of the field that serves as the partition key.

      The value should be the name of a field listed in fields.

      Setting this makes Milvus manage all partitions in the current collection.

      As an alternative, you can set is_partition_key when creating a FieldSchema object.

      what is a partition key?

      Once a field is designated as the partition key, Milvus automatically creates a partition for each unique value in this field and saves entities in these partitions accordingly.

      This is particularly useful when implementing data separation based on a specific key, such as partition-oriented multi-tenancy.

      As an alternative, you can set partitionkeyfield when creating a CollectionSchema object.

RETURN TYPE:

CollectionSchema

RETURNS:

A CollectionSchema object.

EXCEPTIONS:

  • FieldsTypeException:

    This exception will be raised when the fields parameter is not a list.

  • FieldTypeException:

    This exception will be raised when a field in the fields list is not a FieldSchema object.

  • PrimaryKeyException:

    This exception will be raised if

    • The primary_field parameter has been set but the value is not a string.

    • The primary_field parameter has been set but the value is not the name of any listed fields.

  • PartitionKeyException:

    This exception will be raised if

    • The partition_key_field parameter has been set but the value is not a string.

    • The partition_key_field parameter has been set but the value is not the name of any listed fields.

  • AutoIDException:

    • This exception will be raised if the auto_id parameter has been set but the value is not a boolean.

Examples

from pymilvus import CollectionSchema, FieldSchema, DataType

# Define fields in a schema
primary_key = FieldSchema(
    name="id",
    dtype=DataType.INT64,
    is_primary=True,
)

vector = FieldSchema(
    name="vector",
    dtype=DataType.FLOAT_VECTOR,
    dim=768
)

# Construct a schema with the predefined fields
schema = CollectionSchema(
    fields=[primary_key, vector],
    description="example_schema"
)

Methods

The following are the methods of the CollectionSchema class: