Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
FT. CREATE
Crea un indice e avvia un riempimento di tale indice. Per ulteriori informazioni, consulta Panoramica della ricerca vettoriale per i dettagli sulla costruzione dell'indice.
Sintassi
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
Identificatore di campo:
Per le chiavi hash, l'identificatore di campo è un nome di campo.
Per JSON le chiavi, l'identificatore di campo è un percorso. JSON
Per ulteriori informazioni, consulta Tipi di campi dell'indice.
Tipi di campo:
TAG: Per ulteriori informazioni, vedere Tag
. NUMERIC: Il campo contiene un numero.
TEXT: Il campo contiene qualsiasi blob di dati.
VECTOR: campo vettoriale che supporta la ricerca vettoriale.
Algoritmo: può essere HNSW (Hierarchical Navigable Small World) o FLAT (forza bruta).
attr_count
— numero di attributi che verranno passati come configurazione dell'algoritmo, che include sia nomi che valori.{attribute_name} {attribute_value}
— coppie chiave/valore specifiche dell'algoritmo che definiscono la configurazione dell'indice.Per FLAT quanto riguarda l'algoritmo, gli attributi sono:
Campo obbligatorio:
DIM— Numero di dimensioni nel vettore.
DISTANCE_ METRIC — Può essere uno dei [L2 | IP |COSINE].
TYPE— Tipo di vettore. L'unico tipo supportato è
FLOAT32
.
Facoltativo:
INITIAL_ CAP — La capacità vettoriale iniziale dell'indice influisce sulla dimensione di allocazione della memoria dell'indice.
Per l'HNSWalgoritmo, gli attributi sono:
Campo obbligatorio:
TYPE— Tipo di vettore. L'unico tipo supportato è
FLOAT32
.DIM— Dimensione vettoriale, specificata come numero intero positivo. Massimo: 32768
DISTANCE_ METRIC — Può essere uno dei [L2 | IP |COSINE].
Facoltativo:
INITIAL_ CAP — La capacità vettoriale iniziale nell'indice influisce sulla dimensione di allocazione della memoria dell'indice. Il valore predefinito è 1024.
M — Numero massimo di bordi in uscita consentiti per ogni nodo del grafico in ogni livello. Sul livello zero il numero massimo di bordi in uscita sarà 2M. Il valore predefinito è 16. Il massimo è 512.
EF_ CONSTRUCTION — controlla il numero di vettori esaminati durante la costruzione dell'indice. Valori più elevati per questo parametro miglioreranno il rapporto di richiamo a scapito di tempi più lunghi di creazione dell'indice. Il valore predefinito è 200. Il valore massimo è 4096.
EF_ RUNTIME — controlla il numero di vettori esaminati durante le operazioni di interrogazione. Valori più elevati per questo parametro possono migliorare il richiamo a scapito di tempi di interrogazione più lunghi. Il valore di questo parametro può essere sovrascritto in base alla singola query. Il valore predefinito è 10. Il valore massimo è 4096.
Valori restituiti
Restituisce una semplice stringa di messaggio OK o una risposta all'errore.
Examples (Esempi)
Nota
L'esempio seguente utilizza argomenti nativi di valkey-cli
Esempio 1: Crea alcuni indici
Crea un indice per vettori di dimensione 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
Crea un JSON indice a 6 dimensioni utilizzando l'HNSWalgoritmo:
FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
Esempio 2: popolare alcuni dati
I seguenti comandi sono formattati in modo da poter essere eseguiti come argomenti nel programma terminale redis-cli. Gli sviluppatori che utilizzano client in linguaggio di programmazione (come Python, Ruby, C#, ecc.) dovranno seguire le regole di gestione del loro ambiente per gestire stringhe e dati binari.
Creazione di alcuni dati 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]}'
Tieni presente quanto segue:
Le chiavi dell'hash e dei JSON dati hanno i prefissi delle definizioni degli indici.
I vettori si trovano nei percorsi appropriati delle definizioni degli indici.
I vettori hash vengono immessi come dati esadecimali mentre i JSON dati vengono immessi come numeri.
I vettori hanno le lunghezze appropriate, le voci vettoriali hash bidimensionali hanno due float di dati esadecimali, le voci vettoriali json a sei dimensioni hanno sei numeri.
Esempio 3: eliminare e ricreare un indice
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
Nota che il nuovo JSON indice utilizza l'FLAT
algoritmo anziché l'HNSW
algoritmo. Tieni inoltre presente che reindicizzerà i JSON dati esistenti:
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]}]"