

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

# Tutorial: La tua prima ricerca vettoriale
<a name="VectorSearchTutorial"></a>

Immagina un catalogo di prodotti in cui gli acquirenti descrivono ciò che vogliono con parole proprie invece di corrispondere a parole chiave esatte. Puoi memorizzare un incorporamento vettoriale di ogni descrizione di prodotto in DynamoDB e quindi interrogare un indice vettoriale per trovare le corrispondenze più vicine.

Questo tutorial crea una tabella con un indice vettoriale, genera incorporamenti di 1024 dimensioni con Amazon Bedrock Titan Text Embeddings V2, carica 50 prodotti ed esegue una ricerca di similarità che restituisce le 5 corrispondenze più vicine. Ogni comando può essere incollato direttamente in un terminale. Per informazioni su come funzionano gli incorporamenti con DynamoDB, consulta. [Generazione di incorporamenti vettoriali](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Embeddings)

**Informazioni su scalabilità e richiamo**  
Un indice vettoriale di produzione contiene da milioni a miliardi di vettori. Gli indici vettoriali utilizzano la ricerca approssimativa del vicino più prossimo e le caratteristiche di richiamo di tale approccio diventano osservabili solo su scala molto più ampia. Considerate il catalogo di 50 articoli qui come una dimostrazione della meccanica. Per indicazioni su dimensionamento e messa a punto, vedere. [Le migliori pratiche per gli indici vettoriali](VectorSearchBestPractices.md)

## Prerequisiti
<a name="VectorSearchTutorial.Prerequisites"></a>

Prima di iniziare, assicurati di disporre di:
+ AWS CLI versione 2.36.16 o successiva. Il supporto per gli indici vettoriali è stato aggiunto AWS CLI agli AWS SDK nell'aggiornamento del modello di servizio rilasciato il 4 agosto 2026. Le versioni precedenti non riconoscono il `--vector-indexes` parametro o il `search-vectors` comando. Controlla la tua versione `aws --version` e aggiorna se necessario. Se utilizzi un AWS SDK anziché il AWS CLI, hai bisogno della versione `botocore` 1.43.64 o successiva o della versione equivalente dell'SDK della tua lingua.
+ Credenziali con autorizzazioni per le azioni DynamoDB`CreateTable`,,,, `DescribeTable` `PutItem` `BatchWriteItem` `Scan` `SearchVectors``UpdateTable`, e `DeleteTable` per l'azione Amazon Bedrock. `InvokeModel` `dynamodb:SearchVectors`è una nuova azione, quindi le politiche esistenti che concedono l'accesso in lettura a DynamoDB non la includono.
+ Accesso al modello Titan Text Embeddings V2 abilitato in Amazon Bedrock per il tuo account e la tua regione. L'accesso al modello Amazon Bedrock è concesso per account e per regione, quindi devi abilitare il modello prima di poterlo chiamare.
+ `jq`installato per rimodellare l'output del modello in formato DynamoDB.
+ Una regione in cui sono disponibili sia gli indici vettoriali DynamoDB che Amazon Bedrock Titan Text Embeddings V2. La disponibilità dei modelli Amazon Bedrock varia in base alla regione ed è generalmente più limitata rispetto alla copertura regionale DynamoDB, quindi conferma entrambi prima di scegliere una regione. Per la disponibilità dei modelli Amazon Bedrock, consulta il supporto dei [ modelli per AWS regione ](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) nella Guida per l'utente di Amazon Bedrock. * *

**Costi**  
Questo tutorial prevede costi per le chiamate ai modelli Amazon Bedrock e lo storage DynamoDB. Effettua 51 chiamate di incorporamento, ciascuna fatturata come richiesta di inferenza Amazon Bedrock, su input brevi e composti da una sola frase. I costi di archiviazione di DynamoDB si applicano finché esistono la tabella e l'indice vettoriale.

