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.