• Acerca de Milvus
  • Comenzar
  • Conceptos
  • Guía del usuario
    • Colecciones
    • Esquema y campos de datos
    • Insertar y eliminar
    • Índices
    • Buscar en
    • Embeddings y reordenación
    • Optimización del almacenamiento
  • Importación de datos
  • Herramientas de IA
  • Guía de administración
  • Herramientas
  • Integraciones
  • Tutoriales
  • Preguntas frecuentes
  • API Reference

ÍNDICE_ESPARCIDO_INVERTIDO

El índice SPARSE_INVERTED_INDEX es un tipo de índice utilizado por Milvus para almacenar y buscar eficientemente vectores dispersos. Este tipo de índice aprovecha los principios de la indexación invertida para crear una estructura de búsqueda altamente eficiente para datos dispersos. Para más información, consulte INVERTED.

Crear un índice

Para construir un índice SPARSE_INVERTED_INDEX en un campo de vectores dispersos en Milvus, utilice el método add_index(), especificando los parámetros index_type, metric_type, y adicionales para el índice.

from pymilvus import MilvusClient

# Prepare index building params
index_params = MilvusClient.prepare_index_params()

index_params.add_index(
    field_name="your_sparse_vector_field_name", # Name of the vector field to be indexed
    index_type="SPARSE_INVERTED_INDEX", # Type of the index to create
    index_name="sparse_inverted_index", # Name of the index to create
    metric_type="IP", # Metric type used to measure similarity
    params={"inverted_index_algo": "DAAT_MAXSCORE"}, # Algorithm used for building and querying the index
)

En esta configuración:

  • index_type: El tipo de índice a construir. En este ejemplo, establezca el valor a SPARSE_INVERTED_INDEX.

  • metric_type: La métrica utilizada para calcular la similitud entre vectores dispersos. Valores válidos:

    • IP (Producto interior): Mide la similitud utilizando el producto punto.

    • BM25: Se utiliza normalmente para la búsqueda de texto completo, centrándose en la similitud textual.

      Para más detalles, consulte Tipos de métricas y búsqueda de texto completo.

  • params.inverted_index_algo: El algoritmo utilizado para construir y consultar el índice. Valores válidos:

    • "DAAT_MAXSCORE" (por defecto): Procesamiento optimizado de consultas documento a documento (DAAT) mediante el algoritmo MaxScore. MaxScore proporciona un mejor rendimiento para valores altos de k o consultas con muchos términos al omitir términos y documentos que probablemente tengan un impacto mínimo. Para ello, divide los términos en grupos esenciales y no esenciales en función de sus puntuaciones máximas de impacto, centrándose en los términos que pueden contribuir a los resultados k más importantes.

    • "DAAT_WAND": Procesamiento optimizado de consultas DAAT mediante el algoritmo WAND. WAND evalúa un menor número de documentos coincidentes aprovechando las puntuaciones de impacto máximo para omitir los documentos no competitivos, pero tiene una mayor sobrecarga por coincidencia. Esto hace que WAND sea más eficiente para consultas con valores de k pequeños o consultas cortas, en las que saltar es más factible.

    • "TAAT_NAIVE": Procesamiento de consultas básicas término a término (TAAT). Aunque es más lento que DAAT_MAXSCORE y DAAT_WAND, TAAT_NAIVE ofrece una ventaja única. A diferencia de los algoritmos DAAT, que utilizan puntuaciones de impacto máximo almacenadas en caché que permanecen estáticas independientemente de los cambios en el parámetro de recopilación global (avgdl), TAAT_NAIVE se adapta dinámicamente a dichos cambios.

    Para conocer más parámetros de construcción disponibles para el índice SPARSE_INVERTED_INDEX, consulte Parámetros de construcción del índice.

Una vez configurados los parámetros del índice, puede crear el índice utilizando directamente el método create_index() o pasando los parámetros del índice al método create_collection. Para más detalles, consulte Crear colección.

Búsqueda en el índice

Una vez creado el índice e insertadas las entidades, puede realizar búsquedas por similitud en el índice.

# Prepare the query vector
query_vector = [{1: 0.2, 50: 0.4, 1000: 0.7}]

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="vector_field",  # Vector field name
    data=query_vector,  # Query vector
    limit=3,  # TopK results to return
)

Para obtener más información sobre los parámetros de búsqueda disponibles para el índice SPARSE_INVERTED_INDEX, consulte Parámetros de búsqueda específicos del índice.

Parámetros del índice

En esta sección se ofrece una descripción general de los parámetros utilizados para crear un índice y realizar búsquedas en él.

Parámetros de creación de índices

La siguiente tabla enumera los parámetros que pueden configurarse en params al crear un índice.

Parámetro

Descripción

Rango de valores

Sugerencia de ajuste

inverted_index_algo

El algoritmo utilizado para construir y consultar el índice. Determina cómo procesa el índice las consultas.

"DAAT_MAXSCORE" (por defecto), "DAAT_WAND", "TAAT_NAIVE"

Utilice "DAAT_MAXSCORE" para escenarios con valores de k altos o consultas con muchos términos, que pueden beneficiarse de saltarse documentos no competitivos.

Elija "DAAT_WAND" para consultas con valores de k pequeños o consultas cortas para aprovechar una omisión más eficiente.

Utilice "TAAT_NAIVE" si se requiere un ajuste dinámico a los cambios de la colección (por ejemplo, avgdl).

Parámetros de búsqueda específicos del índice

En la tabla siguiente se enumeran los parámetros que pueden configurarse en search_params.params cuando se realizan búsquedas en el índice.

Parámetro

Descripción

Rango de valores

Sugerencia de ajuste

drop_ratio_search

La proporción de los valores más pequeños a ignorar durante la búsqueda, ayudando a reducir el ruido.

Fracción entre 0,0 y 1,0 (por ejemplo, 0,2 ignora el 20% de los valores más pequeños).

Ajuste este parámetro en función de la dispersión y el nivel de ruido de sus vectores de consulta.

Este parámetro controla la proporción de valores de baja magnitud descartados durante la búsqueda. Aumentar este valor (por ejemplo, a 0.2) puede reducir el ruido y centrar la búsqueda en los componentes más significativos, lo que puede mejorar la precisión y la eficacia. Sin embargo, descartar más valores también puede reducir la recuperación al excluir señales potencialmente relevantes. Elija un valor que equilibre la recuperación y la precisión para su carga de trabajo.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

¿Fue útil esta página?