**Conferma quale regione stai utilizzando**  
Ogni comando di questo tutorial deve essere eseguito nella stessa regione. Conferma la regione che AWS CLI verrà effettivamente utilizzata prima di iniziare, perché ha la `AWS_REGION` precedenza ed entrambe hanno la precedenza sull'`region`impostazione nel tuo AWS CLI file di configurazione. `AWS_DEFAULT_REGION` Un `AWS_REGION` valore errato nella shell crea la tabella in una posizione diversa dalla regione desiderata e il modello Amazon Bedrock potrebbe non essere abilitato in tale regione. Per eliminare ogni dubbio, trasmetti `--region {{region}}` esplicitamente ogni comando.

**`SearchVectors`utilizza un endpoint separato**  
`SearchVectors`si risolve in un endpoint di ricerca dedicato anziché nell'endpoint DynamoDB standard. In una regione commerciale, le richieste vanno a`search-dynamodb.{{region}}.amazonaws.com`, mentre tutte le altre operazioni di questo tutorial vanno a. `dynamodb.{{region}}.amazonaws.com` Le varianti FIPS e dual-stack seguono lo stesso schema. Ciò ha due conseguenze:  
Se la rete limita il traffico in uscita tramite un endpoint VPC, un proxy o una lista consentita di uscita, è necessario consentire anche il nome host di ricerca. In caso contrario`CreateTable`, le operazioni di scrittura hanno esito positivo e solo `SearchVectors` negativo, in genere con un errore di connessione che non indica la causa.
Non utilizzare `--endpoint-url` per sovrascrivere l'endpoint DynamoDB per questi comandi. Un singolo override non può servire entrambi i nomi host e interromperà il routing di ricerca.

1. **Crea una tabella con un indice vettoriale. ** Questo crea una `Products` tabella con un indice vettoriale denominato `DescriptionIndex` nell'`DescriptionVector`attributo. L'indice utilizza la funzione di `COSINE` distanza con 1024 dimensioni per corrispondere all'output di Titan Text Embeddings V2. Poiché non è definita alcuna chiave di partizione dell'indice vettoriale, non è necessario eseguire una ricerca. `SearchConditionExpression`

   ```
   aws dynamodb create-table \
       --table-name Products \
       --attribute-definitions AttributeName=ProductId,AttributeType=S \
       --key-schema AttributeName=ProductId,KeyType=HASH \
       --billing-mode PAY_PER_REQUEST \
       --vector-indexes \
           "[
               {
                   \"IndexName\": \"DescriptionIndex\",
                   \"VectorAttribute\": {\"AttributeName\": \"DescriptionVector\"},
                   \"Projection\": {\"ProjectionType\": \"ALL\"},
                   \"Dimensions\": 1024,
                   \"DistanceFunction\": \"COSINE\"
               }
           ]"
   ```

   Questo esempio utilizza `ProjectionType` of `ALL` in modo che ogni attributo sia disponibile per i risultati della ricerca. Se `INCLUDE` invece lo usi, nota che il budget previsto per gli attributi non chiave è condiviso: l'attributo vector conta come un attributo e ogni elemento dello schema di `INLINE_FILTER` ricerca conta come uno. `HASH`gli elementi dello schema di ricerca non vengono conteggiati ai fini del limite.

1. **Attendi che l'indice diventi attivo. ** Esegui questo finché non `IndexStatus` lo è`ACTIVE`.

   ```
   aws dynamodb describe-table \
       --table-name Products \
       --query 'Table.VectorIndexes[0].[IndexName,IndexStatus,Backfilling]'
   ```

   Un indice creato come parte di`CreateTable`, come in questo tutorial, non `Backfilling` viene riportato e viene restituito `null` dal comando. In tal caso, usalo `IndexStatus` da solo come segnale.

   `Backfilling`viene segnalato per un indice vettoriale con cui si aggiunge a una tabella esistente`UpdateTable`. In tal caso, attendi che `IndexStatus` `ACTIVE` `Backfilling` sia così `false` prima di fare affidamento sui risultati di ricerca completi.
