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
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
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
Prerequisiti
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-indexesparametro o ilsearch-vectorscomando. Controlla la tua versioneaws --versione aggiorna se necessario. Se utilizzi un AWS SDK anziché il AWS CLI, hai bisogno della versionebotocore1.43.64 o successiva o della versione equivalente dell'SDK della tua lingua. -
Credenziali con autorizzazioni per le azioni DynamoDB
CreateTable,,,,DescribeTablePutItemBatchWriteItemScanSearchVectorsUpdateTable, eDeleteTableper l'azione Amazon Bedrock.InvokeModeldynamodb: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.
-
jqinstallato 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 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'regionimpostazione 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
esplicitamente ogni comando.region
SearchVectorsutilizza un endpoint separato
SearchVectorssi risolve in un endpoint di ricerca dedicato anziché nell'endpoint DynamoDB standard. In una regione commerciale, le richieste vanno asearch-dynamodb., mentre tutte le altre operazioni di questo tutorial vanno a. region.amazonaws.comdynamodb. Le varianti FIPS e dual-stack seguono lo stesso schema. Ciò ha due conseguenze:region.amazonaws.com
-
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 soloSearchVectorsnegativo, in genere con un errore di connessione che non indica la causa. -
Non utilizzare
--endpoint-urlper sovrascrivere l'endpoint DynamoDB per questi comandi. Un singolo override non può servire entrambi i nomi host e interromperà il routing di ricerca.
-
Crea una tabella con un indice vettoriale. Questo crea una
Productstabella con un indice vettoriale denominatoDescriptionIndexnell'DescriptionVectorattributo. L'indice utilizza la funzione diCOSINEdistanza 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.SearchConditionExpressionaws 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
ProjectionTypeofALLin modo che ogni attributo sia disponibile per i risultati della ricerca. SeINCLUDEinvece 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 diINLINE_FILTERricerca conta come uno.HASHgli elementi dello schema di ricerca non vengono conteggiati ai fini del limite. -
Attendi che l'indice diventi attivo. Esegui questo finché non
IndexStatuslo è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, nonBackfillingviene riportato e viene restituitonulldal comando. In tal caso, usaloIndexStatusda solo come segnale.Backfillingviene segnalato per un indice vettoriale con cui si aggiunge a una tabella esistenteUpdateTable. In tal caso, attendi cheIndexStatusACTIVEBackfillingsia cosìfalseprima di fare affidamento sui risultati di ricerca completi.Attendi l'indice, non solo la tabella
Non utilizzatelo
aws dynamodb wait table-existsper filtrare la ricerca. Quel cameriere corrisponde a attivoTable.TableStatus, che diventa attivoACTIVEfinché l'indice vettoriale può ancora esserloCREATING. Non è previsto alcun limite per la disponibilità dell'indice vettoriale, quindi è necessario eseguire ilDescribeTablepolling come mostrato. La ricerca in un indice che non lo è ancora haACTIVEesito 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.
DeleteTablerestituisceResourceInUseExceptionil messaggio «Impossibile eliminare la tabella durante la creazione, l'aggiornamento o l'eliminazione degli indici». -
Crea il catalogo dei prodotti. Salva i seguenti 50 prodotti in un file separato da tabulazioni denominato.
products.tsvOgni 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.
-
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
inputTextcampo contiene il testo da incorporare,dimensionsimposta la dimensione dell'output (i valori validi sono 256, 512 o 1024) enormalizeproduce 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.jsonIl contrassegno è obbligatorio.
--cli-binary-format raw-in-base64-outAWS 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 scrittaemb/p01.jsone contiene un array di 1024 numeri in virgola mobile.embeddingConferma il conteggio delle dimensioni.jq '.embedding | length' emb/p01.jsonL'output è
1024: -
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.Njq '{"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.jsonDimensioni 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.
-
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 -lIl 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.
InvokeModelSe 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. -
Carica i prodotti rimanenti. Carichi utili di richieste di build di 25 elementi ciascuno, che è il numero massimo
BatchWriteItemaccettato.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
whileciclo piped viene eseguito in una subshell di alcune shell, che eliminacounti valoribatchand e produce file batch non validi.Invia ogni batch.
BatchWriteItempuò avere esito parziale, quindi invia nuovamente tutto ciò che restituisce.UnprocessedItemsfor 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 doneConferma che tutti i 50 articoli sono presenti.
aws dynamodb scan --table-name Products --select COUNT --query 'Count'ItemCount gli aggiornamenti sono ritardati
IndexSizeBytesI valoriItemCounteDescribeTableriportati per un indice vettoriale vengono aggiornati all'incirca ogni sei ore, quindi subito dopo il caricamento possono comunque essere letti0anche se tutti gli elementi sono stati scritti. UsaloScancon--select COUNT, come mostrato, per verificare un carico. Non considerare uno zeroItemCountcome un carico fallito. -
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.jsonSearchVector 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 aSearchVectors, si utilizza un semplice array diNvalori senza ilLwrapper:.[{"N":"0.123"},...]La seguentejqtrasformazione è diversa da quella utilizzata per gli elementi archiviati per questo motivo. Per ulteriori informazioni, consulta Ricerca di base.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 TOTALIl 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.
-
Leggete i risultati. DynamoDB restituisce i risultati ordinati per somiglianza, con l'elemento più simile per primo. Ogni risultato contiene gli attributi
Itemproiettati 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 iScorevalori, 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:
-
COSINEeEUCLIDEANrestituisci 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_PRODUCTrestituisce 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
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, usaUpdateTable. 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
Fasi successive
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
-
Procedure consigliate per la scelta delle funzioni di distanza, delle chiavi di partizione e delle dimensioni: vedere. Le migliori pratiche per gli indici vettoriali
-
Monitoraggio della capacità e delle metriche degli indici vettoriali: vedere. Monitoraggio della capacità dell'indice vettoriale