FT.CREATE
crea un índice que se puede buscar. Con Memorystore para Valkey, los índices se crean a nivel del clúster. Crear 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 un índice con el mismo ya existe, se muestra un error.ON HASH
(opcional): Indica el tipo de datos HASH. Solo el tipo de datos HASH no es compatible.PREFIX [count] [prefix]
(opcional): Indica qué claves hash se deben indexar.SCHEMA hash_field_name
(obligatorio): hash_field_name después de SCHEMA identifica el nombre del campo en el hash.[AS alias]
asigna el nombrealias
como un alias para el nombre de campo.
Tipos de campo
VECTOR
(obligatorio): Campo vectorial para la búsqueda vectorial:[HNSW|FLAT]
(obligatorio): Es el algoritmo designado. Ya seaFLAT
(fuerza bruta) o HNSW (mundo pequeño navegable jerárquico).attribute_count
(obligatorio): Recuento total de atributos de nombres y valores pasado 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): Es el recuento de dimensiones del vector. Los valores aceptados son1
-32768
.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 consulta. El valor predeterminado es10
y el máximo es4096
. Puedes establecer este valor del parámetro para cada consulta que ejecutes. Los valores más altos aumentan los tiempos de consulta, pero mejoran la recuperación de consultas.M
(opcional): Es el recuento de bordes salientes máximos permitidos para cada nodo en el gráfico en cada capa. La cantidad máxima de aristas salientes es 2 M para la capa 0. El valor predeterminado es 16. La cantidad máxima 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 del vector inicial del índice. El valor predeterminado es1024
. Este parámetro determina la asignación de memoria de índice.
Atributos obligatorios del algoritmo FLAT:
DIM
(obligatorio): Es el 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 del vector inicial del índice. Este parámetro determina la asignación de memoria de índice.
NUMERIC
(opcional): Es un campo numérico para la búsqueda numérica.TAG
(opcional): Campo de etiqueta para la búsqueda basada en TAG.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 singular. Por ejemplo, la etiqueta de cadena "hello, world" se interpretará como "hola" y "mundo" y, luego, se indexarán según corresponda. Los valores permitidos son,.<>{}[]"':;!@#$%^&*()-+=~
.CASESENSITIVE
(opcional): Indica si los campos de etiqueta distinguen mayúsculas de minúsculas. De forma predeterminada, las etiquetas no distinguen mayúsculas de minúsculas. Una cadena de etiqueta "HeLLo" se indexarán como “hola”, y una consulta para "Hello" y "HeLlo" producirá 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 pueden indexar un máximo de 10 campos.
De forma predeterminada, las TAG no distinguen mayúsculas de minúsculas.
De forma predeterminada, las TAG están delimitadas por
,
.No se admiten las consultas individuales en las búsquedas de etiquetas o numéricas. Estos campos solo se pueden utilizar junto con 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 anuncios 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 varias etiquetas y campos numéricos:
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