**Attendi l'indice, non solo la tabella**  
Non utilizzatelo `aws dynamodb wait table-exists` per filtrare la ricerca. Quel cameriere corrisponde a attivo`Table.TableStatus`, che diventa attivo `ACTIVE` finché l'indice vettoriale può ancora esserlo`CREATING`. Non è previsto alcun limite per la disponibilità dell'indice vettoriale, quindi è necessario eseguire il `DescribeTable` polling come mostrato. La ricerca in un indice che non lo è ancora ha `ACTIVE` esito negativo e la ricerca durante il backfill può restituire risultati incompleti.  
Per lo stesso motivo, non è possibile eliminare la tabella finché non è terminata la creazione di ogni indice vettoriale. `DeleteTable`restituisce `ResourceInUseException` il messaggio «Impossibile eliminare la tabella durante la creazione, l'aggiornamento o l'eliminazione degli indici».

1. **Crea il catalogo dei prodotti. ** Salva i seguenti 50 prodotti in un file separato da tabulazioni denominato. `products.tsv` Ogni riga contiene un ID del prodotto, un nome e una descrizione composta da una frase. Il catalogo contiene dieci gruppi di cinque prodotti correlati, il che rende i risultati della ricerca nell'ultimo passaggio facili da interpretare.

   ```
   p01	Insulated Travel Mug	A vacuum insulated stainless steel mug that keeps hot drinks warm for up to twelve hours.
   p02	Stovetop Espresso Maker	A compact aluminum pot that brews strong espresso style coffee directly on a gas or electric burner.
   p03	Manual Burr Coffee Grinder	A hand cranked grinder with adjustable ceramic burrs for consistent coffee grounds.
   p04	Pour Over Coffee Dripper	A ceramic cone that sits on a mug and brews a single cup of filter coffee.
   p05	Electric Milk Frother	A handheld battery powered whisk that creates dense foam for lattes and cappuccinos.
   p06	Lightweight Running Shoe	A breathable mesh road shoe with cushioned foam midsole for daily training runs.
   p07	Trail Running Shoe	An aggressive lugged outsole shoe built for grip on loose gravel and muddy trails.
   p08	Moisture Wicking Running Socks	Ankle height socks knitted from synthetic yarn that pulls sweat away from the skin.
   p09	Reflective Running Vest	A lightweight vest with high visibility strips for running safely after dark.
   p10	Hydration Waist Belt	An elastic belt that holds two small water flasks and a phone during long runs.
   p11	Ergonomic Mesh Office Chair	An adjustable desk chair with breathable mesh back and lumbar support for long work sessions.
   p12	Sit Stand Desk Converter	A height adjustable platform that raises a monitor and keyboard for standing work.
   p13	Monitor Arm Mount	A clamp mounted articulating arm that lifts a display off the desk surface.
   p14	Under Desk Footrest	An angled cushioned platform that supports the feet and improves seated posture.
   p15	Wireless Split Keyboard	A two piece keyboard that separates for a natural shoulder width typing position.
   p16	Noise Cancelling Headphones	Over ear wireless headphones that actively silence engine noise on long flights.
   p17	Wireless Earbuds	Compact in ear buds with a charging case and multi hour battery for commuting.
   p18	Portable Bluetooth Speaker	A water resistant rechargeable speaker sized to fit in a backpack side pocket.
   p19	Studio Monitor Headphones	Wired closed back headphones with flat frequency response for audio mixing.
   p20	Wired Lapel Microphone	A small clip on microphone for recording clear speech during interviews.
   p21	Four Season Backpacking Tent	A double wall tent with an aluminum pole set rated for wind and heavy rain.
   p22	Down Sleeping Bag	A mummy shaped bag filled with compressible down insulation for cold weather camping.
   p23	Inflatable Sleeping Pad	A lightweight pad that inflates in a few breaths and packs down to bottle size.
   p24	Canister Camping Stove	A screw on burner that boils water quickly using a compact fuel canister.
   p25	Rechargeable Camp Lantern	A collapsible lantern with adjustable brightness and a built in battery.
   p26	Cast Iron Skillet	A preseasoned heavy pan that holds heat evenly for searing and oven baking.
   p27	Nonstick Frying Pan	A coated aluminum pan that releases eggs and fish without added oil.
   p28	Stainless Steel Stock Pot	A tall wide pot for boiling pasta and simmering large batches of soup.
   p29	Enameled Dutch Oven	A heavy lidded pot that moves from stovetop to oven for slow braising.
   p30	Bamboo Cutting Board	A large reversible board with a juice groove around the edge.
   p31	Padded Laptop Backpack	A water resistant pack with a suspended sleeve that protects a fifteen inch laptop.
   p32	Slim Laptop Sleeve	A close fitting neoprene case that shields a notebook inside a larger bag.
   p33	Rolling Carry On Suitcase	A hard shell four wheel case sized to fit most overhead cabin bins.
   p34	Packing Cube Set	Zippered fabric cubes that compress clothing and organize a suitcase.
   p35	Leather Messenger Bag	A single strap shoulder bag with a padded compartment and interior pockets.
   p36	Daily Facial Moisturizer	A light lotion with humectants that hydrates skin without leaving residue.
   p37	Mineral Sunscreen Lotion	A broad spectrum zinc based sunscreen formulated for sensitive facial skin.
   p38	Gentle Foaming Cleanser	A low pH face wash that removes oil and sunscreen without stripping the skin.
   p39	Vitamin C Serum	A brightening serum applied before moisturizer to even skin tone over time.
   p40	Overnight Repair Cream	A rich night cream with ceramides that restores the skin barrier while sleeping.
   p41	Stainless Steel Dog Bowl	A weighted nonslip bowl that resists tipping during enthusiastic feeding.
   p42	Padded Dog Harness	An adjustable chest harness that distributes pull away from the neck on walks.
   p43	Retractable Dog Leash	A spring loaded leash that extends and locks at several walking lengths.
   p44	Interactive Cat Puzzle Feeder	A slow feed tray that makes a cat work for dry food and eat more slowly.
   p45	Self Cleaning Litter Box	An enclosed box with a raking mechanism that sifts waste after each use.
   p46	Bypass Pruning Shears	Sharp hardened blades that make clean cuts on green stems and small branches.
   p47	Long Handled Garden Spade	A steel bladed spade with a wooden shaft for turning soil and digging beds.
   p48	Adjustable Hose Spray Nozzle	A metal nozzle that shifts from a fine mist to a strong jet stream.
   p49	Raised Garden Bed Kit	Interlocking cedar panels that assemble into an elevated planting box.
   p50	Drip Irrigation Starter Kit	Tubing and emitters that deliver water slowly to the base of each plant.
   ```

   Il separatore tra i tre campi deve essere un carattere di tabulazione letterale. Se copi il catalogo da un browser, verifica che le schede siano sopravvissute prima di continuare.

