Lavorare con le raccolte di ricerca vettoriale - OpenSearch Servizio Amazon

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

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 funzionalità di ricerca k-Nearest Neighbor (k-NN) in, ottieni le stesse funzionalità con la semplicità di un ambiente serverless. OpenSearch Il motore supporta le operazioni dell'API k-NN. OpenSearch 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ò supportare 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.

Guida introduttiva alle raccolte di ricerca vettoriale

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

Fase 1: configurazione delle autorizzazioni

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à allegata con le seguenti autorizzazioni minime:

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

Fase 2: creazione di una raccolta

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 all'indirizzo https://console.aws.amazon.com/aos/home.

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

  3. Assegna un nome all'alloggiamento della raccolta.

  4. Per il tipo di raccolta, scegli Ricerca vettoriale. Per ulteriori informazioni, consulta Scelta di un tipo di raccolta.

  5. 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 (OCU) nella raccolta viene ridotto a due. Se desideri creare un ambiente di produzione in questo tutorial, lascia selezionata la casella di controllo.

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

  7. Seleziona Successivo.

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

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. Puoi creare e caricare dati negli indici di una raccolta OpenSearch Serverless utilizzando la console Dev Tools in OpenSearch Dashboards o uno strumento HTTP come Postman o awscurl. Questo tutorial utilizza Dev Tools.

Indicizzazione e ricerca dei dati nella raccolta movies
  1. Per creare un singolo indice per la tua nuova collezione, invia la seguente richiesta nella console Dev Tools. 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" } } } }
  2. 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" }
  3. 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

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.

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

  3. Scegli Elimina e conferma l'eliminazione.

Ricerca filtrata

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 nel tutorial precedente con le seguenti istruzioni. Gli altri passaggi rimangono invariati. Per ulteriori informazioni sui filtri, consulta K-nn search with filters.

Indicizzazione e ricerca dei dati nella raccolta movies
  1. Per creare un indice singolo per la tua collezione, invia la seguente richiesta nella console Dev Tools:

    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" } } } }
  2. 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" }
  3. 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

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 hai bisogno di più di 200 OCU, contatta l'AWS assistenza per aumentare il numero massimo di unità di OpenSearch calcolo (OCU) per il tuo account.

Limitazioni

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 AWS Management Console per la ricerca vettoriale.

  • L'intervallo di aggiornamento per gli indici nelle raccolte di ricerca vettoriale è di 60 secondi.

Passaggi successivi

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

  • Usa il client OpenSearch Java per lavorare con raccolte di ricerca vettoriale. Guarda questo tutorial su. GitHub

  • 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 LangChain documentazione.