Arricchimento semantico automatico per Amazon Service OpenSearch - 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à.

Arricchimento semantico automatico per Amazon Service OpenSearch

Introduzione

Amazon OpenSearch Service utilizza la word-to-word corrispondenza (ricerca lessicale) per trovare risultati, in modo simile ad altri motori di ricerca tradizionali. Questo approccio funziona bene per domande specifiche come codici di prodotto o numeri di modello, ma ha difficoltà con le ricerche astratte in cui la comprensione delle intenzioni dell'utente diventa fondamentale. Ad esempio, quando cerchi «scarpe per la spiaggia», la ricerca lessicale trova le singole parole «scarpe», «spiaggia», «per» e «il» negli articoli del catalogo, quindi potrebbero mancare prodotti pertinenti come «sandali impermeabili» o «calzature da surf» che non contengono i termini di ricerca esatti.

L'arricchimento semantico automatico risolve questa limitazione considerando sia le corrispondenze delle parole chiave sia il significato contestuale delle ricerche. Questa funzionalità comprende l'intento di ricerca e migliora la pertinenza della ricerca fino al 20%. Abilita questa funzionalità per i campi di testo dell'indice per migliorare i risultati di ricerca.

Nota

L'arricchimento semantico automatico è disponibile per i domini di OpenSearch servizio che eseguono la versione 2.19 o successiva. Inoltre, anche i domini con OpenSearch versione 2.19 devono disporre dell'ultimo aggiornamento della versione del software di servizio. Attualmente, la funzionalità è disponibile per i domini pubblici e i domini VPC non sono supportati.

Dettagli del modello e benchmark delle prestazioni

Sebbene questa funzionalità gestisca le complessità tecniche dietro le quinte senza esporre il modello sottostante, forniamo trasparenza attraverso una breve descrizione del modello e risultati di benchmark per aiutarvi a prendere decisioni informate sull'adozione delle funzionalità nei vostri carichi di lavoro critici.

L'arricchimento semantico automatico utilizza un modello sparso preaddestrato e gestito dai servizi che funziona in modo efficace senza richiedere regolazioni di precisione personalizzate. Il modello analizza i campi specificati, espandendoli in vettori sparsi basati su associazioni apprese da diversi dati di addestramento. I termini estesi e i relativi pesi di significatività vengono archiviati nel formato di indice Lucene nativo per un recupero efficiente. Abbiamo ottimizzato questo processo utilizzando la modalità solo documento, in cui la codifica avviene solo durante l'inserimento dei dati. Le query di ricerca vengono semplicemente tokenizzate anziché elaborate tramite il modello sparso, il che rende la soluzione conveniente e performante.