1. **Genera un incorporamento per un prodotto. ** Esegui prima una singola chiamata di incorporamento per confermare che l'accesso al tuo modello Amazon Bedrock funziona. Il `inputText` campo contiene il testo da incorporare, `dimensions` imposta la dimensione dell'output (i valori validi sono 256, 512 o 1024) e `normalize` produce vettori di lunghezza unitaria, consigliati per la ricerca di similarità del coseno.

   ```
   mkdir -p emb
   
   aws bedrock-runtime invoke-model \
       --model-id amazon.titan-embed-text-v2:0 \
       --body '{"inputText":"A vacuum insulated stainless steel mug that keeps hot drinks warm for up to twelve hours.","dimensions":1024,"normalize":true}' \
       --cli-binary-format raw-in-base64-out \
       --content-type application/json \
       --accept application/json \
       emb/p01.json
   ```

   Il contrassegno è obbligatorio. `--cli-binary-format raw-in-base64-out` AWS CLI v2 utilizza per impostazione predefinita la codifica base64 per i parametri binari, quindi senza questo flag il corpo JSON non elaborato non viene inviato correttamente. La risposta viene scritta `emb/p01.json` e contiene un array di 1024 numeri in virgola mobile. `embedding` Conferma il conteggio delle dimensioni.

   ```
   jq '.embedding | length' emb/p01.json
   ```

   L'output è `1024`:

