PÉS. CREATE - Amazon MemoryDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

PÉS. CREATE

Cria um índice e inicia um preenchimento desse índice. Para obter mais informações, consulte Visão geral da pesquisa vetorial para obter detalhes sobre a construção do índice.

Sintaxe

FT.CREATE <index-name> ON HASH | JSON [PREFIX <count> <prefix1> [<prefix2>...]] SCHEMA (<field-identifier> [AS <alias>] NUMERIC | TAG [SEPARATOR <sep>] [CASESENSITIVE] | TEXT | VECTOR [HNSW|FLAT] <attr_count> [<attribute_name> <attribute_value>]) )+

Esquema

  • Identificador de campo:

    • Para chaves de hash, o identificador de campo é um nome de campo.

    • Para JSON chaves, o identificador de campo é Um JSON caminho.

    Para obter mais informações, consulte Tipos de campos de índice.

  • Tipos de campos:

    • TAG: Para obter mais informações, consulte Tags.

    • NUMERIC: O campo contém um número.

    • TEXT: o campo contém qualquer bolha de dados.

    • VECTOR: campo vetorial que oferece suporte à pesquisa vetorial.

      • Algoritmo — pode ser HNSW (Hierarchical Navigable Small World) ou FLAT (força bruta).

      • attr_count: número de atributos que serão passados como configuração do algoritmo, incluindo nomes e valores.

      • {attribute_name} {attribute_value}: pares de chave/valor específicos do algoritmo que definem a configuração do índice.

        Para FLAT algoritmo, os atributos são:

        Obrigatório:

        • DIM— Número de dimensões no vetor.

        • DISTANCE_ METRIC — Pode ser um dos [L2 | IP |COSINE].

        • TYPE— Tipo vetorial. O único tipo com suporte é FLOAT32.

        Opcional:

        • INITIAL_ CAP — Capacidade vetorial inicial no índice que afeta o tamanho da alocação de memória do índice.

        Para HNSW algoritmo, os atributos são:

        Obrigatório:

        • TYPE— Tipo vetorial. O único tipo com suporte é FLOAT32.

        • DIM— Dimensão vetorial, especificada como um número inteiro positivo. Máximo: 32768

        • DISTANCE_ METRIC — Pode ser um dos [L2 | IP |COSINE].

        Opcional:

        • INITIAL_ CAP — Capacidade vetorial inicial no índice que afeta o tamanho da alocação de memória do índice. O padrão é 1024.

        • M: número máximo de bordas de saída permitidas para cada nó no gráfico em cada camada. Na camada zero, o número máximo de bordas de saída será 2M. O padrão é 16 e o máximo é 512.

        • EF_ CONSTRUCTION — controla o número de vetores examinados durante a construção do índice. Valores mais altos para esse parâmetro melhorarão a taxa de recall às custas de tempos mais longos de criação do índice. O valor padrão é 200. O valor máximo é 4096.

        • EF_ RUNTIME — controla o número de vetores examinados durante as operações de consulta. Valores mais altos para esse parâmetro podem gerar melhor recuperação à custa de tempos de consulta mais longos. O valor desse parâmetro pode ser substituído para cada consulta. O valor padrão é 10 O valor máximo é 4096.

Return

Retorna uma mensagem simples de texto OK ou uma resposta de erro.

Exemplos

nota

O exemplo a seguir usa argumentos nativos de valkey-cli, como remoção de cotações e remoção de escape de dados, antes de enviá-los para Valkey ou Redis. OSS Para usar outros clientes de linguagem de programação (Python, Ruby, C# etc.), siga as regras de manipulação desses ambientes para lidar com strings e dados binários. Para obter mais informações sobre clientes compatíveis, consulte Ferramentas para desenvolver AWS

exemplo 1: Crie alguns índices

Crie um índice para vetores de tamanho 2

FT.CREATE hash_idx1 ON HASH PREFIX 1 hash: SCHEMA vec AS VEC VECTOR HNSW 6 DIM 2 TYPE FLOAT32 DISTANCE_METRIC L2 OK

Crie um JSON índice de 6 dimensões usando o HNSW algoritmo:

FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
exemplo Exemplo 2: preencher alguns dados

Os comandos a seguir são formatados para que possam ser executados como argumentos para o programa de terminal redis-cli. Os desenvolvedores que usam clientes de linguagem de programação (como Python, Ruby, C# etc.) precisarão seguir as regras de manipulação do ambiente para lidar com strings e dados binários.

Criando alguns dados de hash e json:

HSET hash:0 vec "\x00\x00\x00\x00\x00\x00\x00\x00" HSET hash:1 vec "\x00\x00\x00\x00\x00\x00\x80\xbf" JSON.SET json:0 . '{"vec":[1,2,3,4,5,6]}' JSON.SET json:1 . '{"vec":[10,20,30,40,50,60]}' JSON.SET json:2 . '{"vec":[1.1,1.2,1.3,1.4,1.5,1.6]}'

Observe o seguinte:

  • As chaves do hash e dos JSON dados têm os prefixos de suas definições de índice.

  • Os vetores estão nos caminhos apropriados das definições do índice.

  • Os vetores de hash são inseridos como dados hexadecimais, enquanto os JSON dados são inseridos como números.

  • Os vetores têm os comprimentos apropriados, as entradas bidimensionais do vetor hash têm dois valores flutuantes de dados hexadecimais, as entradas vetoriais json de seis dimensões têm seis números.

exemplo Exemplo 3: Excluir e recriar um índice
FT.DROPINDEX json_idx1 OK FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR FLAT 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK

Observe que o novo JSON índice usa o FLAT algoritmo em vez do HNSW algoritmo. Observe também que ele reindexará os JSON dados existentes:

FT.SEARCH json_idx1 "*=>[KNN 100 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 3 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]" 6) "json:1" 7) 1) "__VEC_score" 2) "9100" 3) "$" 4) "[{\"vec\":[10.0, 20.0, 30.0, 40.0, 50.0, 60.0]}]"