O FT.CREATE cria um índice pesquisável. Com o Memorystore for Redis Cluster, os índices são criados no nível do cluster. A criação de um índice em qualquer nó causa a criação do índice em todos os nós do 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): o nome que você dá ao índice. Se um índice com o mesmo nome já existir, um erro será retornado.ON HASH(opcional): indica o tipo de dados HASH. Somente o tipo de dados HASH é compatível.PREFIX [count] [prefix](opcional): indica quais chaves de hash 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 nomealiascomo um alias para o atributo "nome do campo".
Tipos de campo
VECTOR(obrigatório): campo de vetor para 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 obrigatórios do algoritmo HNSW:
DIM(obrigatório): contagem de dimensões do vetor. Os valores aceitos são1-32768.TYPE(obrigatório): o tipo de vetor. SomenteFLOAT32é aceito.DISTANCE_METRIC(obrigatório): precisa ser um dos seguintes:L2,IPouCOSINE.
Atributos opcionais do algoritmo HNSW:
EF_RUNTIME(opcional): define a contagem de vetores a serem examinados durante uma operação de consulta. O padrão é10, e o máximo é4096. É possível definir esse valor de parâmetro para cada consulta executada. Valores mais altos aumentam os tempos de consulta, mas melhoram o recall.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 é 2 milhões para a camada 0. O padrão é 16. O máximo é 512.EF_CONSTRUCTION(opcional): define a contagem de vetores a serem examinados durante a construção do índice. O padrão é200, e o máximo é4096. Valores mais altos aumentam o tempo necessário para criar índices, mas melhoram a taxa de recall.INITIAL_CAP(opcional): determina a capacidade inicial do vetor do índice. O padrão é1024. Esse parâmetro determina a alocação de memória do índice.
Atributos obrigatórios do algoritmo FLAT:
DIM(obrigatório): contagem de dimensões do vetor.TYPE(obrigatório): o tipo de vetor. SomenteFLOAT32é aceito.DISTANCE_METRIC(obrigatório): precisa ser um dos seguintes:L2,IPouCOSINE.
Atributos opcionais do algoritmo FLAT:
INITIAL_CAP(opcional): determina a capacidade inicial do vetor do índice. Esse parâmetro determina a alocação de memória do índice.
NUMERIC(opcional): campo numérico para pesquisa numérica.TAG(opcional): campo de tag para pesquisa baseada em TAG.SEPARATOR(opcional): um caractere usado para dividir a string de tag em tags individuais. A opção padrão é,. O valor especificado precisa ser um caractere único. Por exemplo, a string de tag "hello, world" será interpretada como "hello" e "world" e indexada de acordo. Os valores permitidos são,.<>{}[]"':;!@#$%^&*()-+=~CASESENSITIVE(opcional): indica se os campos de tag diferenciam maiúsculas de minúsculas. Por padrão, as tags não diferenciam maiúsculas de minúsculas. Uma string de tag "HeLLo" será indexada como "hello", e uma consulta por "Hello" e "HeLlo" vai gerar o mesmo resultado.
Observações
No comando FT.CREATE, os índices VECTOR, NUMERIC e TAG podem aparecer em qualquer sequência.
Um campo só pode ser indexado uma vez. No exemplo fornecido, o campo
my_vector_field_keynão pode ser repetido no mesmo índice.Em um único comando FT.CREATE, é possível indexar no máximo 10 campos.
Por padrão, as TAGs não diferenciam maiúsculas de minúsculas.
Por padrão, as tags são delimitadas por
,.Não há suporte para consultas individuais em tags e consultas numéricas. Esses campos só podem ser usados 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 tag:
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 tag 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 tag:
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