1. **Scrivi il primo prodotto. ** Trasforma l'incorporamento nel formato dell'elemento DynamoDB e scrivilo. L'attributo vector stored utilizza il tipo DynamoDB `L` (list) che racchiude ogni numero in un tipo. `N`

   ```
   jq '{"ProductId":{"S":"p01"},"Title":{"S":"Insulated Travel Mug"},"DescriptionVector":{"L":[.embedding[]|{"N":(.|tostring)}]}}' emb/p01.json > item-p01.json
   
   aws dynamodb put-item --table-name Products --item file://item-p01.json
   ```
**Dimensioni del vettore e limiti degli elementi**  
Un vettore di 1024 dimensioni aggiunge circa 32 KB al payload della richiesta e circa 5 KB all'elemento archiviato, ben entro il limite di dimensione degli elementi di 400 KB di DynamoDB. Il numero delle dimensioni è il fattore principale della dimensione dell'articolo quando si archiviano gli incorporamenti.

1. **Incorpora i prodotti rimanenti. ** Questo ciclo genera un incorporamento per ogni prodotto rimanente. Salta qualsiasi file già esistente, quindi puoi rieseguirlo in sicurezza se una chiamata fallisce.

   ```
   while IFS=$'\t' read -r id title description; do
       [ -s "emb/$id.json" ] && continue
       body=$(jq -n --arg t "$description" '{inputText:$t,dimensions:1024,normalize:true}')
       aws bedrock-runtime invoke-model \
           --model-id amazon.titan-embed-text-v2:0 \
           --body "$body" \
           --cli-binary-format raw-in-base64-out \
           --content-type application/json \
           --accept application/json \
           "emb/$id.json" >/dev/null || echo "FAILED $id"
   done < products.tsv
   
   ls emb/*.json | wc -l
   ```

   Il conteggio deve essere 50 prima di continuare. Se viene stampata una chiamata`FAILED`, esegui nuovamente il ciclo; riprova solo i file mancanti.
**InvokeModel quote tariffarie**  
Amazon Bedrock applica le quote tariffarie richieste a. `InvokeModel` Se modifichi questo ciclo per effettuare chiamate in parallelo, aspettati eccezioni di limitazione su alcune chiamate e verifica sempre il numero finale dei file anziché dare per scontato che tutte le chiamate siano andate a buon fine. Un catalogo parzialmente incorporato viene caricato senza errori e produce risultati di ricerca che omettono silenziosamente i prodotti mancanti.

1. **Carica i prodotti rimanenti. ** Carichi utili di richieste di build di 25 elementi ciascuno, che è il numero massimo `BatchWriteItem` accettato.

   ```
   batch=0
   count=0
   echo -n '{"Products":[' > batch-0.json
   while IFS=$'\t' read -r id title description; do
       if [ "$count" -eq 25 ]; then
           echo ']}' >> "batch-$batch.json"
           batch=$((batch+1)); count=0
           echo -n '{"Products":[' > "batch-$batch.json"
       fi
       [ "$count" -gt 0 ] && echo -n ',' >> "batch-$batch.json"
       jq -c --arg id "$id" --arg title "$title" \
           '{PutRequest:{Item:{ProductId:{S:$id},Title:{S:$title},
             DescriptionVector:{L:[.embedding[]|{"N":(.|tostring)}]}}}}' \
           "emb/$id.json" >> "batch-$batch.json"
       count=$((count+1))
   done < <(tail -n +2 products.tsv)
   echo ']}' >> "batch-$batch.json"
   ```

   Il ciclo viene letto da un reindirizzamento anziché da una pipe perché un `while` ciclo piped viene eseguito in una subshell di alcune shell, che elimina `count` i valori `batch` and e produce file batch non validi.

   Invia ogni batch. `BatchWriteItem`può avere esito parziale, quindi invia nuovamente tutto ciò che restituisce. `UnprocessedItems`

   ```
   for f in batch-*.json; do
       cp "$f" pending.json
       for attempt in 1 2 3 4 5; do
           aws dynamodb batch-write-item \
               --request-items file://pending.json \
               --output json > resp.json
           left=$(jq '(.UnprocessedItems.Products // []) | length' resp.json)
           echo "$f attempt $attempt: unprocessed=$left"
           [ "$left" -eq 0 ] && break
           jq '.UnprocessedItems' resp.json > pending.json
           sleep 2
       done
   done
   ```

   Conferma che tutti i 50 articoli sono presenti.

   ```
   aws dynamodb scan --table-name Products --select COUNT --query 'Count'
   ```
