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.
PIEDS. CREATE
Crée un index et lance un remblayage de cet index. Pour plus d'informations, voir Vue d'ensemble de la recherche vectorielle 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 JSON les clés, l'identifiant du champ est un JSON chemin.
Pour de plus amples informations, veuillez consulter Types de champs d'index.
Types de champs :
TAG: Pour plus d'informations, consultez la section Balises
. NUMERIC: Le champ contient un nombre.
TEXT: Le champ contient n'importe quel blob de données.
VECTOR: champ vectoriel qui prend en charge la recherche vectorielle.
Algorithme — Cela peut être HNSW (petit monde navigable hiérarchique) 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}
— des paires clé/valeur spécifiques à l'algorithme qui définissent la configuration de l'index.Pour l'FLATalgorithme, les attributs sont les suivants :
Obligatoire :
DIM— Nombre de dimensions du vecteur.
DISTANCE_ METRIC — Peut être l'un des [L2 | IP |COSINE].
TYPE— Type de vecteur. Le seul type pris en charge est
FLOAT32
.
Facultatif :
INITIAL_ CAP — La capacité vectorielle initiale de l'index affecte la taille d'allocation de mémoire de l'index.
Pour l'HNSWalgorithme, 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_ METRIC — Peut être l'un des [L2 | IP |COSINE].
Facultatif :
INITIAL_ CAP — 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_ CONSTRUCTION — 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_ RUNTIME — 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
Exemple 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 JSON index en 6 dimensions à l'aide de l'HNSWalgorithme :
FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
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#, 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 JSON données 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 JSON données 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.
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 JSON index utilise l'FLAT
algorithme au lieu de l'HNSW
algorithme. Notez également qu'il réindexera les JSON données 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]}]"