

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á.

# Comandos de pesquisa vetorial
<a name="vector-search-commands"></a>

Veja a seguir uma lista dos comandos compatíveis com a pesquisa vetorial. 

**Topics**
+ [FT.CREATE](vector-search-commands-ft.create.md)
+ [FT.SEARCH](vector-search-commands-ft.search.md)
+ [FT.AGGREGATE](vector-search-commands-ft.aggregate.md)
+ [FT.DROPINDEX](vector-search-commands-ft.dropindex.md)
+ [FT.INFO](vector-search-commands-ft.info.md)
+ [FT.\$1LIST](vector-search-commands-ft.list.md)
+ [FT.ALIASADD](vector-search-commands-ft.aliasadd.md)
+ [FT.ALIASDEL](vector-search-commands-ft.aliasdel.md)
+ [FT.ALIASUPDATE](vector-search-commands-ft.aliasupdate.md)
+ [FT.\$1ALIASLIST](vector-search-commands-ft.aliaslist.md)
+ [FT.PROFILE](vector-search-commands-ft.profile.md)
+ [FT.EXPLAIN](vector-search-commands-ft.explain.md)
+ [FT.EXPLAINCLI](vector-search-commands-ft.explain-cli.md)

# FT.CREATE
<a name="vector-search-commands-ft.create"></a>

 Cria um índice e inicia um preenchimento desse índice. Para obter mais informações, consulte [Visão geral da pesquisa vetorial](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html) 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 chaves JSON, o identificador de campo é um caminho JSON.

  Para obter mais informações, consulte [Tipos de campos de índice](vector-search-overview.md#vector-search-index-field-types).
+ Tipos de campos:
  + ETIQUETA: para obter mais informações, consulte [Etiquetas](https://redis.io/docs/interact/search-and-query/advanced-concepts/tags/).
  + NUMÉRICO: o campo contém um número.
  + TEXTO: o campo contém qualquer blob de dados.
  + VETOR: campo vetorial que oferece suporte para 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}`— key/value pares específicos de algoritmos que definem a configuração do índice. 

      Para o algoritmo FLAT, os atributos são:

      Obrigatório:
      + DIM: número de dimensões no vetor.
      + DISTANCE\$1METRIC: pode ser um dos [L2 \$1 IP \$1 COSINE].
      + TYPE: Tipo de vetor. O único tipo com suporte é `FLOAT32`.

      Opcional:
      + INITIAL\$1CAP: capacidade vetorial inicial no índice que afeta o tamanho da alocação de memória do índice.

      Para o algoritmo HNSW, os atributos são:

      Obrigatório:
      + TYPE: Tipo de vetor. O único tipo com suporte é `FLOAT32`.
      + DIM: dimensão de vetor, especificada como um número inteiro positivo. Máximo: 32768
      + DISTANCE\$1METRIC: pode ser um dos [L2 \$1 IP \$1 COSINE].

      Opcional:
      + INITIAL\$1CAP: 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\$1CONSTRUCTION: 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\$1RUNTIME: 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 para [valkey-cli](https://valkey.io/topics/cli/), como remoção de aspas e remoção de escape de dados, antes de enviá-los ao Valkey ou Redis OSS. Para usar outros clientes de linguagem de programação (Python, Ruby, C\$1 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](https://aws.amazon.com/developer/tools/)

**Example 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 índice JSON de 6 dimensões usando o algoritmo HNSW:  

```
FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2
OK
```

**Example Exemplo 2: preencha 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 outros clientes de linguagem de programação (Python, Ruby, C\$1 etc.) precisarão seguir as regras de manipulação desses ambientes para lidar com strings e dados binários.  
Criação de 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 dos dados de hash e JSON 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 dados JSON 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.

**Example Exemplo 3: exclua e recrie 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 índice JSON usa o algoritmo `FLAT` em vez do algoritmo `HNSW`. Observe também que ele reindexará os dados JSON 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]}]"
```

# FT.SEARCH
<a name="vector-search-commands-ft.search"></a>

Usa a expressão de consulta fornecida para localizar chaves em um índice. Depois de localizado, o and/or conteúdo da contagem dos campos indexados nessas chaves pode ser retornado. Para obter mais informações, consulte [Expressão de consulta de pesquisa vetorial](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).

Para criar os dados que serão usados nesses exemplos, consulte o comando [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html).

**Sintaxe**

```
FT.SEARCH <index-name> <query>
[RETURN <token_count> (<field-identifier> [AS <alias>])+]
[TIMEOUT timeout] 
[PARAMS <count> <name> <value> [<name> <value>]]
[LIMIT <offset> <count>]
[COUNT]
```
+ RETURN: essa cláusula identifica quais campos de uma chave são retornados. A cláusula AS opcional em cada campo substitui o nome do campo no resultado. Somente campos que foram declarados para esse índice podem ser especificados.
+ LIMIT: <offset><count>: essa cláusula fornece capacidade de paginação, pois somente as chaves que satisfazem os valores de deslocamento e contagem são retornadas. Se ela for omitida, o padrão será “LIMIT 0 10", ou seja, somente um máximo de 10 chaves serão retornadas. 
+ PARAMS: duas vezes o número de pares de valores-chave. Os key/value pares de parâmetros podem ser referenciados de dentro da expressão de consulta. Para obter mais informações, consulte [Expressão de consulta de pesquisa vetorial](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).
+ COUNT: essa cláusula suprime o retorno do conteúdo das chaves, somente o número de chaves é retornado. Ela é um alias para “LIMIT 0 0".

**Return**

Retorna uma matriz ou a resposta de erro.
+ Se a operação for concluída com êxito, retornará uma matriz. O primeiro elemento é o número total de chaves correspondentes à consulta. Os elementos restantes são pares de nome de chave e lista de campos. A lista de campos é outra matriz que compreende pares de nomes e valores de campo. 
+ Se o índice estiver em andamento para preenchimento, o comando retornará imediatamente uma resposta de erro.
+ Se o tempo limite for atingido, o comando retornará uma resposta de erro.

**Exemplo: faça algumas pesquisas**

**nota**  
O exemplo a seguir usa argumentos nativos para [valkey-cli](https://valkey.io/topics/cli/), como remoção de aspas e remoção de escape de dados, antes de enviá-los ao Valkey ou Redis OSS. Para usar outros clientes de linguagem de programação (Python, Ruby, C\$1 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](https://aws.amazon.com/developer/tools/)

**Uma pesquisa de hash**

```
FT.SEARCH hash_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2
1) (integer) 2
2) "hash:0"
3) 1) "__VEC_score"
   2) "0"
   3) "vec"
   4) "\x00\x00\x00\x00\x00\x00\x00\x00"
4) "hash:1"
5) 1) "__VEC_score"
   2) "1"
   3) "vec"
   4) "\x00\x00\x00\x00\x00\x00\x80\xbf"
```

Produz dois resultados, classificados por sua pontuação, que é a distância do vetor de consulta (inserido como hexadecimal).

**Pesquisas JSON**

```
FT.SEARCH json_idx1 "*=>[KNN 2 @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) 2
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]}]"
```

Produz os dois resultados mais próximos, classificados por sua pontuação. Observe que os valores vetoriais JSON são convertidos em flutuantes e o vetor de consulta ainda é um dado vetorial. Observe também que, como o parâmetro `KNN` é 2, há apenas dois resultados. Um valor maior retornará mais resultados:

```
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]}]"
```

# FT.AGGREGATE
<a name="vector-search-commands-ft.aggregate"></a>

Um superconjunto do comando FT.SEARCH, permite um processamento adicional substancial das chaves selecionadas pela expressão de consulta.

**Sintaxe**

```
FT.AGGREGATE index query
  [LOAD * | [count field [field ...]]]
  [TIMEOUT timeout]
  [PARAMS count name value [name value ...]]
  [FILTER expression]
  [LIMIT offset num]  
  [GROUPBY count property [property ...] [REDUCE function count arg [arg ...] [AS name] [REDUCE function count arg [arg ...] [AS name] ...]] ...]] 
  [SORTBY count [ property ASC | DESC [property ASC | DESC ...]] [MAX num]] 
  [APPLY expression AS name]
```
+ Cláusulas FILTER, LIMIT, GROUPBY, SORTBY e APPLY podem ser repetidas várias vezes em qualquer ordem e ser misturadas livremente. São aplicados na ordem especificada com a saída de uma cláusula alimentando a entrada da próxima cláusula.
+ Na sintaxe acima, uma “propriedade” é um campo declarado no comando [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html) para esse índice OU a saída de uma cláusula APPLY ou função REDUCE anterior.
+ A cláusula LOAD é restrita ao carregamento de campos que foram declarados no índice. “LOAD \$1” carregará todos os campos declarados no índice. 
+ As seguintes funções redutoras têm suporte: COUNT, COUNT\$1DISTINCTISH, SUM, MIN, MAX, AVG, STDDEV, QUANTILE, TOLIST, FIRST\$1VALUE e RANDOM\$1SAMPLE. Para obter mais informações, consulte [Agregações](https://redis.io/docs/interact/search-and-query/search/aggregations/).
+ LIMIT <offset><count>: retém registros começando em <offset> e continuando por até <count>, todos os outros registros são descartados.
+ PARAMS: duas vezes o número de pares de valores-chave. Os key/value pares de parâmetros podem ser referenciados de dentro da expressão de consulta.

**Return**

Retorna uma matriz ou a resposta de erro.
+ Se a operação for concluída com êxito, retornará uma matriz. O primeiro elemento é um número inteiro sem significado específico (deve ser ignorado). Os elementos restantes são os resultados gerados pelo último estágio. Cada elemento é uma matriz de nomes de campos e pares de valores.
+ Se o índice estiver em andamento para preenchimento, o comando retornará imediatamente uma resposta de erro.
+ Se o tempo limite for atingido, o comando retornará uma resposta de erro.

# FT.DROPINDEX
<a name="vector-search-commands-ft.dropindex"></a>

Drop an index. A definição do índice e o conteúdo associado são excluídos. As chaves não são afetadas.

**Sintaxe**

```
FT.DROPINDEX <index-name>
```

**Return**

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

# FT.INFO
<a name="vector-search-commands-ft.info"></a>

**Sintaxe**

```
FT.INFO <index-name>
```

A saída da página FT.INFO é uma matriz de pares de valores-chave, conforme descrito na tabela a seguir:


| Chave | Tipo de valor | Description | 
| --- | --- | --- | 
| nome\$1índice | string | Nome do índice | 
| creation\$1timestamp | integer | Carimbo de data e hora da criação no estilo UNIX | 
| key\$1type | string | HASH ou JSON | 
| key\$1prefixes | matriz de strings | Prefixos principais para este índice | 
| fields | matriz de informações de campo | Campos desse índice | 
| space\$1usage | integer | Bytes de memória usados por esse índice | 
| fullext\$1space\$1usage | integer | Bytes de memória usados por campos não vetoriais | 
| vector\$1space\$1usage | integer | Bytes de memória usados por campos vetoriais | 
| num\$1docs | integer | Número de chaves atualmente contidas no índice | 
| num\$1indexed\$1vectors | integer | Número de vetores atualmente contidos no índice | 
| current\$1lag | integer | Atraso recente na ingestão (milissegundos) | 
| backfill\$1status | string | Um dos seguintes: Concluído InProgres, Pausado ou Falha  | 

A tabela a seguir descreve as informações de cada campo:


| Chave | Tipo de valor | Description | 
| --- | --- | --- | 
| Identifier | string | nome do campo | 
| field\$1name | string | Nome do membro de hash ou caminho JSON | 
| type | string | um dos seguintes: Numérico, Tag, Texto ou Vetor | 
| option | string | ignorar | 

Se o campo for do tipo Vector, informações adicionais estarão presentes dependendo do algoritmo. 

Para o algoritmo HNSW:


| Chave | Tipo de valor | Description | 
| --- | --- | --- | 
| algoritmo | string | HNSW | 
| data\$1type | string | FLOAT32 | 
| distance\$1metric | string | um dos seguintes: L2, IP ou Cosine | 
| capacidade\$1inicial | integer | Tamanho inicial do índice do campo vetorial | 
| current\$1capacity | integer | Tamanho atual do índice do campo vetorial | 
| maximum\$1edges | integer | Parâmetro M na criação | 
| ef\$1construction | integer | Parâmetro EF\$1CONSTRUCTION na criação | 
| ef\$1runtime | integer | Parâmetro EF\$1RUNTIME na criação | 

Para o algoritmo FLAT:


| Chave | Tipo de valor | Description | 
| --- | --- | --- | 
| algoritmo | string | FLAT | 
| data\$1type | string | FLOAT32 | 
| distance\$1metric | string | um dos seguintes: L2, IP ou Cosine | 
| capacidade\$1inicial | integer | Tamanho inicial do índice do campo vetorial | 
| current\$1capacity | integer | Tamanho atual do índice do campo vetorial | 

# FT.\$1LIST
<a name="vector-search-commands-ft.list"></a>

Liste todos os índices.

**Sintaxe**

```
FT._LIST 
```

**Return**

Retorna uma matriz de nomes de índice

# FT.ALIASADD
<a name="vector-search-commands-ft.aliasadd"></a>

Adicione um alias para um índice. O novo nome do alias pode ser usado em qualquer lugar em que seja necessário um nome de índice.

**Sintaxe**

```
FT.ALIASADD <alias> <index-name> 
```

**Return**

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

# FT.ALIASDEL
<a name="vector-search-commands-ft.aliasdel"></a>

Exclua um alias existente para um índice.

**Sintaxe**

```
FT.ALIASDEL <alias>
```

**Return**

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

# FT.ALIASUPDATE
<a name="vector-search-commands-ft.aliasupdate"></a>

Atualize um alias existente para apontar para um índice físico diferente. Esse comando afeta somente referências futuras ao alias. As operações atualmente em andamento (FT.SEARCH, FT.AGGREGATE) não são afetadas por esse comando.

**Sintaxe**

```
FT.ALIASUPDATE <alias> <index>
```

**Return**

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

# FT.\$1ALIASLIST
<a name="vector-search-commands-ft.aliaslist"></a>

Liste os aliases do índice.

**Sintaxe**

```
FT._ALIASLIST
```

**Return**

Retorna uma matriz do tamanho do número de aliases atuais. Cada elemento da matriz é o par alias/índice.

# FT.PROFILE
<a name="vector-search-commands-ft.profile"></a>

Execute uma consulta e retorne informações de perfil sobre essa consulta.

**Sintaxe**

```
FT.PROFILE 

<index>
SEARCH | AGGREGATE 
[LIMITED]
QUERY <query ....>
```

**Return**

Uma matriz de dois elementos. O primeiro elemento é o resultado do comando `FT.SEARCH` ou `FT.AGGREGATE` cujo perfil foi definido. O segundo elemento é uma matriz de informações de desempenho e definição de perfil.

# FT.EXPLAIN
<a name="vector-search-commands-ft.explain"></a>

Analise uma consulta e retorne informações sobre como essa consulta foi analisada.

**Sintaxe**

```
FT.EXPLAIN <index> <query>
```

**Return**

Uma string contendo os resultados analisados.

# FT.EXPLAINCLI
<a name="vector-search-commands-ft.explain-cli"></a>

O mesmo que o comando FT.EXPLAIN, exceto que os resultados são exibidos em um formato diferente, mais útil com o redis-cli.

**Sintaxe**

```
FT.EXPLAINCLI <index> <query>
```

**Return**

Uma string contendo os resultados analisados.