Í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 aSPARSE_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 queDAAT_MAXSCOREyDAAT_WAND,TAAT_NAIVEofrece 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_NAIVEse 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 |
|---|---|---|---|
|
El algoritmo utilizado para construir y consultar el índice. Determina cómo procesa el índice las consultas. |
|
Utilice Elija Utilice |
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 |
|---|---|---|---|
|
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 |