En esta página se detallan las funciones y las limitaciones de la búsqueda vectorial.
Disponibilidad
La búsqueda vectorial está disponible en todas las versiones de Memorystore for Redis Cluster en todos los niveles y en todas las regiones admitidas.
Solo las instancias creadas después de la fecha de lanzamiento (13 de septiembre del 2024) tienen habilitada la búsqueda vectorial.
Restricciones de los índices
A continuación, se describen las limitaciones del índice:
- El número máximo de atributos de un índice no puede superar los 10.
- La dimensión de un vector no puede superar los 32.768.
- El valor de M de HNSW no debe superar 2M.
- El valor de EF Construct de HNSW no debe superar los 4096.
- El valor de tiempo de ejecución de EF de HNSW tampoco debe superar los 4096.
Impacto en el rendimiento
Al analizar el rendimiento de la búsqueda vectorial, hay algunas variables importantes que se deben tener en cuenta.
Tipo de nodo
La búsqueda de vectores facilita el escalado vertical mediante la integración de grupos de subprocesos dedicados a ejecutar operaciones de búsqueda de vectores. Esto significa que el rendimiento estará vinculado al número de vCPUs de cada nodo de tu clúster. Para obtener información sobre el número de vCPUs disponibles en cada tipo de nodo, consulta las especificaciones de clústeres y nodos.
Número de fragmentos
Memorystore for Redis Cluster implementa una técnica de indexación local para todos los vectores. Esto significa que el índice almacenado en cada fragmento solo contiene los documentos incluidos en ese fragmento. Por este motivo, la velocidad de indexación y el número total de vectores se escalarán linealmente con el número de fragmentos del clúster.
Como cada índice local solo contiene el contenido de un único fragmento, para buscar en el clúster es necesario buscar en cada fragmento del clúster y agregar los resultados. Si el número de vectores es estable, aumentar el número de particiones mejorará el rendimiento de la búsqueda de forma logarítmica en los índices HNSW y de forma lineal en los índices FLAT, ya que cada índice local contendrá menos vectores.
Ten en cuenta que, debido al mayor volumen de trabajo necesario para buscar en todos los fragmentos, la latencia observable para completar una solicitud de búsqueda determinada puede aumentar a medida que se añadan más fragmentos. A pesar de esto, incluso los clústeres más grandes admiten latencias de un solo dígito en milisegundos.
Número de réplicas
Si añades réplicas adicionales, el rendimiento de la búsqueda aumentará de forma lineal, ya que se podrá balancear la carga de las solicitudes de búsqueda en las réplicas de lectura.
Escalar eventos
Al cambiar el tamaño de tu clúster de Redis, los documentos de tus índices se moverán para distribuir los datos de forma uniforme entre el nuevo número de particiones. Cuando esto ocurre, los documentos que se mueven entre nodos se indexan en segundo plano. Una vez que se haya completado la operación de escalado, puedes monitorizar el valor de mutation_queue_size
en el resultado de FT.INFO para ver el progreso de la reindexación debido al cambio de tamaño del clúster.
Consumo de memoria
Los vectores se duplican y se almacenan tanto en el espacio de claves de Redis como en el algoritmo de búsqueda vectorial.
Transacciones
Debido a la naturaleza asíncrona de la ejecución de tareas por parte de los grupos de subprocesos, las operaciones de búsqueda vectorial no se ajustan a la semántica transaccional.