

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à.

# Comandi di ricerca vettoriale
<a name="vector-search-commands"></a>

Di seguito è riportato un elenco di comandi supportati per la ricerca vettoriale. 

**Topics**
+ [FT.CREATE](vector-search-commands-ft.create.md)
+ [FT.SEARCH](vector-search-commands-ft.search.md)
+ [FT.AGGREGATE](vector-search-commands-ft.aggregate.md)
+ [FT.DROPINDEX](vector-search-commands-ft.dropindex.md)
+ [FT.INFO](vector-search-commands-ft.info.md)
+ [FT. \$1LISTA](vector-search-commands-ft.list.md)
+ [FT.ALIASADD](vector-search-commands-ft.aliasadd.md)
+ [FT.ALIASDEL](vector-search-commands-ft.aliasdel.md)
+ [FT.ALIASUPDATE](vector-search-commands-ft.aliasupdate.md)
+ [FT. \$1LISTA DI ALIAS](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>

 Crea un indice e avvia un riempimento di tale indice. Per ulteriori informazioni, consulta [Panoramica della ricerca vettoriale](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html) 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 le chiavi JSON, l'identificatore di campo è un percorso JSON.

  Per ulteriori informazioni, consulta [Tipi di campi dell'indice](vector-search-overview.md#vector-search-index-field-types).
+ Tipi di campo:
  + TAG: per ulteriori informazioni, consulta [Tag](https://redis.io/docs/interact/search-and-query/advanced-concepts/tags/).
  + NUMERICO: Il campo contiene un numero.
  + TESTO: 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}`— key/value coppie specifiche dell'algoritmo che definiscono la configurazione dell'indice. 

      Per l'algoritmo FLAT, gli attributi sono:

      Campo obbligatorio:
      + DIM — Numero di dimensioni nel vettore.
      + DISTANCE\$1METRIC — Può essere uno dei [L2 \$1 IP \$1 COSINE].
      + TYPE — Tipo di vettore. L'unico tipo supportato è`FLOAT32`.

      Facoltativo:
      + INITIAL\$1CAP — La capacità vettoriale iniziale dell'indice influisce sulla dimensione di allocazione della memoria dell'indice.

      Per l'algoritmo HNSW, gli attributi sono:

      Campo obbligatorio:
      + TYPE: tipo vettoriale. L'unico tipo supportato è`FLOAT32`.
      + DIM: dimensione vettoriale, specificata come numero intero positivo. Massimo: 32768
      + DISTANCE\$1METRIC — Può essere uno dei [L2 \$1 IP \$1 COSINE].

      Facoltativo:
      + INITIAL\$1CAP — La capacità vettoriale iniziale dell'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\$1CONSTRUCTION — 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\$1RUNTIME: 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.

**Esempi**

**Nota**  
L'esempio seguente utilizza argomenti nativi di [valkey-cli](https://valkey.io/topics/cli/), come la dequotazione e l'eliminazione dell'escape dei dati, prima di inviarli a Valkey o Redis OSS. Per utilizzare altri client in linguaggi di programmazione (Python, Ruby, C\$1, ecc.), segui le regole di gestione di tali ambienti per la gestione di stringhe e dati binari. [Per ulteriori informazioni sui client supportati, consulta Strumenti su cui costruire AWS](https://aws.amazon.com/developer/tools/)

**Example 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 indice JSON a 6 dimensioni utilizzando l'algoritmo 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 Esempio 2: popolare alcuni dati**  
I seguenti comandi sono formattati in modo da poter essere eseguiti come argomenti del programma terminale redis-cli. Gli sviluppatori che utilizzano client in linguaggio di programmazione (come Python, Ruby, C\$1, 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]}'
```
Tenere presente quanto segue:  
+ Le chiavi dei dati hash e JSON hanno i prefissi delle relative definizioni di indice.
+ I vettori si trovano nei percorsi appropriati delle definizioni degli indici.
+ I vettori hash vengono immessi come dati esadecimali mentre i dati JSON 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.

**Example 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 indice JSON utilizza l'`FLAT`algoritmo anziché l'`HNSW`algoritmo. Tieni inoltre presente che reindicizzerà i dati JSON 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]}]"
```

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

Utilizza l'espressione di interrogazione fornita per individuare le chiavi all'interno di un indice. Una volta individuato, è possibile restituire il and/or contenuto del conteggio dei campi indicizzati all'interno di tali chiavi. Per ulteriori informazioni, vedere Espressione di interrogazione di [ricerca vettoriale](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).

Per creare dati da utilizzare in questi esempi, vedete il comando [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html).

**Sintassi**

```
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: Questa clausola identifica quali campi di una chiave vengono restituiti. La clausola AS opzionale su ogni campo sostituisce il nome del campo nel risultato. È possibile specificare solo i campi dichiarati per questo indice.
+ LIMIT: <offset><count>: Questa clausola fornisce la funzionalità di impaginazione in quanto vengono restituite solo le chiavi che soddisfano i valori di offset e count. Se questa clausola viene omessa, il valore predefinito è «LIMIT 0 10", ovvero verranno restituite solo un massimo di 10 chiavi. 
+ PARAMETRI: due volte il numero di coppie chiave-valore. È possibile fare riferimento alle key/value coppie di parametri dall'interno dell'espressione di query. Per ulteriori informazioni, vedete Espressione di interrogazione di [ricerca vettoriale](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).
+ COUNT: questa clausola elimina la restituzione del contenuto delle chiavi, viene restituito solo il numero di chiavi. Questo è un alias per «LIMIT 0 0".

