Trabajar con Milvus

Crear una colección en Milvus

En Milvus, las colecciones se utilizan para almacenar y gestionar entidades. Una colección en Milvus es equivalente a una tabla en un sistema de gestión de bases de datos relacionales (RDBMS).

Consulte Crear una colección para crear una colección en Milvus.

Insertar datos en Milvus

Milvus admite valores por defecto para los campos escalares excepto un campo de clave primaria. Puede mantener algunos campos vacíos durante las inserciones de datos.

Para más información, ver Insertar entradas.

Se recomienda insertar los datos por lotes por las siguientes razones:

  • La cantidad de vectores que se pueden ingerir en una única llamada a la API de GRPC está limitada por el tamaño máximo de mensaje permitido porKafka. En IBM Cloud, el límite máximo de tamaño de mensaje está limitado a 1 MB.

  • El número máximo de filas que se pueden insertar a la vez depende del tamaño total de los datos que está intentando ingerir. El número exacto disminuye con el aumento de las dimensiones del vector y la presencia de campos no vectoriales en la fila.

Utilice la API de inserción masiva para insertar los conjuntos de datos de más de 500.000 vectores. La API de inserción masiva funciona mejor que la API de inserción por lotes al ingerir conjuntos de datos más grandes. El uso de archivos.npy es la forma recomendada de incorporar grandes conjuntos de datos. Si utiliza la API de inserción por lotes, deseche manualmente la colección después de cada 500.000 filas. Para más información, ver API de inserción masiva.

Creación de índices en Milvus

Cree un índice antes de realizar la búsqueda por vecino más próximo (RNA) en Milvus.

IBM da soporte oficialmente a los índices siguientes:

Los índices que no están listados en esta lista pueden funcionar, pero no están validados por IBM.

Cuando el número de filas de un segmento sea inferior a 1024, Milvus no creará ningún índice para ese segmento. En su lugar, utilizará por defecto la búsqueda brute-force para las operaciones de consulta. Una vez que el recuento de filas en el segmento supere este umbral, Milvus comenzará automáticamente a construir los índices.

  • HNSW
  • SCANN
  • FLAT
  • IVF_FLAT
  • IVF_PQ

Puede crear el índice especificando el nombre de campo de vector y los parámetros de índice. Para más información, ver Campos vectoriales de índice.

Realizar una búsqueda de similitud vectorial en Milvus

En Milvus, puede realizar una búsqueda de similitud vectorial después de preparar los parámetros para su escenario de búsqueda.

Realización de una consulta basada en el filtrado escalar en Milvus

En Milvus, puede realizar una consulta basada en el filtrado escalar. Para más información, ver Obtener y consulta escalar.

Puedes realizar los siguientes tipos de búsqueda:

  • Búsqueda de rango: para buscar vectores dentro de un rango de distancia específico desde el vector de consulta. Para más información, ver Búsqueda de rango.
  • Búsqueda agrupada: Para obtener resultados basados en un campo específico para asegurar diversidad en los resultados. Para más información, ver Búsqueda de agrupación.

Al ejecutar una consulta de búsqueda con filtrado escalar en un conjunto de datos grande, es importante ajustar el parámetro de límite para gestionar los resultados de la consulta de forma eficaz. Utilice el siguiente método para configurar el limit parámetro:

hello_milvus.query(expr=query_condition, output_fields=["random", "embeddings"], limit=100,offset=0)

La suma de los valores de limit y offset Los parámetros deben estar en el rango de[ 1, 16384] .

Eliminación de entidades de Milvus mediante clave primaria

En Milvus, puede eliminar las entidades utilizando la clave primaria. Prepare la expresión booleana que filtre las entidades a eliminar.

Para obtener más información, consulte Suprimir entidades.

Colecta de Milvus

Dar de baja una colección de Milvus es irreversible. No puede recuperar los datos suprimidos.

Añade lo siguiente a tu .ipynb o Python script para soltar una colección..

from pymilvus import utility
utility.drop_collection(<collection name>)

Prácticas recomendadas

A continuación se presentan algunas de las mejores prácticas:

  • Si hay campos Varchar largos (más de 256 caracteres), mantenga los campos no vectoriales fuera de Milvus. Puede guardarlos en un depósito de COS o en un depósito de almacenamiento y realizar una búsqueda referencial.
  • Asegúrese de que elPyMilvus la versión es2.4.0 o después. Milvus 2.4.0 o versiones posteriores admiten la búsqueda de vectores dispersos, la búsqueda híbrida ( sparse_dense ) y la búsqueda multivectorial.
  • Mientras carga colecciones mediante la inserción por lotes, siga el patrón: insertar en un lote, liberar la memoria y luego repetir el proceso.
  • No ingiera en paralelo todas las colecciones a la vez. Ingerir secuencialmente y enjuagar entre ingestas.
  • El tamaño máximo de cada colección debe corresponder al número máximo de vectores admitidos en un tamaño de camiseta.
  • Si tiene varias colecciones o particiones cargadas, asegúrese de que la suma de los vectores de todas las entidades cargadas no supera el límite del tamaño de la camiseta. Aún puede almacenar más vectores que el límite de tamaño de camiseta siempre que la cantidad de vectores cargados esté dentro del límite.

Durante la actualización de Milvus, puede haber un ligero retraso en la respuesta durante unos 20 segundos. Las búsquedas en curso y las consultas upsert pueden fallar. Puede reintentar las consultas inmediatamente.

Ejemplos de cuadernos para Milvus

Con estos cuadernos de muestra, puede probar las capacidades de Milvus con tutoriales paso a paso. Para acceder a los cuadernos de muestra, consulte Cuadernos de muestra de Milvus.