

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