FT.CREATE crea un indice per la ricerca. Con Memorystore per Valkey, gli indici vengono creati a livello di cluster. La creazione di un indice su un nodo ne comporterà la creazione su tutti i nodi del cluster.
Sintassi
FT.CREATE index ON HASH [PREFIX count prefix [prefix ...]] SCHEMA field_name [AS alias] VECTOR [HNSW|FLAT] attribute_count [attribute_name attribute_value] [field_name [AS alias] NUMERIC] [field_name [AS alias] TAG [SEPARATOR ...] [CASESENSITIVE]]
index(obbligatorio): il nome assegnato all'indice. Se esiste già un indice con lo stesso nome, viene restituito un errore.ON HASH(facoltativo): indica il tipo di dati HASH. È supportato solo il tipo di dati HASH.PREFIX [count] [prefix](facoltativo): indica le chiavi hash da indicizzare.SCHEMA hash_field_name(obbligatorio): il nome del campo hash_field_name dopo SCHEMA identifica il nome del campo nell'hash.[AS alias]assegna il nomealiascome alias per l'attributo nome del campo.
Tipi di campo
VECTOR(obbligatorio): campo vettoriale per la ricerca vettoriale:[HNSW|FLAT](obbligatorio): algoritmo designato.FLAT(forza bruta) o HNSW (Hierarchical Navigable Small World).attribute_count(obbligatorio): numero totale di nomi e valori degli attributi passati nella configurazione dell'algoritmo.attribute_name attribute_value: coppie chiave-valore che definiscono la configurazione dell'indice, ma sono specifiche per uno dei due algoritmi disponibili.Attributi dell'algoritmo HNSW obbligatori:
DIM(obbligatorio): numero di dimensioni del vettore. I valori accettati sono1-32768.TYPE(obbligatorio): il tipo di vettore. È supportato soloFLOAT32.DISTANCE_METRIC(obbligatorio): deve essere uno dei seguenti valori:L2,IPoCOSINE.
Attributi facoltativi dell'algoritmo HNSW:
EF_RUNTIME(facoltativo): imposta il conteggio dei vettori da esaminare durante un'operazione di query. Il valore predefinito è10e il valore massimo è4096. Puoi impostare questo valore del parametro per ogni query eseguita. Valori più elevati aumentano i tempi di query, ma migliorano il richiamo delle query.M(facoltativo): il numero di archi in uscita massimi consentiti per ogni nodo del grafico in ogni livello. Il numero massimo di archi in uscita è 2 milioni per il livello 0. Il valore predefinito è 16. Il numero massimo è 512.EF_CONSTRUCTION(facoltativo): imposta il conteggio dei vettori da esaminare durante la creazione dell'indice. Il valore predefinito è200e il valore massimo è4096. Valori più elevati aumentano il tempo necessario per creare gli indici, ma migliorano il rapporto di richiamo.INITIAL_CAP(facoltativo): determina la capacità del vettore iniziale dell'indice. Il valore predefinito è1024. Questo parametro determina l'allocazione della memoria dell'indice.
Attributi dell'algoritmo FLAT obbligatori:
DIM(obbligatorio): numero di dimensioni del vettore.TYPE(obbligatorio): il tipo di vettore. È supportato soloFLOAT32.DISTANCE_METRIC(obbligatorio): deve essere uno dei seguenti valori:L2,IPoCOSINE.
Attributi facoltativi dell'algoritmo FLAT:
INITIAL_CAP(facoltativo): determina la capacità del vettore iniziale dell'indice. Questo parametro determina l'allocazione della memoria dell'indice.
NUMERIC(facoltativo) - Campo numerico per la ricerca numerica.TAG(facoltativo) - Campo tag per la ricerca basata su TAG.SEPARATOR(facoltativo): un carattere utilizzato per dividere la stringa del tag in singoli tag. L'opzione predefinita è,. Il valore specificato deve essere un carattere singolare. Ad esempio, la stringa del tag "hello, world" verrà interpretata come "hello" e "world" e verrà indicizzata di conseguenza. I valori consentiti sono,.<>{}[]"':;!@#$%^&*()-+=~CASESENSITIVE(facoltativo): indica la sensibilità alle maiuscole dei campi dei tag. Per impostazione predefinita, i tag non sono sensibili alle maiuscole. Una stringa di tag "HeLLo" verrà indicizzata come "ciao" e una query per "Ciao" e "HeLlo" produrrà lo stesso risultato.
Note
All'interno del comando FT.CREATE, gli indici VECTOR, NUMERIC e TAG possono apparire in qualsiasi sequenza.
Un campo può essere indicizzato una sola volta. Nell'esempio fornito, il campo
my_vector_field_keynon può essere ripetuto nello stesso indice.In un singolo comando FT.CREATE è possibile indicizzare un massimo di 10 campi.
Per impostazione predefinita, i TAG non distinguono tra maiuscole e minuscole.
Per impostazione predefinita, i TAG sono delimitati da
,.Le singole query sui tag e sulle query numeriche non sono supportate. Questi campi possono essere utilizzati solo insieme alle ricerche basate su vettori.
Esempi
Esempio di HNSW:
FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100
Esempio di FLAT:
FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR Flat 8 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE INITIAL_CAP 15000
Esempio di HNSW con un campo numerico:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_numeric_field_key NUMERIC
Esempio di HNSW con un campo tag:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE
Esempio di HNSW con un tag e un campo numerico:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key NUMERIC
Esempio di HNSW con più campi numerici e di tag:
FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key_1 TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key_1 NUMERIC my_numeric_field_key_2 NUMERIC my_tag_field_key_2 TAG