BIN_IVF_FLAT
El índice BIN_IVF_FLAT es una variante del índice IVF_FLAT exclusivamente para incrustaciones binarias. Aumenta la eficacia de la consulta dividiendo primero los datos vectoriales en varios clústeres (unidades nlist) y comparando después el vector de entrada objetivo con el centro de cada clúster. BIN_IVF_FLAT reduce significativamente el tiempo de consulta al tiempo que permite a los usuarios ajustar con precisión el equilibrio entre precisión y velocidad. Para más información, consulte IVF_FLAT.
Crear un índice
Para construir un índice BIN_IVF_FLAT sobre un campo vectorial 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_binary_vector_field_name", # Name of the vector field to be indexed
index_type="BIN_IVF_FLAT", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="HAMMING", # Metric type used to measure similarity
params={
"nlist": 64, # Number of clusters for the index
} # Index building params
)
En esta configuración:
index_type: El tipo de índice a construir. En este ejemplo, establezca el valorBIN_IVF_FLAT.metric_type: El método utilizado para calcular la distancia entre vectores. Los valores soportados para incrustaciones binarias incluyenHAMMING(por defecto) yJACCARD. Para más detalles, consulte Tipos de métricas.params: Opciones de configuración adicionales para construir el índice.nlist: Número de conglomerados en que se divide el conjunto de datos.
Para conocer más parámetros de construcción disponibles para el índice
BIN_IVF_FLAT, consulte Parámetros de construcción del índice.
Una vez configurados los parámetros del índice, puede crear el índice utilizando el método create_index() directamente o pasando los parámetros del índice en el 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 de similitud en el índice.
search_params = {
"params": {
"nprobe": 10, # Number of clusters to search
}
}
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="binary_vector_field", # Binary vector field
data=[query_binary_vector], # Query binary vector
limit=3, # TopK results to return
search_params=search_params
)
En esta configuración:
params: Opciones de configuración adicionales para la búsqueda en el índice.nprobe: Número de clusters a buscar.
Para conocer más parámetros de búsqueda disponibles para el índice
BIN_IVF_FLAT, 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 número de clusters a crear utilizando el algoritmo k-means durante la construcción del índice. Cada cluster, representado por un centroide, almacena una lista de vectores. Aumentar este parámetro reduce el número de vectores en cada clúster, creando particiones más pequeñas y centradas. |
Tipo: Entero Rango: [1, 65536] Valor por defecto: |
Los valores mayores de |
Parámetros de búsqueda específicos del índice
La siguiente tabla enumera los parámetros que pueden configurarse en search_params.params al buscar en el índice.
Parámetro |
Descripción |
Rango de valores |
Sugerencia de ajuste |
|---|---|---|---|
|
El número de clusters en los que buscar candidatos. Los valores más altos permiten buscar en más clusters, lo que mejora la recuperación al ampliar el ámbito de búsqueda, pero a costa de aumentar la latencia de la consulta. |
Tipo: Entero Rango: [1, nlist] Valor por defecto: |
Aumentar este valor mejora la recuperación pero puede ralentizar la búsqueda. Establezca En la mayoría de los casos, se recomienda establecer un valor dentro de este intervalo: [1, nlist]. |