

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Commandes de recherche vectorielle
<a name="vector-search-commands"></a>

Voici une liste des commandes prises en charge pour la recherche vectorielle. 

**Topics**
+ [FT.CREATE](vector-search-commands-ft.create.md)
+ [FT.SEARCH](vector-search-commands-ft.search.md)
+ [AGRÉGAT DE PIEDS](vector-search-commands-ft.aggregate.md)
+ [FT.DROPINDEX](vector-search-commands-ft.dropindex.md)
+ [FT.INFO](vector-search-commands-ft.info.md)
+ [PIEDS. \$1LISTE](vector-search-commands-ft.list.md)
+ [FT.ALIASADD](vector-search-commands-ft.aliasadd.md)
+ [FT. ALIASDEL](vector-search-commands-ft.aliasdel.md)
+ [MISE À JOUR DE FT.ALIAS](vector-search-commands-ft.aliasupdate.md)
+ [PIEDS. \$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>

 Crée un index et lance un remblayage de cet index. Pour plus d'informations, voir [Vue d'ensemble de la recherche vectorielle](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html) pour plus de détails sur la construction d'index.

**Syntaxe**

```
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>])

)+
```

**Schema** (Schéma)
+ Identifiant du champ :
  + Pour les clés de hachage, l'identifiant du champ est un nom de champ.
  + Pour les clés JSON, l'identifiant du champ est un chemin JSON.

  Pour de plus amples informations, veuillez consulter [Types de champs d'index](vector-search-overview.md#vector-search-index-field-types).
+ Types de champs :
  + TAG : Pour plus d'informations, voir [Tags](https://redis.io/docs/interact/search-and-query/advanced-concepts/tags/).
  + NUMÉRIQUE : Le champ contient un nombre.
  + TEXTE : Le champ contient n'importe quel blob de données.
  + VECTEUR : champ vectoriel qui permet la recherche vectorielle.
    + Algorithme : il peut être HNSW (Hierarchical Navigable Small World) ou FLAT (force brute). 
    + `attr_count`— le nombre d'attributs qui seront transmis en tant que configuration de l'algorithme, y compris les noms et les valeurs. 
    + `{attribute_name} {attribute_value}`— key/value paires spécifiques à l'algorithme qui définissent la configuration de l'index. 

      Pour l'algorithme FLAT, les attributs sont les suivants :

      Obligatoire :
      + DIM — Nombre de dimensions du vecteur.
      + DISTANCE\$1METRIC — Peut être l'un des [L2 \$1 IP \$1 COSINE].
      + TYPE — Type de vecteur. Le seul type pris en charge est`FLOAT32`.

      Facultatif :
      + INITIAL\$1CAP — La capacité vectorielle initiale de l'index affecte la taille d'allocation de mémoire de l'index.

      Pour l'algorithme HNSW, les attributs sont les suivants :

      Obligatoire :
      + TYPE — Type de vecteur. Le seul type pris en charge est`FLOAT32`.
      + DIM — Dimension du vecteur, spécifiée sous la forme d'un entier positif. Maximum : 32 768
      + DISTANCE\$1METRIC — Peut être l'un des [L2 \$1 IP \$1 COSINE].

      Facultatif :
      + INITIAL\$1CAP — La capacité vectorielle initiale de l'index affecte la taille d'allocation de mémoire de l'index. La valeur par défaut est 1024.
      + M — Nombre maximum d'arêtes sortantes autorisées pour chaque nœud du graphe dans chaque couche. Sur la couche zéro, le nombre maximal d'arêtes sortantes sera de 2 millions. La valeur par défaut est 16. Le maximum est 512.
      + EF\$1CONSTRUCTION — contrôle le nombre de vecteurs examinés lors de la construction de l'indice. Des valeurs plus élevées pour ce paramètre amélioreront le taux de rappel au détriment de délais de création d'index plus longs. La valeur par défaut est 200. La valeur maximale est 4096.
      + EF\$1RUNTIME — contrôle le nombre de vecteurs examinés lors des opérations de requête. Des valeurs plus élevées pour ce paramètre peuvent améliorer le rappel au détriment de la durée des requêtes. La valeur de ce paramètre peut être modifiée au cas par cas. Valeur par défaut : 10. La valeur maximale est 4096.

**Retour**

Renvoie un message OK ou une réponse d'erreur sous forme de chaîne simple.

**Exemples**

**Note**  
L'exemple suivant utilise des arguments natifs de [valkey-cli](https://valkey.io/topics/cli/), tels que le déguillement et le déséchappement des données, avant de les envoyer à Valkey ou Redis OSS. Pour utiliser d'autres clients utilisant d'autres langages de programmation (Python, Ruby, C\$1, etc.), suivez les règles de gestion de ces environnements pour traiter les chaînes et les données binaires. Pour plus d'informations sur les clients pris en charge, voir [Outils sur lesquels s'appuyer AWS](https://aws.amazon.com/developer/tools/)

**Example 1 : Créez des index**  
Création d'un index pour les vecteurs de taille 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
```
Créez un index JSON en 6 dimensions à l'aide de l'algorithme 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 Exemple 2 : renseigner certaines données**  
Les commandes suivantes sont formatées de manière à pouvoir être exécutées en tant qu'arguments du programme de terminal redis-cli. Les développeurs utilisant des clients utilisant un langage de programmation (tels que Python, Ruby, C\$1, etc.) devront suivre les règles de gestion de leur environnement pour traiter les chaînes et les données binaires.  
Création de certaines données de hachage et de 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]}'
```
Notez ce qui suit :  
+ Les clés du hachage et des données JSON ont les préfixes de leurs définitions d'index.
+ Les vecteurs se trouvent aux chemins appropriés des définitions d'index.
+ Les vecteurs de hachage sont saisis sous forme de données hexadécimales tandis que les données JSON sont entrées sous forme de nombres.
+ Les vecteurs ont les longueurs appropriées, les entrées du vecteur de hachage bidimensionnel contiennent deux flottants de données hexadécimales, les entrées vectorielles json à six dimensions comportent six nombres.

**Example Exemple 3 : Supprimer et recréer un index**  

```
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
```
Notez que le nouvel index JSON utilise l'`FLAT`algorithme au lieu de l'`HNSW`algorithme. Notez également qu'il réindexera les données JSON existantes :  

```
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>

Utilise l'expression de requête fournie pour localiser les clés dans un index. Une fois localisé, le and/or contenu du nombre de champs indexés dans ces clés peut être renvoyé. Pour plus d'informations, voir [Expression de requête de recherche vectorielle](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).

Pour créer des données à utiliser dans ces exemples, consultez la commande [FT.CREATE.](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html)

**Syntaxe**

```
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 : Cette clause identifie les champs d'une clé qui sont renvoyés. La clause AS facultative de chaque champ remplace le nom du champ dans le résultat. Seuls les champs déclarés pour cet index peuvent être spécifiés.
+ LIMITE <offset><count>: Cette clause fournit une fonctionnalité de pagination dans la mesure où seules les clés correspondant aux valeurs de décalage et de comptage sont renvoyées. Si cette clause est omise, la valeur par défaut est « LIMIT 0 10 », c'est-à-dire que seul un maximum de 10 clés seront renvoyées. 
+ PARAMS : deux fois le nombre de paires clé-valeur. Les key/value paires de paramètres peuvent être référencées depuis l'expression de requête. Pour plus d'informations, voir [Expression de requête de recherche vectorielle](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).
+ COUNT : Cette clause supprime le renvoi du contenu des clés, seul le nombre de clés est renvoyé. Il s'agit d'un alias pour « LIMIT 0 0 ».

**Retour**

Renvoie un tableau ou une réponse d'erreur.
+ Si l'opération aboutit, elle renvoie un tableau. Le premier élément est le nombre total de clés correspondant à la requête. Les autres éléments sont des paires de nom de clé et de liste de champs. La liste de champs est un autre tableau comprenant des paires de nom de champ et de valeurs. 
+ Si l'index est en cours de remplissage à nouveau, la commande renvoie immédiatement une réponse d'erreur.
+ Si le délai est dépassé, la commande renvoie une réponse d'erreur.

**Exemple : effectuez des recherches**

**Note**  
L'exemple suivant utilise des arguments natifs de [valkey-cli](https://valkey.io/topics/cli/), tels que le déguillement et le déséchappement des données, avant de les envoyer à Valkey ou Redis OSS. Pour utiliser d'autres clients utilisant d'autres langages de programmation (Python, Ruby, C\$1, etc.), suivez les règles de gestion de ces environnements pour traiter les chaînes et les données binaires. Pour plus d'informations sur les clients pris en charge, voir [Outils sur lesquels s'appuyer AWS](https://aws.amazon.com/developer/tools/)

**Une recherche par hachage**

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

Cela produit deux résultats, triés en fonction de leur score, qui est la distance par rapport au vecteur de requête (entrée sous forme hexadécimale).

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

Cela produit les deux résultats les plus proches, triés en fonction de leur score, et notez que les valeurs vectorielles JSON sont converties en valeurs flottantes et que le vecteur de requête est toujours des données vectorielles. Notez également que le `KNN` paramètre étant 2, il n'y a que deux résultats. Une valeur plus élevée renverra plus de résultats :

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

# AGRÉGAT DE PIEDS
<a name="vector-search-commands-ft.aggregate"></a>

Il s'agit d'un sur-ensemble de la commande FT.SEARCH qui permet un traitement supplémentaire substantiel des clés sélectionnées par l'expression de requête.

**Syntaxe**

```
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]
```
+ Les clauses FILTER, LIMIT, GROUPBY, SORTBY et APPLY peuvent être répétées plusieurs fois dans n'importe quel ordre et être librement mélangées. Ils sont appliqués dans l'ordre spécifié, la sortie d'une clause alimentant l'entrée de la clause suivante.
+ Dans la syntaxe ci-dessus, une « propriété » est soit un champ déclaré dans la commande [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html) pour cet index, SOIT la sortie d'une clause APPLY ou d'une fonction REDUCE précédente.
+ La clause LOAD est limitée au chargement des champs déclarés dans l'index. « LOAD \$1 » chargera tous les champs déclarés dans l'index. 
+ Les fonctions de réduction suivantes sont prises en charge : COUNT, COUNT\$1DISTINCTISH, SUM, MIN, MAX, AVG, STDDEV, QUANTILE, TOLIST, FIRST\$1VALUE et RANDOM\$1SAMPLE. Pour plus d'informations, voir [Agrégations](https://redis.io/docs/interact/search-and-query/search/aggregations/)
+ LIMITE <offset><count>: Conserve les enregistrements commençant à <offset>et se poursuivant jusqu'à<count>, tous les autres enregistrements sont supprimés.
+ PARAMS : deux fois le nombre de paires clé-valeur. Les key/value paires de paramètres peuvent être référencées depuis l'expression de requête.

**Retour**

Renvoie un tableau ou une réponse d'erreur.
+ Si l'opération aboutit, elle renvoie un tableau. Le premier élément est un entier sans signification particulière (doit être ignoré). Les autres éléments sont les résultats de la dernière étape. Chaque élément est un tableau de paires de noms de champs et de valeurs.
+ Si l'index est en cours de remplissage à nouveau, la commande renvoie immédiatement une réponse d'erreur.
+ Si le délai est dépassé, la commande renvoie une réponse d'erreur.

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

Supprime un index. La définition de l'index et le contenu associé sont supprimés. Les clés ne sont pas affectées.

**Syntaxe**

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

**Retour**

Renvoie un message OK sous forme de chaîne simple ou une réponse d'erreur.

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

**Syntaxe**

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

La sortie de la page FT.INFO est un tableau de paires clé-valeur, comme décrit dans le tableau suivant :


| Clé | Type de la valeur | Description | 
| --- | --- | --- | 
| nom\$1index | chaîne | Nom de l'index | 
| creation\$1timestamp | entier | Horodatage de style Unix de l'heure de création | 
| type\$1clé | chaîne | HASH ou JSON | 
| key\$1prefixes | tableau de chaînes | Préfixes clés pour cet index | 
| fields | ensemble d'informations sur le terrain | Champs de cet index | 
| utilisation de l'espace | entier | Octets de mémoire utilisés par cet index | 
| Fullext\$1space\$1usage | entier | Octets de mémoire utilisés par les champs non vectoriels | 
| utilisation de l'espace vectoriel | entier | Octets de mémoire utilisés par les champs vectoriels | 
| num\$1docs | entier | Nombre de clés actuellement contenues dans l'index | 
| num\$1indexed\$1vector | entier | Nombre de vecteurs actuellement contenus dans l'index | 
| current\$1lag | entier | Retard d'ingestion récent (millisecondes) | 
| backfill\$1status | chaîne | L'un des suivants : terminé InProgres, suspendu ou échoué  | 

Le tableau suivant décrit les informations relatives à chaque champ :


| Clé | Type de la valeur | Description | 
| --- | --- | --- | 
| identifiant | chaîne | nom du champ | 
| nom\$1champ | chaîne | Nom du membre de hachage ou chemin JSON | 
| type | chaîne | l'un des suivants : numérique, balise, texte ou vecteur | 
| option | chaîne | ignore | 

Si le champ est de type Vector, des informations supplémentaires seront présentes en fonction de l'algorithme. 

Pour l'algorithme HNSW :


| Clé | Type de la valeur | Description | 
| --- | --- | --- | 
| automatique | chaîne | HNSW | 
| data\$1type | chaîne | FLOAT32 | 
| métrique de distance | chaîne | l'un des suivants : L2, IP ou Cosine | 
| capacité\$1initiale | entier | Taille initiale de l'indice du champ vectoriel | 
| capacité\$1actuelle | entier | Taille actuelle de l'indice du champ vectoriel | 
| arêtes maximales | entier | Paramètre M lors de la création | 
| ef\$1construction | entier | Paramètre EF\$1CONSTRUCTION lors de la création | 
| ef\$1runtime | entier | Paramètre EF\$1RUNTIME lors de la création | 

Pour l'algorithme FLAT :


| Clé | Type de la valeur | Description | 
| --- | --- | --- | 
| automatique | chaîne | APPARTEMENT | 
| data\$1type | chaîne | FLOAT32 | 
| métrique de distance | chaîne | l'un des suivants : L2, IP ou Cosine | 
| capacité\$1initiale | entier | Taille initiale de l'indice du champ vectoriel | 
| capacité\$1actuelle | entier | Taille actuelle de l'indice du champ vectoriel | 

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

Répertoriez tous les index.

**Syntaxe**

```
FT._LIST 
```

**Retour**

Renvoie un tableau de noms d'index

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

Ajoutez un alias pour un index. Le nouveau nom d'alias peut être utilisé partout où un nom d'index est requis.

**Syntaxe**

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

**Retour**

Renvoie un message OK sous forme de chaîne simple ou une réponse d'erreur.

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

Supprimez un alias existant pour un index.

**Syntaxe**

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

**Retour**

Renvoie un message OK sous forme de chaîne simple ou une réponse d'erreur.

# MISE À JOUR DE FT.ALIAS
<a name="vector-search-commands-ft.aliasupdate"></a>

Mettez à jour un alias existant pour qu'il pointe vers un autre index physique. Cette commande n'affecte que les futures références à l'alias. Les opérations actuellement en cours (FT.SEARCH, FT.AGGREGATE) ne sont pas affectées par cette commande.

**Syntaxe**

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

**Retour**

Renvoie un message OK sous forme de chaîne simple ou une réponse d'erreur.

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

Répertoriez les alias d'index.

**Syntaxe**

```
FT._ALIASLIST
```

**Retour**

Renvoie un tableau de la taille du nombre d'alias actuels. Chaque élément du tableau est la paire alias-index.

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

Exécutez une requête et renvoyez les informations de profil relatives à cette requête.

**Syntaxe**

```
FT.PROFILE 

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

**Retour**

Un tableau à deux éléments. Le premier élément est le résultat de la `FT.AGGREGATE` commande `FT.SEARCH` or profilée. Le deuxième élément est un ensemble d'informations sur les performances et le profilage.

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

Analyse une requête et renvoie des informations sur la façon dont cette requête a été analysée.

**Syntaxe**

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

**Retour**

Chaîne contenant les résultats analysés.

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

Identique à la commande FT.EXPLAIN sauf que les résultats sont affichés dans un format différent, plus utile avec le redis-cli.

**Syntaxe**

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

**Retour**

Chaîne contenant les résultats analysés.