Este documento explica cómo configurar los ajustes generales y avanzados de un índice vectorial al crear una tabla, con el fin de cumplir con los requisitos de rendimiento, costo y tiempo real de su escenario empresarial.
Parámetros
Durante el paso 4 de la creación de la tabla, puede configurar los ajustes detallados de sus campos vectoriales en la sección Index Schema.
Dimensión del vector
Propósito: Define el número de características en un vector. Este valor debe coincidir exactamente con la dimensión de salida de su modelo de embedding.
-
Recomendaciones:
Asegúrese de mantener la coherencia: Si la dimensión configurada no coincide con la dimensión de los datos vectoriales escritos, la compilación del índice fallará.
Impacto en el rendimiento: Las dimensiones más altas permiten que los vectores representen más información, pero también incrementan el uso de memoria y la sobrecarga computacional. Duplicar la dimensión duplica aproximadamente el uso de memoria.
Tipo de distancia
Propósito: Define el método para calcular la similitud entre vectores. Elegir un tipo de distancia adecuado es fundamental para la calidad de la recuperación y depende de las características de sus datos y de su escenario empresarial.
-
Guía de selección:
Tipo de distancia
Descripción de la puntuación
Distancia coseno
Las puntuaciones oscilan entre
[-1, 1], donde valores más altos indican mayor similitud. Una puntuación de1significa que los vectores son idénticos, mientras que-1indica que apuntan en direcciones opuestas.Distancia de producto interno
Puntuaciones más altas indican mayor similitud.
Distancia euclidiana al cuadrado
Puntuaciones más bajas indican mayor similitud. Una puntuación de
0significa que los vectores son idénticos.
Algoritmo de índice vectorial
Propósito: Selecciona el algoritmo subyacente para compilar el índice vectorial. Los distintos algoritmos ofrecen diferentes equilibrios entre velocidad de compilación del índice, uso de memoria, rendimiento de consultas y recall.
-
Guía de selección:
Algoritmo
Descripción
Tipo de distancia
Escala de datos
Recall
Latencia
Uso de memoria
Caso de uso principal
FLAT
(anteriormente Linear)
-
Escala vectorial: Adecuado para decenas de miles de vectores.
-
Escenario: Casos que requieren precisión absoluta de los datos (100 % de recall).
Inner Product, Squared Euclidean, Cosine
Muy pequeña (< 10k)
Decenas de miles
100% (Exacto)
Muy alta
Muy bajo
Evaluación comparativa; reordenamiento exacto en conjuntos de datos muy pequeños.
HNSW
-
Escala vectorial: Adecuado para decenas de millones de vectores.
-
Escenario: Opción de alto rendimiento para casos de uso con requisitos estrictos de precisión y baja latencia.
Inner Product, Squared Euclidean, Cosine
Media (10M+)
Decenas de millones
Muy alto
Baja
Muy alto
Recuperación en línea y en memoria de alto rendimiento.
HNSW_RaBitQ
-
Escala vectorial: Adecuado para conjuntos de datos a escala de miles de millones.
-
Escenario: Ideal para conjuntos de datos masivos con restricciones estrictas de memoria donde es aceptable sacrificar cierta precisión.
Squared Euclidean
Grande (100M+)
Cientos de millones
Alto
Muy baja
Muy bajo
Recuperación ligera optimizada con cuantización binaria.
CagraHNSW
-
Escala vectorial: Adecuado para cientos de millones de vectores.
-
Escenario: Potente opción basada en GPU para indexación de grafos, utilizada frecuentemente con múltiples GPU para conjuntos de datos de cientos de millones de registros.
Inner Product, Squared Euclidean
Grande (100M+)
Cientos de millones
Muy alto
Muy baja (GPU)
Muy alto
Búsqueda acelerada por GPU para escenarios de alto throughput.
HNSW_SQ
(anteriormente QGraph)
-
Escala vectorial: Adecuado para conjuntos de datos a escala de miles de millones.
-
Escenario: Para casos de uso que requieren alto rendimiento de consultas y baja latencia, donde los requisitos de precisión son menos estrictos.
Inner Product, Squared Euclidean, Cosine
Muy grande (1B+)
Escala de miles de millones
Alto
Baja
Alto
IVF_SQ8
-
Escala vectorial: Adecuado para cientos de millones de vectores.
-
Escenario: Enfoque tradicional y equilibrado cuando los requisitos de precisión y latencia son moderados.
Inner Product, Squared Euclidean, Cosine
Grande (~500M)
Escala de 500 millones
Medio a alto
Media
Bajo
Solución clásica y rentable para grandes conjuntos de datos que utiliza compresión vectorial para reducir el uso de memoria. Ideal para equilibrar costo y escala, especialmente con niveles de datos fríos y calientes.
DiskANN
-
Escala vectorial: Diseñado para la máxima escala, capaz de manejar conjuntos de datos de mil millones de vectores o más.
-
Escenario: Utiliza discos locales, por lo que resulta adecuado para escenarios donde se acepta una latencia mayor y el uso de memoria debe ser mínimo.
Inner Product, Squared Euclidean, Cosine
Masiva (1B+)
Más de mil millones
Alto
Media a alta
Muy bajo
Búsqueda residente en disco para conjuntos de datos a ultra gran escala.
-
Indexación en tiempo real
Propósito: Cuando está habilitada, los datos escritos incrementalmente se indexan y están disponibles para búsqueda en cuestión de segundos.
Funcionamiento: El sistema primero construye un índice temporal en memoria para las escrituras de datos en tiempo real. Una vez que este índice temporal alcanza un tamaño determinado, el sistema fusiona sus datos con el índice completo en disco.
-
Recomendaciones:
Habilitar (
true): Recomendado para servicios en línea que requieren que los datos sean buscables inmediatamente después de su escritura. Esta opción consume una pequeña cantidad adicional de recursos de memoria y CPU.Deshabilitar (
false): Adecuado para análisis sin conexión o para datos que no se actualizan frecuentemente tras una importación completa.
Configuración avanzada
Umbral de compilación lineal
Propósito: Cuando el número de vectores en un shard está por debajo de este umbral, el sistema realiza una búsqueda por fuerza bruta mediante el algoritmo
FLAT, ignorando el algoritmo de índice vectorial seleccionado.-
Recomendaciones:
Valor predeterminado:
5000. Para conjuntos de datos de este tamaño, una búsqueda por fuerza bruta suele tener un rendimiento igual o superior al de un índice complejo debido a la menor sobrecarga de compilación.Cuándo ajustarlo: Por lo general, no es necesario modificar este valor. Sin embargo, si tiene una concurrencia de consultas muy alta y el volumen de datos se acerca al umbral, puede reducir este valor para forzar el uso de un índice de alto rendimiento como
HNSW. Esto podría incrementar la sobrecarga de compilación del índice.
Ignorar datos vectoriales no válidos
Propósito: Controla cómo maneja el sistema los vectores no válidos (por ejemplo, discrepancias de dimensión o valores nulos) encontrados durante la compilación completa o incremental del índice.
-
Recomendaciones:
Opción
Comportamiento
Caso de uso recomendado
trueEl sistema omite cualquier fila con un vector no válido, registra una advertencia y continúa con la tarea de compilación del índice.
Desarrollo y pruebas. Permite depurar rápidamente al evitar que unos pocos registros defectuosos provoquen el fallo de toda la tarea de compilación.
falseSi el sistema encuentra algún vector no válido, la tarea de compilación del índice falla inmediatamente y devuelve un error.
Entorno de producción. Garantiza la calidad de los datos y evita la pérdida silenciosa de información. Se recomienda utilizar esta configuración junto con un pipeline robusto de limpieza de datos ascendente.
Parámetros de indexación en tiempo real
Propósito: Cuando la indexación en tiempo real está habilitada, estos parámetros ajustan el procesamiento del flujo de datos en tiempo real.
Ejemplo de parámetro:
{"proxima.oswg.streamer.segment_size":2048}Explicación del parámetro:
proxima.oswg.streamer.segment_sizecontrola cuántos registros en tiempo real se acumulan en memoria antes de volcarlos en un pequeño segmento en memoria.-
Recomendaciones de ajuste:
Escenarios de alto QPS de escritura: Aumente este valor (por ejemplo, a
4096) para reducir el número de segmentos en memoria y disminuir la sobrecarga de gestión del índice. Esto incrementa ligeramente la latencia desde la escritura hasta la búsqueda.Escenarios de bajo QPS de escritura: Mantenga el valor predeterminado de
2048o redúzcalo para que los datos recién escritos estén disponibles para búsqueda más rápidamente.
Parámetros de recuperación en tiempo real
Propósito: Ajusta dinámicamente el comportamiento de búsqueda del algoritmo de índice al momento de la consulta para equilibrar el recall y la latencia. Las claves y valores de este parámetro varían según el algoritmo de índice vectorial seleccionado.
Descripción general: Estos parámetros suelen controlar el alcance de la búsqueda. Por ejemplo, con el algoritmo
HNSW, el parámetroefcontrola el número de nodos vecinos que se recorren durante una búsqueda. Un valor mayor deefaumenta el recall, pero también incrementa la latencia de la consulta.-
Ejemplo de configuración (HNSW):
{"searcher_name":"HNSW", "ef":200}El valor de
efgeneralmente oscila entrek(el número de resultados principales a devolver) y4096; un buen valor inicial es100, que puede ajustar según sus requisitos empresariales de recall y latencia.
Separador de vectores
Propósito: Define el separador utilizado entre los valores de dimensión en datos vectoriales con formato de cadena.
Ejemplo: Para los datos vectoriales
1.05,0.15,0.14, el separador es una coma (,), que es el valor predeterminado del sistema. Por lo general, no es necesario cambiar esta configuración.
Control del volumen de escritura y planificación de recursos
El volumen de escritura de datos vectoriales afecta directamente el consumo de memoria de procesamiento de datos y el rendimiento de las consultas. Controle el ritmo de escritura y asigne recursos suficientes para evitar que la latencia de las consultas aumente debido a una memoria de procesamiento insuficiente.
Control del volumen de escritura
Limite el tamaño del lote: Evite escribir demasiados documentos en un solo lote. Divida los datos en lotes más pequeños según la dimensión de sus vectores y el tipo de instancia para prevenir picos repentinos en el uso de memoria de procesamiento de datos.
Controle la frecuencia de escritura: Para escenarios de escritura de alta frecuencia, considere reducir la concurrencia de escritura o aumentar el intervalo entre lotes. Esto proporciona tiempo suficiente para la compilación del índice y la fusión de segmentos.
Supervise la memoria de procesamiento de datos: Si el uso de memoria de procesamiento permanece alto después de las escrituras, incluso cuando hay suficiente memoria general disponible en la instancia, esto indica una alta sobrecarga de memoria por la compilación del índice o la fusión de segmentos. En este caso, reduzca la tasa de escritura y espere a que finalicen las operaciones de fusión antes de reanudar.
Evaluación de recursos y escalado
Si experimenta insuficiencia de memoria de procesamiento de datos o un aumento notable en la latencia de las consultas, evalúe si su tipo de instancia actual satisface sus requisitos empresariales.
Utilice la Specification Calculator e introduzca sus parámetros empresariales, como la dimensión del vector, el volumen de datos y el QPS, para obtener un tipo de instancia recomendado.
Si la calculadora indica que su tipo de instancia actual es insuficiente, actualice los recursos de memoria y cómputo de sus nodos de datos cambiando la configuración de la instancia.