Miglioramento del recupero delle informazioni nello stack elastico: passaggi per migliorare la pertinenza della ricerca

A partire dalla versione 8.0 e dal rilascio di modelli di elaborazione del linguaggio naturale (NLP) di terze parti per l’incorporamento di testo, gli utenti di Elastic Stack hanno accesso a un’ampia varietà di modelli per incorporare i propri documenti di testo ed eseguire il recupero di informazioni basato su query utilizzando la ricerca vettoriale.

Dati tutti questi componenti e i relativi parametri, ea seconda del corpus di testo in cui si desidera effettuare la ricerca, può essere complicato scegliere quali impostazioni forniranno la migliore pertinenza della ricerca.

In questa serie di post sul blog, introdurremo una serie di test che abbiamo eseguito utilizzando vari set di dati pubblicamente disponibili e tecniche di recupero delle informazioni disponibili nello Stack elastico. Forniremo quindi consigli sulle migliori tecniche da utilizzare a seconda della configurazione.

Per dare il via a questa serie di blog, vogliamo preparare il terreno descrivendo il problema che stiamo affrontando e descrivendo alcuni metodi che approfondiremo in un articolo successivo sull’ integrazione di componenti di intelligenza artificiale in Elasticsearch.

Contesto e terminologia

BM25: un modello sparso e non supervisionato per la ricerca lessicale

Il modo classico in cui i documenti vengono classificati per rilevanza da Elasticsearch in base a una query di testo utilizza l’implementazione Lucene del modello Okapi BM25. Sebbene alcuni iperparametri di questo modello siano stati messi a punto per ottimizzare i risultati nella maggior parte degli scenari, questa tecnica è considerata non supervisionata poiché query etichettate e documenti non sono necessari per utilizzarla: è molto probabile che il modello funzionerà ragionevolmente bene su qualsiasi corpus di testo, senza basarsi su dati annotati. BM25 è noto per essere una solida linea di base nelle impostazioni di recupero a colpo zero.

Sotto il cofano, questo tipo di modello costruisce una matrice di frequenze dei termini (quante volte un termine appare in ciascun documento) e frequenze inverse dei documenti (l’inverso di quanti documenti contengono ciascun termine). Quindi assegna un punteggio a ogni termine di query per ogni documento che è stato indicizzato in base a tali frequenze. Poiché ogni documento contiene in genere una piccola frazione di tutte le parole utilizzate nel corpus, la matrice contiene molti zeri. Questo è il motivo per cui questo tipo di rappresentazione è chiamato “sparse”.

Inoltre, questo modello somma il punteggio di pertinenza di ogni singolo termine all’interno di una query per un documento, senza tener conto di alcuna conoscenza semantica (sinonimi, contesto, ecc.). Questa è chiamata ricerca lessicale (al contrario della ricerca semantica). Il suo difetto è il cosiddetto problema di mancata corrispondenza del vocabolario, che il vocabolario della query è leggermente diverso dal vocabolario del documento. Ciò motiva altri modelli di punteggio che cercano di incorporare la conoscenza semantica per evitare questo problema.

Modelli densi: un modello denso e supervisionato per la ricerca semantica

Più recentemente, i modelli basati su trasformatore hanno consentito una rappresentazione del testo densa e consapevole del contesto, affrontando le principali carenze sopra menzionate.

Per costruire tali modelli, sono necessari i seguenti passaggi:

1. Pre-formazione

Per prima cosa dobbiamo addestrare una rete neurale per comprendere la sintassi di base del linguaggio naturale.

Utilizzando un enorme corpus di testo, il modello apprende la conoscenza semantica addestrandosi su attività non supervisionate (come la previsione della parola mascherata o la previsione della frase successiva).
BERT è probabilmente l’esempio più noto di questi modelli: è stato addestrato su Wikipedia (2,5 miliardi di parole) e BookCorpus (800 milioni di parole) utilizzando Masked Word Prediction.

Questo si chiama pre-allenamento. Il modello apprende rappresentazioni vettoriali di token linguistici, che possono essere adattati per altre attività con molto meno addestramento.

Si noti che in questa fase, il modello non funzionerebbe bene nelle attività di PNL a valle.