La nostra convalida delle prestazioni durante lo sviluppo delle funzionalità ha utilizzato il set di dati MS MARCO per il recupero dei passaggi, con passaggi della lunghezza media di 334 caratteri. Per quanto riguarda il punteggio di pertinenza, abbiamo misurato il guadagno cumulativo medio Normalized Discounted Cumulative Gain (NDCG) per i primi 10 risultati di ricerca (ndcg @10) sul benchmark BEIR per i contenuti in inglese e il ndcg @10 medio su MIRACL per i contenuti multilingue. Abbiamo valutato la latenza mediante misurazioni lato client del 90° percentile (p90) e la risposta di ricerca p90 ha rilevato dei valori. Questi benchmark forniscono indicatori prestazionali di base sia per la pertinenza della ricerca che per i tempi di risposta. Ecco i principali numeri di riferimento:

  • Lingua inglese - Miglioramento della pertinenza del 20% rispetto alla ricerca lessicale. Ha inoltre ridotto la latenza di ricerca P90 del 7,7% rispetto alla ricerca lessicale (BM25 è di 26 ms e l'arricchimento semantico automatico è di 24 ms).

  • Multilingue: miglioramento della pertinenza del 105% rispetto alla ricerca lessicale, mentre la latenza di ricerca P90 è aumentata del 38,4% rispetto alla ricerca lessicale (è di 26 ms e l'arricchimento semantico automatico è di 36 ms). BM25

Data la natura unica di ogni carico di lavoro, ti invitiamo a valutare questa funzionalità nel tuo ambiente di sviluppo utilizzando i tuoi criteri di benchmarking prima di prendere decisioni di implementazione.

Lingue supportate

La funzionalità supporta l'inglese. Inoltre, il modello supporta anche arabo, bengalese, cinese, finlandese, francese, hindi, indonesiano, giapponese, coreano, persiano, russo, spagnolo, swahili e telugu.

Imposta un indice di arricchimento semantico automatico per i domini

La configurazione di un indice con l'arricchimento semantico automatico abilitato per i campi di testo è semplice e puoi gestirlo tramite la console e i CloudFormation modelli durante la creazione di APIs nuovi indici. Per abilitarlo per un indice esistente, è necessario ricreare l'indice con l'arricchimento semantico automatico abilitato per i campi di testo.

Esperienza da console: la AWS console consente di creare facilmente un indice con campi di arricchimento semantico automatico. Dopo aver selezionato un dominio, troverai il pulsante di creazione dell'indice nella parte superiore della console. Dopo aver fatto clic sul pulsante di creazione dell'indice, troverai le opzioni per definire campi di arricchimento semantico automatico. In un indice, puoi avere combinazioni di arricchimento semantico automatico per l'inglese e campi multilingue, oltre che lessicali.

Esperienza con le API - Per creare un indice di arricchimento semantico automatico utilizzando l'interfaccia a riga di comando ()AWS CLI, usa il AWS comando create-index:

aws opensearch create-index \ --domain-name [domain_name] \ --index-name [index_name] \ --index-schema [index_body] \

Nell'esempio seguente index-schema, il campo title_semantic ha un tipo di campo impostato su text e il parametro semantic_richment è impostato sullo stato ENABLED. L'impostazione del parametro semantic_enrichment abilita l'arricchimento semantico automatico nel campo title_semantic. Puoi usare il campo language_options per specificare l'inglese o il multilingue.

aws opensearch create-index \ --id XXXXXXXXX \ --index-name 'product-catalog' \ --index-schema '{ "mappings": { "properties": { "product_id": { "type": "keyword" }, "title_semantic": { "type": "text", "semantic_enrichment": { "status": "ENABLED", "language_options": "english" } }, "title_non_semantic": { "type": "text" } } } }'

Per descrivere l'indice creato, usa il seguente comando:

aws opensearch get-index \ --domain-name [domain_name] \ --index-name [index_name] \

Inserimento e ricerca di dati

Dopo aver creato un indice con l'arricchimento semantico automatico abilitato, la funzionalità funziona automaticamente durante il processo di inserimento dei dati, senza bisogno di configurazioni aggiuntive.

Inserimento di dati: quando aggiungi documenti all'indice, il sistema automaticamente:

  • Analizza i campi di testo che hai designato per l'arricchimento semantico

  • Genera codifiche semantiche utilizzando il modello sparse gestito dal servizio OpenSearch

  • Memorizza queste rappresentazioni arricchite insieme ai dati originali

Questo processo utilizza i OpenSearch connettori ML e le pipeline di importazione integrati, che vengono creati e gestiti automaticamente dietro le quinte.

Ricerca: i dati di arricchimento semantico sono già indicizzati, quindi le query vengono eseguite in modo efficiente senza richiamare nuovamente il modello ML. Ciò significa che ottieni una maggiore pertinenza della ricerca senza alcun sovraccarico di latenza di ricerca aggiuntivo.

Configurazione delle autorizzazioni per l'arricchimento semantico automatico

Prima di creare un indice con arricchimento semantico automatico, devi configurare le autorizzazioni richieste. Questa sezione spiega le autorizzazioni necessarie per le diverse operazioni di indicizzazione e come configurarle sia per scenari di controllo degli accessi AWS Identity and Access Management (IAM) che per scenari di controllo degli accessi dettagliati.

autorizzazioni IAM

Le seguenti autorizzazioni IAM sono necessarie per le operazioni di arricchimento semantico automatico. Queste autorizzazioni variano a seconda della specifica operazione di indicizzazione che si desidera eseguire.

CreateIndex Autorizzazioni API

Per creare un indice con arricchimento semantico automatico, sono necessarie le seguenti autorizzazioni IAM:

  • es:CreateIndex— Crea un indice con funzionalità di arricchimento semantico.

  • es:ESHttpHead— Esegue richieste HEAD per verificare l'esistenza dell'indice.

  • es:ESHttpPut— Esegue richieste PUT per la creazione dell'indice.

  • es:ESHttpPost— Esegue richieste POST per le operazioni sull'indice.

UpdateIndex Autorizzazioni API

Per aggiornare un indice esistente con l'arricchimento semantico automatico, sono necessarie le seguenti autorizzazioni IAM:

  • es:UpdateIndex— Aggiorna le impostazioni e le mappature dell'indice.

  • es:ESHttpPut— Esegue richieste PUT per gli aggiornamenti degli indici.

  • es:ESHttpGet— Esegue richieste GET per recuperare le informazioni sull'indice.

  • es:ESHttpPost— Esegue richieste POST per le operazioni di indicizzazione.

GetIndex Autorizzazioni API

Per recuperare informazioni su un indice con arricchimento semantico automatico, sono necessarie le seguenti autorizzazioni IAM:

  • es:GetIndex— Recupera le informazioni e le impostazioni dell'indice.

  • es:ESHttpGet— Esegue richieste GET per recuperare i dati dell'indice.

DeleteIndex Autorizzazioni API

Per eliminare un indice con arricchimento semantico automatico, sono necessarie le seguenti autorizzazioni IAM:

  • es:DeleteIndex— Eliminare un indice e i relativi componenti di arricchimento semantico.

  • es:ESHttpDelete— Esegue richieste DELETE per la rimozione dell'indice.

Policy IAM di esempio

Il seguente esempio di politica di accesso basata sull'identità fornisce le autorizzazioni necessarie a un utente per gestire gli indici con arricchimento semantico automatico:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSemanticEnrichmentIndexOperations", "Effect": "Allow", "Action": [ "es:CreateIndex", "es:UpdateIndex", "es:GetIndex", "es:DeleteIndex", "es:ESHttpHead", "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpPost", "es:ESHttpDelete" ], "Resource": "arn:aws:es:aws-region:111122223333:domain/domain-name/*" } ] }

Sostituisci aws-region e con i tuoi valori specifici. 111122223333 domain-name È possibile limitare ulteriormente l'accesso specificando particolari modelli di indice nell'ARN della risorsa.

Autorizzazioni di controllo degli accessi granulari

Se il tuo dominio Amazon OpenSearch Service ha abilitato il controllo granulare degli accessi, hai bisogno di autorizzazioni aggiuntive oltre alle autorizzazioni IAM. Le seguenti autorizzazioni sono necessarie per ogni operazione di indicizzazione.

CreateIndex Autorizzazioni API

Quando è abilitato il controllo granulare degli accessi, sono necessarie le seguenti autorizzazioni aggiuntive per creare un indice con arricchimento semantico automatico:

  • indices:admin/create— Creazione di operazioni di indicizzazione.

  • indices:admin/mapping/put— Creare e aggiornare le mappature degli indici.

  • cluster:admin/opensearch/ml/create_connector— Crea connettori di apprendimento automatico per l'elaborazione semantica.

  • cluster:admin/opensearch/ml/register_model— Registra modelli di apprendimento automatico per l'arricchimento semantico.

  • cluster:admin/ingest/pipeline/put— Crea pipeline di importazione per l'elaborazione dei dati.

  • cluster:admin/search/pipeline/put— Crea pipeline di ricerca per l'elaborazione delle query.

UpdateIndex Autorizzazioni API

Quando è abilitato il controllo granulare degli accessi, sono necessarie le seguenti autorizzazioni aggiuntive per aggiornare un indice con arricchimento semantico automatico:

  • indices:admin/get— Recupera le informazioni sull'indice.

  • indices:admin/settings/update— Aggiorna le impostazioni dell'indice.

  • indices:admin/mapping/put— Aggiorna le mappature degli indici.

  • cluster:admin/opensearch/ml/create_connector— Crea connettori per l'apprendimento automatico.

  • cluster:admin/opensearch/ml/register_model— Registra modelli di apprendimento automatico.

  • cluster:admin/ingest/pipeline/put— Crea pipeline di importazione.

  • cluster:admin/search/pipeline/put— Crea pipeline di ricerca.

  • cluster:admin/ingest/pipeline/get— Recupera le informazioni sulla pipeline di importazione.

  • cluster:admin/search/pipeline/get— Recupera le informazioni sulla pipeline di ricerca.

GetIndex Autorizzazioni API

Quando è abilitato il controllo granulare degli accessi, sono necessarie le seguenti autorizzazioni aggiuntive per recuperare informazioni su un indice con arricchimento semantico automatico:

  • indices:admin/get— Recupera le informazioni sull'indice.

  • cluster:admin/ingest/pipeline/get— Recupera le informazioni sulla pipeline di importazione.

  • cluster:admin/search/pipeline/get— Recupera le informazioni sulla pipeline di ricerca.

DeleteIndex Autorizzazioni API

Quando è abilitato il controllo granulare degli accessi, è richiesta la seguente autorizzazione aggiuntiva per eliminare un indice con arricchimento semantico automatico:

  • indices:admin/delete— Operazioni di eliminazione dell'indice.

Riscritture delle query

L'arricchimento semantico automatico converte automaticamente le query «di corrispondenza» esistenti in query di ricerca semantiche senza richiedere modifiche alle query. Se una query di corrispondenza fa parte di una query composta, il sistema analizza la struttura delle query, trova le query di corrispondenza e le sostituisce con query sparse neurali. Attualmente, la funzionalità supporta solo la sostituzione delle query «match», indipendentemente dal fatto che si tratti di una query autonoma o di parte di una query composta. «multi_match» non è supportato. Inoltre, la funzionalità supporta tutte le query composte per sostituire le relative query di corrispondenza annidate. Le query composte includono: bool, boosting, constant_score, dis_max, function_score e hybrid.

Limitazioni dell'arricchimento semantico automatico

La ricerca semantica automatica è più efficace se applicata a campi di small-to-medium grandi dimensioni contenenti contenuti in linguaggio naturale, come titoli di film, descrizioni di prodotti, recensioni e riepiloghi. Sebbene la ricerca semantica aumenti la pertinenza per la maggior parte dei casi d'uso, potrebbe non essere ottimale per determinati scenari. Prendi in considerazione le seguenti limitazioni quando decidi se implementare l'arricchimento semantico automatico per il tuo caso d'uso specifico.

  • Documenti molto lunghi: l'attuale modello sparso elabora solo i primi 8.192 token di ogni documento in inglese. Per i documenti multilingue, sono 512 token. Per articoli lunghi, prendi in considerazione l'implementazione della suddivisione in blocchi dei documenti per garantire l'elaborazione completa dei contenuti.

  • Carichi di lavoro di analisi dei log: l'arricchimento semantico aumenta in modo significativo la dimensione dell'indice, il che potrebbe non essere necessario per l'analisi dei log, dove in genere è sufficiente una corrispondenza esatta. Il contesto semantico aggiuntivo raramente migliora l'efficacia della ricerca nei log abbastanza da giustificare i maggiori requisiti di archiviazione.

  • L'arricchimento semantico automatico non è compatibile con la funzionalità Derived Source.

Prezzi

Amazon OpenSearch Service fattura l'arricchimento semantico automatico in base alle unità di OpenSearch calcolo (OCUs) consumate durante la generazione di vettori sparsi al momento dell'indicizzazione. Ti viene addebitato solo l'utilizzo effettivo durante l'indicizzazione. Puoi monitorare questo consumo utilizzando la CloudWatch metrica SemanticSearch OCU di Amazon. Per dettagli specifici sui limiti dei token del modello, sul throughput di volume per OCU ed esempi di calcolo di esempio, visita Service Pricing. OpenSearch