Modificar el esquema de una colección externaCompatible with Milvus 3.0.x

Las fuentes de datos externas suelen evolucionar después de crear una colección externa. Por ejemplo, una tabla de «lakehouse» que ya almacena representaciones vectoriales podría incluir posteriormente un nuevo campo escalar, como una puntuación, una categoría o una marca de tiempo, que se desee incluir en los resultados de las consultas o utilizar en los filtros.

En lugar de volver a crear la colección externa o copiar los datos de origen en Milvus, añade un campo de Milvus que se corresponda con el campo existente en la fuente de datos externa. Tras añadir el campo, actualiza la colección externa para que el nuevo campo pueda utilizarse en consultas y búsquedas.

Límites

  • Actualmente, las colecciones externas admiten la adición de campos tras su creación. No se admiten otros cambios en el esquema, como eliminar campos, renombrarlos, cambiar los tipos de datos de los campos, modificar las dimensiones de los vectores o reasignar external_field.

  • Solo se puede añadir un campo que ya exista en la fuente de datos externa. Esta operación asigna un campo externo existente a un campo de Milvus. No crea un nuevo campo en la fuente de datos externa ni rellena los datos de origen.

  • No se admite la adición de campos de tipo « SPARSE_FLOAT_VECTOR » a una colección externa existente.

  • No se admite la adición de campos «StructArray» a una colección externa existente. Si su colección externa necesita un campo «StructArray», defínalo en el esquema de la colección al crearla.

Añadir un campo

Antes de añadir un campo a una colección externa, comprueba que el campo ya exista en la fuente de datos externa. A continuación, llama a ` add_collection_field() ` para exponer ese campo en Milvus estableciendo ` external_field ` como el nombre del campo en la fuente de datos externa. Establece ` data_type ` como el tipo de datos de Milvus que coincida con el campo de la fuente de datos externa. Por ejemplo, si el campo mapeado almacena valores de doble precisión, utiliza ` DataType.DOUBLE`.

A diferencia de las colecciones gestionadas, los valores del campo añadido se leen de la fuente de datos externa tras actualizar la colección externa.

Añadir un campo escalar

Utilice add_collection_field() para añadir un campo escalar cuando desee que dicho campo aparezca en los resultados de la consulta o utilizarlo en filtros. El siguiente ejemplo añade un campo score que se asigna al campo score de la fuente de datos externa.

from pymilvus import DataType, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus",
)

client.add_collection_field(
    collection_name="product_embeddings",
    field_name="score",
    data_type=DataType.DOUBLE,
    nullable=True,
    external_field="score",
)

En este ejemplo, « score » es el nombre del campo de Milvus y « external_field="score" » lo asigna al campo « score » de la fuente de datos externa. Establece « nullable=True », ya que el campo se añade después de que la colección ya se haya creado.

Añadir un campo vectorial

También puede añadir un campo vectorial si la fuente de datos externa ya contiene los valores vectoriales. Configure el vector data_type y dim para que coincidan con el campo vectorial de la fuente de datos externa.

En el siguiente ejemplo se añade un campo vectorial denso denominado image_embedding_v2.

from pymilvus import DataType, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus",
)

client.add_collection_field(
    collection_name="product_embeddings",
    field_name="image_embedding_v2",
    data_type=DataType.FLOAT_VECTOR,
    dim=768,
    nullable=True,
    external_field="image_embedding_v2",
)

Si tiene previsto realizar búsquedas vectoriales en el campo vectorial añadido, cree un índice para el campo antes de actualizar la colección externa.

index_params = client.prepare_index_params()

index_params.add_index(
    field_name="image_embedding_v2",
    index_type="AUTOINDEX",
    metric_type="COSINE",
)

client.create_index(
    collection_name="product_embeddings",
    index_params=index_params,
)

Actualizar la colección externa

Tras modificar el esquema de una colección externa, actualice la colección externa para que Milvus actualice los metadatos de la colección externa y aplique el cambio de esquema a los resultados de las consultas, búsquedas y filtros.

client.refresh_external_collection(
    collection_name="product_embeddings"
)

Traducido porDeepL

Prueba Milvus gestionado gratis

Zilliz Cloud no da problemas, funciona con Milvus y es 10 veces más rápido.

Empezar
Feedback

¿Fue útil esta página?