FT.CREATE

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 nome alias 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ão 1-32768.

        • TYPE (obrigatório): o tipo de vetor. Apenas FLOAT32 é suportado.

        • DISTANCE_METRIC (obrigatório): tem de ser um dos seguintes valores: L2, IP ou COSINE.

      • 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. Apenas FLOAT32 é suportado.

        • DISTANCE_METRIC (obrigatório): tem de ser um dos seguintes valores: L2, IP ou COSINE.

      • 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