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 nomealias
come 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
,IP
oCOSINE
.
Attributi facoltativi dell'algoritmo HNSW:
EF_RUNTIME
(facoltativo): imposta il conteggio dei vettori da esaminare durante un'operazione di query. Il valore predefinito è10
e il valore massimo è4096
. Puoi impostare questo valore parametro per ogni query eseguita. Valori più elevati aumentano i tempi di query, ma migliorano il richiamo delle query.M
(facoltativo): il conteggio degli 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 è200
e 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
,IP
oCOSINE
.
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_key
non 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