

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

# Lavorare con le raccolte di ricerca vettoriale
<a name="serverless-vector-search"></a>

Il tipo di raccolta *di ricerca vettoriale* in OpenSearch Serverless offre una funzionalità di ricerca per similarità scalabile e ad alte prestazioni. Semplifica la creazione di moderne esperienze di ricerca aumentata di machine learning (ML) e applicazioni generative di intelligenza artificiale (AI) senza dover gestire l'infrastruttura di database vettoriale sottostante. 

I casi d'uso per le raccolte di ricerche vettoriali includono la ricerca di immagini, la ricerca di documenti, il recupero di musica, i consigli sui prodotti, le ricerche video, le ricerche basate sulla posizione, il rilevamento di frodi e il rilevamento di anomalie. 

Poiché il motore vettoriale per OpenSearch Serverless è alimentato dalla funzione di [ricerca k-Nearest Neighbor (k-NN)](https://opensearch.org/docs/latest/search-plugins/knn/index/) in, ottieni le stesse funzionalità con la semplicità di un ambiente serverless. OpenSearch [Il motore supporta l'API del plug-in k-NN.](https://opensearch.org/docs/latest/search-plugins/knn/api/) Con queste operazioni, puoi sfruttare la ricerca full-text, il filtraggio avanzato, le aggregazioni, le query geospaziali, le query annidate per un recupero più rapido dei dati e risultati di ricerca migliorati.

Il motore vettoriale fornisce metriche di distanza come la distanza euclidea, la somiglianza del coseno e la somiglianza del prodotto scalare e può contenere 16.000 dimensioni. È possibile memorizzare campi con vari tipi di dati per i metadati, ad esempio numeri, valori booleani, date, parole chiave e punti geografici. Puoi anche memorizzare campi con testo per informazioni descrittive per aggiungere più contesto ai vettori memorizzati. La colocazione dei tipi di dati riduce la complessità, aumenta la manutenibilità ed evita la duplicazione dei dati, problemi di compatibilità delle versioni e problemi di licenza. 

**Nota**  
Prendi nota delle seguenti informazioni:  
Amazon OpenSearch Serverless supporta la quantizzazione scalare Faiss a 16 bit, che può essere utilizzata per eseguire conversioni tra vettori mobili a 32 bit e vettori a 16 bit. [Per ulteriori informazioni, consulta Quantizzazione scalare a 16 bit di Faiss.](https://opensearch.org/docs/latest/search-plugins/knn/knn-vector-quantization/#faiss-16-bit-scalar-quantization) È inoltre possibile utilizzare vettori binari per ridurre i costi di memoria. Per ulteriori informazioni, consulta [Vettori binari](https://opensearch.org/docs/latest/field-types/supported-field-types/knn-vector#binary-vectors).
Amazon OpenSearch Serverless supporta la ricerca vettoriale basata su disco. La ricerca vettoriale basata su disco riduce in modo significativo i costi operativi per i carichi di lavoro vettoriali in ambienti con poca memoria. [Per ulteriori informazioni, consulta Ricerca vettoriale basata su disco.](https://docs.opensearch.org/2.19/vector-search/optimizing-storage/disk-based-vector-search/)

## Guida introduttiva alle raccolte di ricerca vettoriale
<a name="serverless-vector-tutorial"></a>

In questo tutorial, completerai i seguenti passaggi per archiviare, cercare e recuperare gli incorporamenti vettoriali in tempo reale:

1. [Configurazione delle autorizzazioni](#serverless-vector-permissions)

1. [Creazione di una raccolta](#serverless-vector-create)

1. [Caricamento e ricerca dei dati](#serverless-vector-index)

1. [Eliminazione della raccolta](#serverless-vector-delete)

### Fase 1: configurazione delle autorizzazioni
<a name="serverless-vector-permissions"></a>

Per completare questo tutorial (e per utilizzare OpenSearch Serverless in generale), devi disporre delle autorizzazioni AWS Identity and Access Management (IAM) corrette. In questo tutorial, crei una raccolta, carichi e cerchi dati, quindi elimini la raccolta.

L'utente o il ruolo devono avere una [policy basata sull'identità](security-iam-serverless.md#security-iam-serverless-id-based-policies) allegata con le seguenti autorizzazioni minime:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "aoss:CreateCollection",
        "aoss:ListCollections",
        "aoss:BatchGetCollection",
        "aoss:DeleteCollection",
        "aoss:CreateAccessPolicy",
        "aoss:ListAccessPolicies",
        "aoss:UpdateAccessPolicy",
        "aoss:CreateSecurityPolicy",
        "iam:ListUsers",
        "iam:ListRoles"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

------

Per ulteriori informazioni sulle autorizzazioni IAM OpenSearch Serverless, consulta. [Identity and Access Management per Amazon OpenSearch Serverless](security-iam-serverless.md)

### Fase 2: creazione di una raccolta
<a name="serverless-vector-create"></a>

Una *raccolta* è un gruppo di OpenSearch indici che interagiscono per supportare un carico di lavoro o un caso d'uso specifici.

**Per creare una raccolta Serverless OpenSearch**

1. Apri la console Amazon OpenSearch Service a [https://console.aws.amazon.com/aos/casa](https://console.aws.amazon.com/aos/home ).

1. Scegli **Collections** (Raccolte) nel pannello di navigazione a sinistra e scegli **Create collection** (Crea raccolta).

1. Assegna un nome all'**alloggiamento della** raccolta.

1. Per il tipo di raccolta, scegli **Ricerca vettoriale**. Per ulteriori informazioni, consulta [Scelta di un tipo di raccolta](serverless-overview.md#serverless-usecase).

1. In **Tipo di distribuzione**, deseleziona **Abilita ridondanza (repliche attive)**. In questo modo viene creata una raccolta in modalità sviluppo o test e il numero di unità di OpenSearch calcolo (OCUs) nella raccolta viene ridotto a due. Se vuoi creare un ambiente di produzione in questo tutorial, lascia selezionata la casella di controllo. 

1. In **Sicurezza**, seleziona **Easy create** per semplificare la configurazione di sicurezza. Per impostazione predefinita, tutti i dati nel motore vettoriale sono crittografati in transito e inattivi. Il motore vettoriale supporta autorizzazioni IAM granulari in modo da poter definire chi può creare, aggiornare ed eliminare crittografie, reti, raccolte e indici.

1. Scegli **Next (Successivo)**.

1. Controlla le impostazioni della raccolta e scegli **Submit** (Invia). Attendi alcuni minuti affinché lo stato della raccolta diventi `Active`.

### Fase 3: Caricamento e ricerca dei dati
<a name="serverless-vector-index"></a>

Un *indice* è una raccolta di documenti con uno schema di dati comune che consente di archiviare, cercare e recuperare gli incorporamenti vettoriali e altri campi. [https://www.postman.com/downloads/](https://www.postman.com/downloads/) Questo tutorial utilizza Dev Tools.

**Per indicizzare e cercare i dati nella collezione di alloggi**

1. Per creare un singolo indice per la tua nuova collezione, invia la seguente richiesta nella console [Dev Tools](https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/). Per impostazione predefinita, questo crea un indice con un `nmslib` motore e una distanza euclidea.

   ```
   PUT housing-index
   {
      "settings": {
         "index.knn": true
      },
      "mappings": {
         "properties": {
            "housing-vector": {
               "type": "knn_vector",
               "dimension": 3
            },
            "title": {
               "type": "text"
            },
            "price": {
               "type": "long"
            },
            "location": {
               "type": "geo_point"
            }
         }
      }
   }
   ```

1. Per indicizzare un singolo documento in *housing-index*, invia la seguente richiesta:

   ```
   POST housing-index/_doc
   {
     "housing-vector": [
       10,
       20,
       30
     ],
     "title": "2 bedroom in downtown Seattle",
     "price": "2800",
     "location": "47.71, 122.00"
   }
   ```

1. Per cercare proprietà simili a quelle del tuo indice, invia la seguente query:

   ```
   GET housing-index/_search
   {
       "size": 5,
       "query": {
           "knn": {
               "housing-vector": {
                   "vector": [
                       10,
                       20,
                       30
                   ],
                   "k": 5
               }
           }
       }
   }
   ```

### Fase 4: Eliminazione della raccolta
<a name="serverless-vector-delete"></a>

Poiché la collezione di *alloggi* è a scopo di test, assicurati di eliminarla quando hai finito di sperimentare.

**Per eliminare una raccolta OpenSearch Serverless**

1. Torna alla console di **Amazon OpenSearch Service**.

1. Scegli **Raccolte** nel riquadro di navigazione a sinistra e seleziona la raccolta delle **proprietà**.

1. Scegli **Elimina** e conferma l'eliminazione.

## Ricerca filtrata
<a name="serverless-vector-filter"></a>

Puoi utilizzare i filtri per affinare i risultati della ricerca semantica. Per creare un indice ed eseguire una ricerca filtrata sui tuoi documenti, sostituisci [Carica e cerca dati](#serverless-vector-index) nel tutorial precedente con le seguenti istruzioni. Gli altri passaggi rimangono invariati. Per ulteriori informazioni sui filtri, consulta [K-nn search with](https://opensearch.org/docs/latest/search-plugins/knn/filter-search-knn/) filters.

**Per indicizzare e cercare i dati nella collezione di alloggi**

1. Per creare un indice singolo per la tua raccolta, invia la seguente richiesta nella console [Dev Tools](https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/):

   ```
   PUT housing-index-filtered
   {
     "settings": {
       "index.knn": true
     },
     "mappings": {
       "properties": {
         "housing-vector": {
           "type": "knn_vector",
           "dimension": 3,
           "method": {
             "engine": "faiss",
             "name": "hnsw"
           }
         },
         "title": {
           "type": "text"
         },
         "price": {
           "type": "long"
         },
         "location": {
           "type": "geo_point"
         }
       }
     }
   }
   ```

1. Per indicizzare un singolo documento *housing-index-filtered*, invia la seguente richiesta:

   ```
   POST housing-index-filtered/_doc
   {
     "housing-vector": [
       10,
       20,
       30
     ],
     "title": "2 bedroom in downtown Seattle",
     "price": "2800",
     "location": "47.71, 122.00"
   }
   ```

1. Per cercare i tuoi dati relativi a un appartamento a Seattle a un determinato prezzo ed entro una determinata distanza da un punto geografico, invia la seguente richiesta:

   ```
   GET housing-index-filtered/_search
   {
     "size": 5,
     "query": {
       "knn": {
         "housing-vector": {
           "vector": [
             0.1,
             0.2,
             0.3
           ],
           "k": 5,
           "filter": {
             "bool": {
               "must": [
                 {
                   "query_string": {
                     "query": "Find me 2 bedroom apartment in Seattle under $3000 ",
                     "fields": [
                       "title"
                     ]
                   }
                 },
                 {
                   "range": {
                     "price": {
                       "lte": 3000
                     }
                   }
                 },
                 {
                   "geo_distance": {
                     "distance": "100miles",
                     "location": {
                       "lat": 48,
                       "lon": 121
                     }
                   }
                 }
               ]
             }
           }
         }
       }
     }
   }
   ```

## Carichi di lavoro su scala miliardaria
<a name="serverless-vector-billion"></a>

Le raccolte di ricerca vettoriale supportano carichi di lavoro con miliardi di vettori. Non è necessario reindicizzare per scopi di ridimensionamento perché il ridimensionamento automatico lo fa per te. Se hai milioni di vettori (o più) con un numero elevato di dimensioni e ne hai bisogno di più di 200 OCUs, contatta l'[AWS assistenza](https://aws.amazon.com/premiumsupport/) per aumentare il numero massimo di unità di OpenSearch calcolo (OCUs) per il tuo account. 

## Limitazioni
<a name="serverless-vector-limitations"></a>

Le raccolte di ricerca vettoriale presentano le seguenti limitazioni:
+ Le raccolte di ricerca vettoriale non supportano il motore Apache Lucene ANN.
+ Le raccolte di ricerca vettoriale supportano solo l'algoritmo HNSW con Faiss e non supportano IVF e IVFQ.
+ Le raccolte di ricerca vettoriale non supportano le operazioni API di warmup, stats e model training.
+ Le raccolte di ricerca vettoriale non supportano script in linea o memorizzati.
+ Le informazioni sul conteggio degli indici non sono disponibili nelle raccolte Console di gestione AWS per la ricerca vettoriale. 
+ L'intervallo di aggiornamento per gli indici nelle raccolte di ricerca vettoriale è di 60 secondi.

## Fasi successive
<a name="serverless-vector-next"></a>

Ora che sapete come creare una raccolta di ricerca vettoriale e indicizzare i dati, potreste provare alcuni dei seguenti esercizi:
+ Usa il client OpenSearch Python per lavorare con raccolte di ricerca vettoriale. Guarda questo tutorial su. [GitHub](https://github.com/opensearch-project/opensearch-py/blob/main/guides/plugins/knn.md) 
+ Usa il client OpenSearch Java per lavorare con raccolte di ricerca vettoriale. Guarda questo tutorial su. [GitHub](https://github.com/opensearch-project/opensearch-java/blob/main/guides/plugins/knn.md) 
+ Configurato LangChain per essere utilizzato OpenSearch come archivio vettoriale. LangChain è un framework open source per lo sviluppo di applicazioni basate su modelli linguistici. Per ulteriori informazioni, consulta la [documentazione relativa ad LangChain ](https://python.langchain.com/docs/integrations/vectorstores/opensearch).