Questo passaggio è molto costoso, ma esistono molti di questi modelli fondamentali che possono essere utilizzati immediatamente.

2. Formazione specifica per compito

Ora che il modello ha costruito una rappresentazione del linguaggio naturale, si addestrerà in modo molto più efficace su un’attività specifica come Dense Passage Retrieval (DPR) che consente la risposta alle domande.

Per fare ciò, dobbiamo adattare leggermente l’architettura del modello e quindi addestrarlo su un gran numero di istanze del compito, che, per DPR, consiste nell’abbinare un passaggio rilevante tratto da un documento rilevante.

Quindi questo richiede un set di dati etichettato, ovvero una raccolta di terzine:

Una domanda: “What is gold formed in?”
Un documento o brano tratto da un documento: “The core of large stars, especially during a nova”

Facoltativamente, un punteggio del grado di rilevanza per questa coppia (query, documento) (se non viene assegnato alcun punteggio, assumiamo che il punteggio sia binario e che tutti gli altri documenti possano essere considerati irrilevanti per la query data).
Un set di dati molto popolare e pubblicamente disponibile per eseguire tale formazione per DPR è il set di dati MS MARCO.

Questo set di dati è stato creato utilizzando le query e i migliori risultati del motore di ricerca Bing di Microsoft. Pertanto, le query e i documenti che contiene rientrano nel dominio linguistico della conoscenza generale, in contrasto con il dominio linguistico specifico (si pensi ai documenti di ricerca o al linguaggio utilizzato nella legge).

Questa nozione di dominio linguistico è importante, poiché la conoscenza semantica appresa da quei modelli sta dando loro un importante vantaggio “in-domain”: quando BERT è uscito, ha migliorato i precedenti modelli allo stato dell’arte su questo set di dati MS MARCO di un enorme margine.

3. Formazione specifica del dominio

A seconda della differenza tra i dati e il set di dati utilizzato per l’addestramento specifico dell’attività, potrebbe essere necessario addestrare il modello utilizzando un set di dati con etichetta specifico del dominio. Questo passaggio viene anche definito messa a punto per l’adattamento del dominio o “domain-adaptation”.

La buona notizia è che non è necessario un set di dati così grande come richiesto per i passaggi precedenti: alcune migliaia o decine di migliaia di istanze delle attività possono essere sufficienti.

La cattiva notizia è che queste coppie query-documento devono essere create da esperti di dominio, quindi di solito è un’opzione costosa.

L’adattamento del dominio è più o meno simile alla formazione specifica per attività.

Dopo aver introdotto queste varie tecniche, misureremo le loro prestazioni su un’ampia varietà di set di dati. Questo tipo di attività di recupero di informazioni generiche è di particolare interesse per noi. Vogliamo fornire strumenti e indicazioni per una vasta gamma di utenti, compresi quelli che non vogliono addestrare i modelli stessi per ottenere alcuni dei vantaggi che apportano alla ricerca. Nel prossimo post del blog di questa serie, descriveremo la metodologia e la suite di benchmark che utilizzeremo.

Panoramica della ricerca per somiglianza di immagini in Elasticsearch

Immagina di poter imitare l’aspetto di una celebrità con uno screenshot. Gli utenti potrebbero utilizzare l’immagine per trovare rapidamente i vestiti venduti online che corrispondono allo stile. Ma, questa non è l’esperienza di ricerca di oggi.

I clienti lottano per trovare ciò di cui hanno bisogno e se non riescono, se ne andranno. Alcuni di loro non ricordano il nome (parola chiave) di ciò che stanno cercando, ma hanno un’idea di come si presenta o dell’immagine effettiva. Con la ricerca vettoriale, una funzionalità integrata in Elasticsearch, le organizzazioni possono implementare la ricerca di immagini simili. Ciò aiuta le organizzazioni a creare un’esperienza di ricerca più intuitiva in modo che i clienti possano cercare facilmente ciò che stanno cercando con un’immagine.

Per implementare questa funzionalità in Elastic, non devi essere un esperto di machine learning per iniziare. Questo perché la ricerca vettoriale è già integrata nella nostra piattaforma scalabile e altamente performante. Sarai in grado di integrarla in framework di applicazioni, rendendo più facile la creazione di applicazioni interattive.


