O FT.CREATE
cria um índice pesquisável. Com o Memorystore for Redis Cluster, os índices são criados ao nível do cluster. A criação de um índice em qualquer nó faz com que o índice seja criado em todos os nós no cluster.
Sintaxe
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
(obrigatório): este é o nome que atribui ao seu índice. Se já existir um índice com o mesmo nome, é devolvido um erro.ON HASH
(opcional): indica o tipo de dados HASH. Apenas o tipo de dados HASH é suportado.PREFIX [count] [prefix]
(opcional): indica as chaves hash a indexar.SCHEMA hash_field_name
(obrigatório): o hash_field_name após SCHEMA identifica o nome do campo no hash.[AS alias]
atribui o nomealias
como um alias para o atributo de nome do campo.
Tipos de campos
VECTOR
(obrigatório): campo de vetor para a pesquisa vetorial:[HNSW|FLAT]
(obrigatório): algoritmo designado.FLAT
(força bruta) ou HNSW (Hierarchical Navigable Small World).attribute_count
(obrigatório): contagem total de atributos de nomes e valores transmitidos na configuração do algoritmo.attribute_name attribute_value
: pares de chave-valor que definem a configuração do índice, mas são específicos de um dos dois algoritmos disponíveis.Atributos do algoritmo HNSW obrigatórios:
DIM
(obrigatório): contagem de dimensões vetoriais. Os valores aceites são1
-32768
.TYPE
(obrigatório): o tipo de vetor. ApenasFLOAT32
é suportado.DISTANCE_METRIC
(obrigatório): tem de ser um dos seguintes valores:L2
,IP
ouCOSINE
.
Atributos opcionais do algoritmo HNSW:
EF_RUNTIME
(opcional): define a quantidade de vetores a serem examinados durante uma operação de consulta. A predefinição é10
e o máximo é4096
. Pode definir este valor de parâmetro para cada consulta que executar. Os valores mais elevados aumentam os tempos de consulta, mas melhoram a capacidade de memorização das consultas.M
(opcional): a contagem do número máximo de arestas de saída permitidas para cada nó no gráfico em cada camada. O número máximo de arestas de saída é de 2 milhões para a camada 0. A predefinição é 16. O máximo é 512.EF_CONSTRUCTION
(opcional): define a contagem de vetores a serem examinados durante a criação do índice. A predefinição é200
e o máximo é4096
. Os valores mais elevados aumentam o tempo necessário para criar índices, mas melhoram a taxa de recordação.INITIAL_CAP
(opcional): determina a capacidade do vetor inicial do índice. A predefinição é1024
. Este parâmetro determina a atribuição de memória do índice.
Atributos do algoritmo FLAT obrigatórios:
DIM
(obrigatório): contagem de dimensões vetoriais.TYPE
(obrigatório): o tipo de vetor. ApenasFLOAT32
é suportado.DISTANCE_METRIC
(obrigatório): tem de ser um dos seguintes valores:L2
,IP
ouCOSINE
.
Atributos do algoritmo FLAT opcionais:
INITIAL_CAP
(opcional): determina a capacidade do vetor inicial do índice. Este parâmetro determina a atribuição de memória do índice.
NUMERIC
(opcional) – Campo numérico para pesquisa numérica.TAG
(opcional) – Campo de etiqueta para pesquisa baseada em TAG.SEPARATOR
(opcional): um caráter usado para dividir a string de etiquetas em etiquetas individuais. A opção predefinida é,
. O valor especificado tem de ser um caráter singular. Por exemplo, a string de etiqueta "olá, mundo" é interpretada como "olá" e "mundo" e é indexada em conformidade. Os valores permitidos são,.<>{}[]"':;!@#$%^&*()-+=~
CASESENSITIVE
(opcional): indica a sensibilidade a maiúsculas e minúsculas dos campos de etiquetas. Por predefinição, as etiquetas não são sensíveis a maiúsculas e minúsculas. Uma string de etiqueta "HeLLo" é indexada como "hello" e uma consulta para "Hello" e "HeLlo" produz o mesmo resultado.
Notas
No comando FT.CREATE, os índices VECTOR, NUMERIC e TAG podem aparecer em qualquer sequência.
Só é possível indexar um campo uma vez. No exemplo fornecido, o campo
my_vector_field_key
não pode ser repetido no mesmo índice.Num único comando FT.CREATE, é possível indexar um máximo de 10 campos.
Por predefinição, as etiquetas não são sensíveis a maiúsculas e minúsculas.
Por predefinição, as etiquetas são delimitadas por
,
.As consultas individuais em consultas numéricas e de etiquetas não são suportadas. Estes campos só podem ser usados juntamente com pesquisas baseadas em vetores.
Exemplos
Exemplo 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
Exemplo 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
Exemplo de HNSW com um 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
Exemplo de HNSW com um 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
Exemplo de HNSW com uma etiqueta e um 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
Exemplo de HNSW com vários campos numéricos e 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