• Acerca de Milvus
  • Comenzar
  • Conceptos
  • Guía del usuario
  • Importación de datos
  • Herramientas de IA
  • Guía de administración
  • Herramientas
  • Integraciones
  • Tutoriales
  • Preguntas frecuentes
  • API Reference

INVERTIDO

Cuando necesite realizar frecuentes consultas de filtrado en sus datos, los índices INVERTED pueden mejorar drásticamente el rendimiento de las consultas. En lugar de explorar todos los documentos, Milvus utiliza índices invertidos para localizar rápidamente los registros exactos que coinciden con sus condiciones de filtrado.

Cuándo utilizar índices INVERTIDOS

Utilice los índices INVERTIDOS cuando necesite

  • Filtrar por valores específicos: Encontrar todos los registros en los que un campo es igual a un valor específico (por ejemplo, category == "electronics")

  • Filtrar contenido de texto: Realizar búsquedas eficaces en los campos de VARCHAR

  • Consultar valores de campo JSON: Filtro de claves específicas dentro de estructuras JSON

Ventaja de rendimiento: los índices INVERTIDOS pueden reducir el tiempo de consulta de segundos a milisegundos en grandes conjuntos de datos al eliminar la necesidad de escanear toda la colección.

Cómo funcionan los índices INVERTIDOS

Un índice INVERTIDO en Milvus asigna cada valor de campo único (término) al conjunto de ID de documentos en los que aparece ese valor. Esta estructura permite realizar búsquedas rápidas de campos con valores repetidos o categóricos.

Como se muestra en el diagrama, el proceso funciona en dos pasos:

  1. Asignación directa (ID → Término): Cada ID de documento apunta al valor del campo que contiene.

  2. Mapeo inverso (Término → ID): Milvus recopila términos únicos y construye un mapeo inverso desde cada término a todos los IDs que lo contienen.

Por ejemplo, el valor "electrónica" corresponde a los ID 1 y 3, mientras que "libros" corresponde a los ID 2 y 5.

How Inverted Index Works Cómo funciona el índice invertido

Cuando se filtra un valor específico (por ejemplo, category == "electronics"), Milvus simplemente busca el término en el índice y recupera directamente los ID coincidentes. Esto evita tener que escanear el conjunto de datos completo y permite un filtrado rápido, especialmente para valores categóricos o repetidos.

Los índices INVERTED admiten todos los tipos de campos escalares, como BOOL, INT8, INT16, INT32, INT64, FLOAT, DOUBLE, VARCHAR, JSON y ARRAY. Sin embargo, los parámetros de índice para indexar un campo JSON son ligeramente diferentes a los de los campos escalares normales.

Creación de índices en campos no JSON

Para crear un índice en un campo no JSON, siga estos pasos:

  1. Prepare los parámetros del índice:

    from pymilvus import MilvusClient
    
    client = MilvusClient(uri="http://localhost:19530") # Replace with your server address
    
    # Create an empty index parameter object
    index_params = client.prepare_index_params()
    
  2. Añada el índice INVERTED:

    index_params.add_index(
        field_name="category",           # Name of the field to index
        index_type="INVERTED",          # Specify INVERTED index type
        index_name="category_index"     # Give your index a name
    )
    
  3. Crear el índice:

    client.create_index(
        collection_name="my_collection", # Replace with your collection name
        index_params=index_params
    )
    

Crear índices sobre campos JSONCompatible with Milvus 2.5.11+

También puede crear índices INVERTIDOS en rutas específicas dentro de campos JSON. Esto requiere parámetros adicionales para especificar la ruta JSON y el tipo de datos:

# Build index params
index_params.add_index(
    field_name="metadata",                    # JSON field name
    index_type="INVERTED",
    index_name="metadata_category_index",
    params={
        "json_path": "metadata[\"category\"]",    # Path to the JSON key
        "json_cast_type": "varchar"              # Data type to cast to during indexing
    }
)

# Create index
client.create_index(
    collection_name="my_collection", # Replace with your collection name
    index_params=index_params
)

Para obtener información detallada sobre la indexación de campos JSON, incluidas las rutas admitidas, los tipos de datos y las limitaciones, consulte Indexación JSON.

Eliminar un índice

Utilice el método drop_index() para eliminar un índice existente de una colección.

  • En v2.6.3 o versiones anteriores, debes liberar la colección antes de eliminar un índice escalar.

  • A partir de la versión 2.6.4, puedes eliminar un índice escalar directamente cuando ya no sea necesario, sin necesidad de liberar primero la colección.

client.drop_index(
    collection_name="my_collection",   # Name of the collection
    index_name="category_index" # Name of the index to drop
)

Prácticas recomendadas

  • Creeíndices después de cargar los datos: Cree índices en colecciones que ya contengan datos para mejorar el rendimiento.

  • Utilice nombres de índices descriptivos: Elija nombres que indiquen claramente el campo y el propósito

  • Supervisar el rendimiento de los índices: Compruebe el rendimiento de las consultas antes y después de crear índices

  • Tenga en cuenta sus patrones de consulta: Cree índices en los campos por los que filtra con frecuencia

Pasos siguientes