Ricerca semantica e ricerca di similarità – entrambe alimentate da una ricerca vettoriale.

La ricerca vettoriale sfrutta l’apprendimento automatico (ML) per catturare il significato e il contesto dei dati non strutturati. La ricerca vettoriale trova dati simili utilizzando algoritmi di vicinanza approssimativa (ANN). Rispetto alla ricerca di testo tradizionale (in Elastic, basata sul punteggio BM25), la ricerca vettoriale produce risultati più pertinenti ed esegue più velocemente (senza la necessità di estreme ottimizzazioni del motore di ricerca).

Questo approccio funziona non solo con i dati di testo ma anche con le immagini e altri tipi di dati non strutturati per i quali sono disponibili modelli di embedding generici. Per i dati di testo, è comunemente definito come ricerca semantica, mentre la ricerca di similarità è frequentemente usata nel contesto di immagini e audio.

Come si generano embedding vettoriali per le immagini?

Le rappresentazioni vettoriali sono la rappresentazione numerica dei dati e del contesto correlato immagazzinati in vettori ad alta dimensione (densi). I modelli che generano le rappresentazioni vettoriali sono di solito allenati su milioni di esempi per fornire risultati più rilevanti ed accurati.

Per dati di testo, i transformer simili a BERT sono popolari per generare embedding che funzionano con molti tipi di testo, e sono disponibili su repository pubblici come Hugging Face. I modelli di embedding, che funzionano bene con qualsiasi tipo di immagine, sono oggetto di ricerca in corso. Il modello CLIP – utilizzato dai nostri team per prototipare l’app di similarità delle immagini – viene distribuito da OpenAI e fornisce un buon punto di partenza. Per casi d’uso specializzati e utenti avanzati, potrebbe essere necessario addestrare un modello di embedding personalizzato per ottenere le prestazioni desiderate. Successivamente, è necessaria la capacità di effettuare ricerche in modo efficiente. Elastic supporta l’ampiamente adottata ricerca di vicini più prossimi approssimativa basata su HNSW.

Come la ricerca di somiglianza alimenta applicazioni innovative.

Come la ricerca di similarità alimenta l’innovazione? Nel nostro primo esempio, gli utenti potevano fare una screenshot e cercare per trovare l’outfit di una celebrità preferita.

Puoi anche usare la ricerca di similarità per:

– Suggerire prodotti simili a quelli acquistati da altri clienti.
– Trovare progetti correlati esistenti o modelli rilevanti da una libreria di elementi di design visivo.
– Trova le canzoni che potrebbero piacerti dai popolari servizi di streaming musicale in base a ciò che hai ascoltato di recente.
– Cercare attraverso enormi dataset di immagini non strutturate e non etichettate utilizzando la descrizione naturale.

Perché scegliere Elastic per la ricerca di similarità delle immagini?

Implementare la ricerca di immagini simili in Elasticsearch ti fornisce diversi vantaggi. Con Elastic, puoi…

Ridurre la complessità delle applicazioni

Con Elastic non è necessario utilizzare servizi separati per eseguire la ricerca kNN e vettorializzare l’input di ricerca. La ricerca vettoriale e i punti di inferenza NLP sono integrati all’interno di una piattaforma di ricerca scalabile. In altri framework popolari, l’applicazione di reti neurali profonde e modelli NLP avviene separatamente dal ridimensionamento delle ricerche su grandi set di dati. Ciò significa che è necessario assumere esperti, aggiungere tempo di sviluppo al progetto e destinare risorse per gestirlo nel tempo.

Scalare con velocità

In Elasticsearch, ottieni scala e velocità. I modelli vivono accanto ai nodi in esecuzione nella stessa cluster di ricerca, ciò si applica alle cluster locali e ancor di più se le distribuisci nel cloud. Elastic Cloud ti consente di scalare facilmente su e giù, a seconda del carico di lavoro di ricerca corrente.

La riduzione del numero di servizi necessari per un’applicazione ha benefici che vanno oltre lo scaling. È possibile sperimentare una semplificazione del monitoraggio delle prestazioni, una riduzione della presenza nel tempo di manutenzione e un minor numero di vulnerabilità di sicurezza, per citarne alcuni. Le future architetture serverless porteranno la semplicità dell’applicazione a un nuovo livello.