FT.CREATE
crea un índice en el que se pueden realizar búsquedas. Con Memorystore for Redis Cluster, los índices se crean a nivel del clúster. La creación de un índice en cualquier nodo provocará la creación del índice en todos los nodos del clúster.
Sintaxis
FT.CREATE index ON HASH [PREFIX count prefix [prefix ...]] SCHEMA field_name [AS alias] VECTOR [HNSW|FLAT] attribute_count [attribute_name attribute_value] [field_name [AS alias] NUMERIC] [field_name [AS alias] TAG [SEPARATOR ...] [CASESENSITIVE]]
index
(obligatorio): Es el nombre que le asignas a tu índice. Si ya existe un índice con el mismo nombre, se muestra un error.ON HASH
(opcional): Indica el tipo de datos HASH. Solo se admite el tipo de datos HASH.PREFIX [count] [prefix]
(opcional): Indica qué claves de hash se deben indexar.SCHEMA hash_field_name
(obligatorio): El hash_field_name después de SCHEMA identifica el nombre del campo en el hash.[AS alias]
asigna el nombrealias
como alias para el atributo de nombre de campo.
Tipos de campo
VECTOR
(obligatorio): Campo de vector para la búsqueda de vectores:[HNSW|FLAT]
(obligatorio): Es el algoritmo designado. Puede serFLAT
(fuerza bruta) o HNSW (Hierarchical Navigable Small World).attribute_count
(obligatorio): Es el recuento total de atributos de los nombres y los valores que se pasan en la configuración del algoritmo.attribute_name attribute_value
: Son pares clave-valor que definen la configuración del índice, pero son específicos de uno de los dos algoritmos disponibles.Atributos obligatorios del algoritmo HNSW:
DIM
(obligatorio): Recuento de dimensiones del vector. Los valores aceptados son1
a32768
.TYPE
(obligatorio): Es el tipo de vector. Solo se admiteFLOAT32
.DISTANCE_METRIC
(obligatorio): Debe ser uno de los siguientes:L2
,IP
oCOSINE
.
Atributos opcionales del algoritmo HNSW:
EF_RUNTIME
(opcional): Establece el recuento de vectores que se examinarán durante una operación de búsqueda. El valor predeterminado es10
y el máximo es4096
. Puedes establecer el valor de este parámetro para cada búsqueda que ejecutes. Los valores más altos aumentan los tiempos de consulta, pero mejoran la recuperación de la consulta.M
(opcional): Es el recuento de la cantidad máxima de aristas salientes permitidas para cada nodo del gráfico en cada capa. La cantidad máxima de aristas salientes es de 2 millones para la capa 0. El valor predeterminado es 16. El máximo es 512.EF_CONSTRUCTION
(opcional): Establece el recuento de vectores que se examinarán durante la construcción del índice. El valor predeterminado es200
y el máximo es4096
. Los valores más altos aumentan el tiempo necesario para crear índices, pero mejoran la proporción de recuperación.INITIAL_CAP
(opcional): Determina la capacidad inicial del vector del índice. El valor predeterminado es1024
. Este parámetro determina la asignación de memoria del índice.
Atributos obligatorios del algoritmo FLAT:
DIM
(obligatorio): Recuento de dimensiones del vector.TYPE
(obligatorio): Es el tipo de vector. Solo se admiteFLOAT32
.DISTANCE_METRIC
(obligatorio): Debe ser uno de los siguientes:L2
,IP
oCOSINE
.
Atributos opcionales del algoritmo FLAT:
INITIAL_CAP
(opcional): Determina la capacidad inicial del vector del índice. Este parámetro determina la asignación de memoria del índice.
NUMERIC
(opcional): Campo numérico para la búsqueda numérica.TAG
(opcional): Es el campo de etiqueta para la búsqueda basada en etiquetas.SEPARATOR
(opcional): Es un carácter que se utiliza para dividir la cadena de etiquetas en etiquetas individuales. La opción predeterminada es,
. El valor especificado debe ser un carácter único. Por ejemplo, la cadena de etiquetas "hola, mundo" se interpretará como "hola" y "mundo", y se indexará en consecuencia. Los valores permitidos son,.<>{}[]"':;!@#$%^&*()-+=~
.CASESENSITIVE
(opcional): Indica si los campos de etiquetas distinguen mayúsculas de minúsculas. De forma predeterminada, las etiquetas no distinguen mayúsculas de minúsculas. La cadena de etiquetas "HeLLo" se indexará como "hello", y una búsqueda de "Hello" y "HeLlo" arrojará el mismo resultado.
Notas
Dentro del comando FT.CREATE, los índices VECTOR, NUMERIC y TAG pueden aparecer en cualquier secuencia.
Un campo solo se puede indexar una vez. En el ejemplo proporcionado, el campo
my_vector_field_key
no se puede repetir dentro del mismo índice.En un solo comando FT.CREATE, se puede indexar un máximo de 10 campos.
De forma predeterminada, las etiquetas no distinguen entre mayúsculas y minúsculas.
De forma predeterminada, las etiquetas se delimitan con
,
.No se admiten las consultas individuales sobre etiquetas ni las consultas numéricas. Estos campos solo se pueden utilizar junto con las búsquedas basadas en vectores.
Ejemplos
Ejemplo de HNSW:
FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100
Ejemplo de FLAT:
FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR Flat 8 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE INITIAL_CAP 15000
Ejemplo de HNSW con un campo numérico:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_numeric_field_key NUMERIC
Ejemplo de HNSW con un campo de etiqueta:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE
Ejemplo de HNSW con una etiqueta y un campo numérico:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key NUMERIC
Ejemplo de HNSW con varios campos numéricos y de etiquetas:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key_1 TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key_1 NUMERIC my_numeric_field_key_2 NUMERIC my_tag_field_key_2 TAG