**Valori restituiti**

Restituisce una matrice o una risposta di errore.
+ Se l'operazione viene completata correttamente, restituisce un array. Il primo elemento è il numero totale di chiavi corrispondenti alla query. Gli elementi rimanenti sono coppie di nomi di chiavi ed elenchi di campi. L'elenco dei campi è un altro array che comprende coppie di nomi di campo e valori. 
+ Se l'indice è in corso di riempimento, il comando restituisce immediatamente una risposta di errore.
+ Se viene raggiunto il timeout, il comando restituisce una risposta di errore.

**Esempio: esegui alcune ricerche**

**Nota**  
L'esempio seguente utilizza argomenti nativi di [valkey-cli](https://valkey.io/topics/cli/), come la dequotazione e la rimozione dell'escape dei dati, prima di inviarli a Valkey o Redis OSS. Per utilizzare altri client in linguaggi di programmazione (Python, Ruby, C\$1, ecc.), segui le regole di gestione di tali ambienti per la gestione di stringhe e dati binari. [Per ulteriori informazioni sui client supportati, consulta Strumenti su cui costruire AWS](https://aws.amazon.com/developer/tools/)

**Una ricerca hash**

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

Ciò produce due risultati, ordinati in base al punteggio, che è la distanza dal vettore di query (immessa come esadecimale).

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

Ciò produce i due risultati più vicini, ordinati in base al punteggio, e nota che i valori vettoriali JSON vengono convertiti in float e il vettore di query è ancora costituito da dati vettoriali. Nota anche che, poiché il `KNN` parametro è 2, ci sono solo due risultati. Un valore maggiore restituirà più risultati:

```
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.AGGREGATE
<a name="vector-search-commands-ft.aggregate"></a>

Un superset del comando FT.SEARCH, consente un'elaborazione aggiuntiva sostanziale delle chiavi selezionate dall'espressione di query.

**Sintassi**

```
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]
```
+ Le clausole FILTER, LIMIT, GROUPBY, SORTBY e APPLY possono essere ripetute più volte in qualsiasi ordine e possono essere mescolate liberamente. Vengono applicate nell'ordine specificato con l'output di una clausola che alimenta l'input della clausola successiva.
+ Nella sintassi precedente, una «proprietà» è un campo dichiarato nel comando [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html) per questo indice OPPURE l'output di una precedente clausola APPLY o funzione REDUCE.
+ La clausola LOAD si limita al caricamento di campi dichiarati nell'indice. «LOAD \$1» caricherà tutti i campi dichiarati nell'indice. 
+ Sono supportate le seguenti funzioni di riduzione: COUNT, COUNT\$1DISTINCTISH, SUM, MIN, MAX, AVG, STDDEV, QUANTILE, TOLIST, FIRST\$1VALUE e RANDOM\$1SAMPLE. [Per ulteriori informazioni, vedere Aggregazioni](https://redis.io/docs/interact/search-and-query/search/aggregations/)
+ LIMITE <offset><count>: Conserva i record a partire da <offset>e fino a<count>, tutti gli altri record vengono eliminati.
+ PARAMETRI: due volte il numero di coppie chiave-valore. È possibile fare riferimento alle key/value coppie di parametri dall'interno dell'espressione di query.

**Valori restituiti**

Restituisce una matrice o una risposta di errore.
+ Se l'operazione viene completata correttamente, restituisce un array. Il primo elemento è un numero intero senza un significato particolare (deve essere ignorato). Gli elementi rimanenti sono i risultati prodotti dall'ultima fase. Ogni elemento è una matrice di coppie di nomi di campo e valori.
+ Se l'indice è in corso di riempimento, il comando restituisce immediatamente una risposta di errore.
+ Se viene raggiunto il timeout, il comando restituisce una risposta di errore.

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

Eliminare un indice. La definizione dell'indice e il contenuto associato vengono eliminati. Le chiavi non vengono modificate.

**Sintassi**

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

**Valori restituiti**

Restituisce un semplice messaggio OK in formato stringa o una risposta di errore.

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

**Sintassi**

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

L'output della pagina FT.INFO è un array di coppie chiave-valore, come descritto nella tabella seguente:


| Chiave | Value type (Tipo di valore) | Description | 
| --- | --- | --- | 
| nome\$1indice | stringa | Nome dell'indice | 
| creation\$1timestamp | intero | Timestamp dell'ora di creazione in stile Unix | 
| tipo\$1chiave | stringa | HASH o JSON | 
| key\$1prefixes | matrice di stringhe | Prefissi chiave per questo indice | 
| campi | matrice di informazioni sul campo | Campi di questo indice | 
| space\$1usage | intero | Byte di memoria utilizzati da questo indice | 
| fullext\$1space\$1usage | intero | Byte di memoria utilizzati dai campi non vettoriali | 
| vector\$1space\$1usage | intero | Byte di memoria usati dai campi vettoriali | 
| num\$1docs | intero | Numero di chiavi attualmente contenute nell'indice | 
| num\$1indexed\$1vectors | intero | Numero di vettori attualmente contenuti nell'indice | 
| current\$1lag | intero | Ritardo di ingestione recente (millisecondi) | 
| backfill\$1status | stringa | Uno dei seguenti: Completato, Sospeso o InProgres Non riuscito  | 

La tabella seguente descrive le informazioni per ogni campo:


| Chiave | Value type (Tipo di valore) | Description | 
| --- | --- | --- | 
| identificatore | stringa | nome del campo | 
| field\$1name | stringa | Nome del membro hash o percorso JSON | 
| tipo | stringa | uno tra: Numerico, Tag, Testo o Vettore | 
| option | stringa | ignora | 

Se il campo è di tipo Vector, saranno presenti informazioni aggiuntive a seconda dell'algoritmo. 

Per l'algoritmo HNSW:


| Chiave | Value type (Tipo di valore) | Description | 
| --- | --- | --- | 
| Algoritmo | stringa | HNSW | 
| data\$1type | stringa | FLOAT32 | 
| distanza\$1metrica | stringa | uno tra: L2, IP o Cosine | 
| capacità\$1iniziale | intero | Dimensione iniziale dell'indice del campo vettoriale | 
| capacità\$1corrente | intero | Dimensione attuale dell'indice dei campi vettoriali | 
| massimum\$1edges | intero | Parametro M alla creazione | 
| ef\$1construction | intero | Parametro EF\$1CONSTRUCTION alla creazione | 
| ef\$1runtime | intero | parametro EF\$1RUNTIME alla creazione | 

Per l'algoritmo FLAT:


| Chiave | Value type (Tipo di valore) | Description | 
| --- | --- | --- | 
| Algoritmo | stringa | APPARTAMENTO | 
| data\$1type | stringa | FLOAT32 | 
| distanza\$1metrica | stringa | uno tra: L2, IP o Cosine | 
| capacità\$1iniziale | intero | Dimensione iniziale dell'indice del campo vettoriale | 
| capacità\$1corrente | intero | Dimensione attuale dell'indice dei campi vettoriali | 

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

Elenca tutti gli indici.

**Sintassi**

```
FT._LIST 
```

**Valori restituiti**

Restituisce una matrice di nomi di indici

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

Aggiungi un alias per un indice. Il nuovo nome alias può essere utilizzato ovunque sia richiesto un nome di indice.

**Sintassi**

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

**Valori restituiti**

Restituisce un semplice messaggio OK in formato stringa o una risposta di errore.

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

Elimina un alias esistente per un indice.

**Sintassi**

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

**Valori restituiti**

Restituisce un semplice messaggio OK in formato stringa o una risposta di errore.

# FT.ALIASUPDATE
<a name="vector-search-commands-ft.aliasupdate"></a>

Aggiorna un alias esistente in modo che punti a un indice fisico diverso. Questo comando ha effetto solo sui riferimenti futuri all'alias. Le operazioni attualmente in corso (FT.SEARCH, FT.AGGREGATE) non sono influenzate da questo comando.

**Sintassi**

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

**Valori restituiti**

Restituisce una semplice stringa di messaggio OK o una risposta di errore.

# FT. \$1LISTA DI ALIAS
<a name="vector-search-commands-ft.aliaslist"></a>

Elenca gli alias dell'indice.

**Sintassi**

```
FT._ALIASLIST
```

**Valori restituiti**

Restituisce un array della dimensione del numero di alias correnti. Ogni elemento dell'array è la coppia alias-indice.

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

Esegui una query e restituisci le informazioni sul profilo relative a tale query.

**Sintassi**

```
FT.PROFILE 

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

**Valori restituiti**

Un array a due elementi. Il primo elemento è il risultato del `FT.AGGREGATE` comando `FT.SEARCH` or a cui è stato profilato. Il secondo elemento è una serie di informazioni sulle prestazioni e sulla profilazione.

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

Analizza una query e restituisce informazioni su come tale query è stata analizzata.

**Sintassi**

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

**Valori restituiti**

Una stringa contenente i risultati analizzati.

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

Uguale al comando FT.EXPLAIN tranne per il fatto che i risultati vengono visualizzati in un formato diverso, più utile con redis-cli.

**Sintassi**

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

**Valori restituiti**

Una stringa contenente i risultati analizzati.