**ItemCount gli aggiornamenti sono ritardati**  
`IndexSizeBytes`I valori `ItemCount` e `DescribeTable` riportati per un indice vettoriale vengono aggiornati all'incirca ogni sei ore, quindi subito dopo il caricamento possono comunque essere letti `0` anche se tutti gli elementi sono stati scritti. Usalo `Scan` con`--select COUNT`, come mostrato, per verificare un carico. Non considerare uno zero `ItemCount` come un carico fallito.

1. **Genera l'incorporamento e la ricerca di una query. ** Incorpora la frase di ricerca con lo stesso numero di modelli e dimensioni utilizzati per gli articoli archiviati.

   ```
   aws bedrock-runtime invoke-model \
       --model-id amazon.titan-embed-text-v2:0 \
       --body '{"inputText":"How can I make my desk more comfortable to work at","dimensions":1024,"normalize":true}' \
       --cli-binary-format raw-in-base64-out \
       --content-type application/json \
       --accept application/json \
       embedding-query.json
   ```
**SearchVector il formato è diverso dal formato vettoriale memorizzato**  
Quando memorizzate un vettore in un attributo item, lo racchiudete in un tipo `L` (elenco):`{"L":[{"N":"0.123"},...]}`. Quando si passa un vettore di interrogazione a`SearchVectors`, si utilizza un semplice array di `N` valori senza il `L` wrapper:. `[{"N":"0.123"},...]` La seguente `jq` trasformazione è diversa da quella utilizzata per gli elementi archiviati per questo motivo. Per ulteriori informazioni, consulta [Ricerca di base](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Search.Basic).

   ```
   jq '[.embedding[]|{"N":(.|tostring)}]' embedding-query.json > query-vector.json
   
   aws dynamodb search-vectors \
       --table-name Products \
       --index-name DescriptionIndex \
       --search-vector file://query-vector.json \
       --top-k 5 \
       --projection-expression "ProductId, Title" \
       --return-consumed-capacity TOTAL
   ```

   Il vettore di interrogazione e i vettori memorizzati devono provenire dallo stesso modello di incorporamento e devono avere lo stesso numero di dimensioni. L'utilizzo di un modello o di un numero di dimensioni diverso produce risultati privi di significato o un errore di convalida.

