Mismos datos, misma consulta, pero una estrategia de búsqueda diferente. Arrastra el punto de consulta, ajusta nprobey pulsa «Ejecutar búsqueda » para ver cómo « IVF » omite la mayor parte de los datos.
nprobe » más cercanos; estos se iluminan. El resto de clústeres se omiten por completo.La disyuntiva: cuantos nprobe → más clústeres escaneados → mayor recuperación, pero más lento. Más pequeño nprobe → más rápido, pero es posible que se pierdan verdaderos vecinos que se encuentran en clústeres no escaneados. Prueba a colocar nprobe = 1 y arrastrar la consulta cerca del límite de un clúster para ver cómo disminuye la recuperación.
IVF (Inverted File) es un índice de vecino más cercano aproximado basado en agrupamientos. En el momento de la construcción, el método k-means divide todos los vectores en nlist clústeres, cada uno representado por su centroide. En el momento de la consulta, la búsqueda compara primero la consulta únicamente con los centroides, selecciona los nprobe y examina únicamente los vectores que contienen, omitiendo todo lo demás.
Milvus Incluye varias variantes de « IVF » que sacrifican memoria a cambio de precisión: IVF_FLAT almacena vectores sin procesar (la opción más precisa), IVF_SQ8 comprime cada dimensión a un byte (aprox. 4 veces menos memoria, pequeño coste de recuperación), y IVF_PQ aplica la cuantización de productos para lograr una compresión mucho mayor con un mayor coste de recuperación.
nlist (tiempo de construcción): el número de clústeres de k-means. Un punto de partida habitual es 4 × sqrt(N) para N vectores. Un mayor número de clústeres implica que cada uno es más pequeño — lo que permite escaneos más rápidos—, pero el barrido de centroides cuesta más y aumentan los efectos de borde.nprobe (tiempo de consulta): cuántos clústeres se deben escanear por consulta. Este es el principal control de recuperación/latencia —exactamente lo que controla el control deslizante de arriba—. Empieza por nlist / 16 y auméntalo hasta que la recuperación alcance tu objetivo.IVF Se compila rápidamente, tiene una pequeña sobrecarga de memoria además de los vectores y es fácil de entender; sin embargo, con el mismo objetivo de recuperación, « HNSW » suele responder a las consultas más rápido en memoria. Elige « IVF » cuando reconstruyas índices con frecuencia (la rapidez de compilación es importante), cuando la memoria sea limitada (IVF_SQ8/IVF_PQ) o cuando desees un comportamiento de exploración predecible y ajustable. Elige HNSW para obtener la menor latencia posible en las consultas en memoria, y DiskANN cuando los vectores ya no quepan en absoluto en RAM.
Los tres agrupan vectores de la misma manera; se diferencian en cómo se almacenan los vectores dentro de los clústeres. « IVF_FLAT » conserva vectores flotantes sin procesar (mejor recuperación). « IVF_SQ8 » cuantifica cada dimensión a 8 bits, reduciendo la memoria aproximadamente 4 veces con una pequeña pérdida de recuperación. « IVF_PQ » sustituye los vectores por códigos cortos de cuantificación por producto para obtener la mayor compresión y la mayor pérdida de recuperación.
Una regla empírica habitual es que « nlist » = 4 × √(N) para N vectores; a continuación, ajuste « nprobe » en el momento de la consulta. Un « nprobe » mayor escanea más clústeres: mayor recuperación, mayor latencia. Empiece por unos valores de « nlist » /16 y aumente hasta que la recuperación en un conjunto de consultas retenido alcance su objetivo.
Debido a los límites de los clústeres. Si la consulta se sitúa cerca del borde de un clúster, algunos de sus verdaderos vecinos pueden encontrarse en un clúster adyacente que no se encontraba entre los clústeres nprobe analizados. Esto se puede observar en la visualización arrastrando el punto de consulta cerca de un límite con nprobe = 1.
Con la misma precisión de recuperación, « HNSW » suele ser más rápido para la búsqueda en memoria, pero consume más memoria y se compila más lentamente. « IVF » se compila rápidamente y combina bien con la cuantificación (SQ8/PQ) cuando la memoria es escasa. Para conjuntos de datos que superen por completo RAM, considera utilizar DiskANN en su lugar.
Más información: lee la documentación de «IVF_FLAT » sobre los parámetros de índice, o consulta «Index Explained» para obtener la guía de decisión completa.
Observa paso a paso la búsqueda en grafos multicapa, desde los saltos de autopista hasta los recorridos locales.
Descubre cómo PQ-in-RAM + full-vectors-on-SSD te permite buscar en conjuntos de datos de miles de millones de registros desde un portátil.
Arrastra un punto de consulta y alterna entre « L2 », «Cosine» y « IP » para ver cómo cambia el «más cercano».