1. **Leggete i risultati. ** DynamoDB restituisce i risultati ordinati per somiglianza, con l'elemento più simile per primo. Ogni risultato contiene gli attributi `Item` proiettati e un. `Score`

   ```
   {
       "SearchResults": [
           {
               "Item": {
                   "ProductId": { "S": "p11" },
                   "Title": { "S": "Ergonomic Mesh Office Chair" }
               },
               "Score": 0.6130197048187256
           },
           {
               "Item": {
                   "ProductId": { "S": "p12" },
                   "Title": { "S": "Sit Stand Desk Converter" }
               },
               "Score": 0.781868577003479
           },
           {
               "Item": {
                   "ProductId": { "S": "p14" },
                   "Title": { "S": "Under Desk Footrest" }
               },
               "Score": 0.816369354724884
           },
           {
               "Item": {
                   "ProductId": { "S": "p13" },
                   "Title": { "S": "Monitor Arm Mount" }
               },
               "Score": 0.8283305168151855
           },
           {
               "Item": {
                   "ProductId": { "S": "p15" },
                   "Title": { "S": "Wireless Split Keyboard" }
               },
               "Score": 0.8469693064689636
           }
       ],
       "ConsumedCapacity": {
           "VectorSearchRequestBytes": 31449.0
       }
   }
   ```

   I punteggi dipendono dal modello di incorporamento e dall'esatto testo di input, quindi i valori saranno leggermente diversi. Ciò che conta è quali elementi sono stati selezionati e in quale ordine. La ricerca non conteneva le parole sedia, monitor o tastiera, ma ha restituito tutti e cinque i prodotti per scrivania e ufficio davanti agli altri 45 articoli del catalogo. Non viene visualizzato nulla dei gruppi dedicati al caffè, al campeggio o agli animali domestici.

   Prova con altre domande per vedere lo stesso comportamento con gruppi diversi. Ripeti il passaggio precedente `"Something to brew fresh coffee at home"` e i risultati migliori sono la macchina per caffè espresso, il gocciolatore e il montalatte. Ripeti con `"Keeping my dog safe on walks"` e il guinzaglio e l'imbracatura saranno al primo posto, seguiti da articoli che sono solo vagamente correlati, perché il catalogo contiene solo due prodotti che coincidono strettamente. Vale la pena notare quest'ultimo caso: la ricerca restituisce sempre il numero di articoli richiesti, anche quando il catalogo non contiene molte corrispondenze soddisfacenti. Usa i `Score` valori, non il conteggio dei risultati, per giudicare la qualità della corrispondenza.

   La modalità di lettura di un punteggio dipende dalla funzione di distanza utilizzata dall'indice:
   + `COSINE`e `EUCLIDEAN` restituisci gli elementi con i punteggi più bassi, quindi più basso è più simile. I punteggi del coseno vanno da 0 per la direzione identica a 2 per la direzione opposta.
   + `DOT_PRODUCT`restituisce gli elementi con i punteggi più alti, quindi più alto è più simile.

   Questo indice utilizza`COSINE`, quindi il primo risultato ha il punteggio più basso. La ricerca con un testo identico a una descrizione memorizzata restituisce l'elemento per primo con un punteggio pari o prossimo a zero.

## Eliminazione
<a name="VectorSearchTutorial.Cleanup"></a>

Per evitare addebiti continui, elimina le risorse che hai creato in questo tutorial. L'archiviazione degli indici vettoriali viene fatturata per tutto il tempo in cui l'indice esiste, indipendentemente dal fatto che vengano eseguite o meno ricerche su di esso.

Per eliminare l'indice vettoriale ma conservare la `Products` tabella e i relativi elementi, usa`UpdateTable`. Gli elementi rimangono nella tabella e viene rimosso solo l'indice.

```
aws dynamodb update-table \
    --table-name Products \
    --vector-index-updates \
        "[
            {\"Delete\": {\"IndexName\": \"DescriptionIndex\"}}
        ]"
```

Per eliminare la tabella e il relativo indice vettoriale insieme, elimina la tabella.

```
aws dynamodb delete-table --table-name Products
```

Conferma che la tabella è sparita. Il comando seguente restituisce una `ResourceNotFoundException` volta completata l'eliminazione.

```
aws dynamodb describe-table --table-name Products
```

Per ulteriori informazioni sulla rimozione di un indice vettoriale da una tabella che si desidera conservare, vedere. [Eliminazione di un indice vettoriale](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Delete)

## Fasi successive
<a name="VectorSearchTutorial.NextSteps"></a>

Dopo aver completato questa ricerca vettoriale di base, esplora questi argomenti correlati.
+ Filtrare i risultati della ricerca con una chiave di partizione dell'indice vettoriale e filtri in linea: vedi. [Ricerca di base](VectorSearchWorkingWith.md#VectorSearchWorkingWith.Search.Basic)
+ Procedure consigliate per la scelta delle funzioni di distanza, delle chiavi di partizione e delle dimensioni: vedere. [Le migliori pratiche per gli indici vettoriali](VectorSearchBestPractices.md)
+ Monitoraggio della capacità e delle metriche degli indici vettoriali: vedere. [Monitoraggio della capacità dell'indice vettoriale](VectorSearchMonitoring.md)