Data di pubblicazione: 6 Giugno 2024
Collaboratori: Meredith Syed, Erika Russi
La ricerca vettoriale è una tecnica di ricerca utilizzata per trovare elementi o punti dati simili, in genere rappresentati come vettori, in raccolte di grandi dimensioni. I vettori, o incorporamenti, sono rappresentazioni numeriche di parole, entità, documenti, immagini o video. I vettori acquisiscono le relazioni semantiche tra gli elementi, consentendo un'elaborazione efficace mediante modelli di machine learning e applicazioni di intelligenza artificiale.
A differenza della ricerca tradizionale, che in genere utilizza la ricerca per parole chiave, la ricerca vettoriale si basa su tecniche di ricerca per similarità vettoriale come la ricerca k-nearest neighbor (knn) per recuperare punti dati simili a un vettore di query basato su una metrica di distanza. I vettori acquisiscono le relazioni semantiche e le somiglianze tra i punti dati, consentendo la ricerca semantica anziché la semplice ricerca per parole chiave.
Per illustrare la differenza tra la ricerca tradizionale per parole chiave e quella vettoriale, esaminiamo un esempio. Supponiamo che si stiano cercando informazioni sulla migliore pizzeria e che si digiti "migliore pizzeria" in un tradizionale motore di ricerca per parole chiave. La ricerca per parole chiave cerca pagine che contengono le parole esatte "migliore" e "pizzeria" e restituisce solo risultati come: "Migliore pizzeria" o "Pizzeria vicino a me". La ricerca tradizionale per parole chiave si concentra sulla corrispondenza delle parole chiave piuttosto che sulla comprensione del contesto o dell'intento dietro la ricerca.
Al contrario, in una ricerca vettoriale semantica, il motore di ricerca comprende l'intento dietro la query. Semantica, per definizione, significa relazionarsi al significato nel linguaggio, quindi la ricerca semantica comprende il significato e il contesto di una query. In questo caso, cercherebbe contenuti che parlino delle pizzerie più votate o altamente consigliate, anche se nel contenuto non vengono utilizzate le parole esatte "migliore pizzeria". I risultati sono più pertinenti dal punto di vista contestuale e potrebbero includere articoli o guide che parlano di pizzerie di alta qualità in vari luoghi.
I metodi di ricerca tradizionali rappresentano tipicamente i dati utilizzando caratteristiche o token discreti, come parole chiave, tag o metadati. Come mostrato nel nostro esempio sopra, questi metodi si basano sulle corrispondenze esatte per recuperare i risultati rilevanti. Al contrario, la ricerca vettoriale rappresenta i dati come vettori densi (un vettore in cui la maggior parte o tutti gli elementi sono diversi da zero) in uno spazio vettoriale continuo, lo spazio matematico in cui i dati sono rappresentati come vettori. Ogni dimensione del vettore denso corrisponde a una caratteristica latente o a un aspetto dei dati, una caratteristica o un attributo sottostante che non viene osservato direttamente, ma che viene dedotto dai dati attraverso modelli matematici o algoritmi. Queste caratteristiche latenti acquisiscono i pattern e le relazioni nascoste nei dati, consentendo rappresentazioni più significative e accurate degli elementi come vettori in uno spazio ad alta dimensionalità.
I metodi di ricerca tradizionali possono avere problemi di scalabilità per set di dati di grandi dimensioni o dati altamente dimensionali a causa di vincoli computazionali e di memoria. Al contrario, gli incorporamenti vettoriali sono più facili da scalare a set di dati più grandi e modelli più complessi. A differenza delle rappresentazioni sparse di dati in cui la maggior parte dei valori sono zeri tra le dimensioni, gli incorporamenti sono rappresentazioni vettoriali dense con valori diversi da zero nella maggior parte delle dimensioni. Ciò consente agli incorporamenti vettoriali di memorizzare più informazioni in uno spazio più piccolo e meno dimensionale, richiedendo meno memoria.1 Di conseguenza, gli algoritmi e i modelli di machine learning possono utilizzare gli incorporamenti in modo più efficiente con meno risorse di elaborazione.
Utilizza questo framework di selezione del modello per scegliere il modello più appropriato bilanciando i requisiti di prestazioni con costi, rischi ed esigenze di implementazione.
Registrati per ricevere l'ebook sugli storage dei dati AI
Per questa spiegazione, ci concentreremo sulle rappresentazioni vettoriali applicabili nell'ambito dell'elaborazione del linguaggio naturale (NLP), ossia i vettori che rappresentano parole, entità o documenti.
Illustreremo il processo di vettorializzazione vettorializzando un piccolo corpus di frasi: "the cat sat on the mat" (il gatto si è seduto sul tappeto), "the dog played in the yard" (il cane ha giocato in giardino) e "birds chirped in the trees" (gli uccelli hanno cinguettato sugli alberi).
Il primo passo per la creazione di incorporamenti vettoriali consiste nel pulire ed elaborare il set di dati grezzo. Ciò può comportare l'eliminazione del rumore e la standardizzazione del testo. Per il nostro esempio, non eseguiremo alcuna pulizia poiché il testo è già pulito e standardizzato.
Successivamente, viene scelto un modello di incorporamento da addestrare sul set di dati. Il modello di incorporamento addestrato viene utilizzato per generare incorporamenti per ogni punto dati nel set di dati. Per i dati di testo, i modelli di incorporamento open source più diffusi includono Word2Vec, GloVe, FastText o modelli pre-addestrati basati su trasformatori come BERT o RoBERTa2.
Per il nostro esempio, useremo Word2Vec per generare i nostri incorporamenti.
Successivamente, gli incorporamenti vengono memorizzati in un database vettoriale oppure viene utilizzato un plugin di ricerca vettoriale per un motore di ricerca, come Elasticsearch. Nella ricerca vettoriale, la pertinenza di un risultato di ricerca viene stabilita valutando la similarità tra il vettore di query, che viene generato vettorializzando la query, e il vettore del documento, che è una rappresentazione dei dati interrogati. Gli indici devono essere creati nel database vettoriale per consentire un recupero rapido ed efficiente degli incorporamenti basati su query simili. Tecniche come Hierarchical Navigable Small World (HNSW) possono essere utilizzate per indicizzare gli incorporamenti e facilitare la ricerca di similarità in fase di query. HNSW organizza il set di dati e consente la ricerca rapida dei vicini più prossimi raggruppando vettori simili durante il processo di costruzione dell'indice.
Infine, è necessario stabilire un meccanismo o una procedura per generare vettori per le nuove query. Ciò comporta in genere la creazione di un'API o di un servizio che accetta le query di ricerca degli utenti come input in tempo reale, le elabora utilizzando lo stesso modello vettoriale e genera una rappresentazione vettoriale corrispondente. Questo vettore può quindi essere utilizzato per effettuare ricerche nel database per ottenere i risultati più pertinenti.
Nella ricerca vettoriale, la pertinenza è determinata misurando la similarità tra i vettori di query e di documento. Per confrontare due vettori tra loro e determinare la loro similarità, è possibile utilizzare una misurazione della distanza, come la distanza euclidea o la similarità del coseno3.
La distanza euclidea è una misura della distanza in linea retta tra due punti. Viene calcolata come la radice quadrata della somma delle differenze al quadrato tra le coordinate corrispondenti dei due punti.
Questa formula può essere estesa a spazi con dimensioni superiori aggiungendo più termini per tenere conto delle dimensioni aggiuntive.
La similarità del coseno è una misura della similarità tra due vettori in uno spazio multidimensionale. Calcola il coseno dell'angolo tra i due vettori, indicando quanto i vettori si allineano l'uno all'altro.
Matematicamente, la similarità del coseno, cos(θ), tra due vettori viene calcolata come il prodotto scalare dei due vettori diviso per il prodotto delle loro grandezze.
La similarità del coseno varia da -1 a 1, dove:
La similarità del coseno è particolarmente utile quando si tratta di vettori, poiché si concentra sulla relazione direzionale tra i vettori piuttosto che sulle loro grandezze.
Sebbene le metriche di distanza menzionate in precedenza possano essere utilizzate per misurare la similarità vettoriale, diventa inefficiente e lento confrontare tutti i possibili vettori con il vettore di query al momento della query per la ricerca di similarità. Per risolvere questo problema, possiamo utilizzare una ricerca di prossimità ANN (Approximate-Nearest Neighbor).
Invece di trovare una corrispondenza esatta, gli algoritmi ANN cercano in modo efficiente i vettori che sono approssimativamente più vicini a una determinata query in base a una metrica di distanza come la distanza euclidea o la similarità del coseno. Consentendo un certo livello di approssimazione, questi algoritmi possono ridurre significativamente il costo computazionale della ricerca del vicino più prossimo senza la necessità di calcolare le similarità di incorporamento in un intero corpus.
Uno degli algoritmi ANN più popolari sono i grafici HNSW. Il grafico HSNW indicizza il set di dati e facilita la ricerca rapida dei vicini più prossimi raggruppando vettori simili durante la creazione dell'indice. HNSW organizza i dati in quartieri, collegandoli con probabili connessioni. Quando si indicizza un vettore denso, identifica il quartiere adatto e le sue potenziali connessioni, memorizzandole in una struttura a grafo. Durante una ricerca HNSW con una query vettoriale densa, individua il punto di ingresso ottimale nel quartiere e restituisce i vicini più prossimi.
La ricerca vettoriale ha numerosi casi d'uso in tutti i domini grazie alla sua capacità di recuperare in modo efficiente elementi simili in base alle loro rappresentazioni vettoriali. Alcune applicazioni comuni della ricerca vettoriale includono:
La ricerca vettoriale viene utilizzata nei motori di ricerca per recuperare documenti, articoli, pagine web o altri contenuti testuali in base alla loro similarità con una query. Consente agli utenti di trovare informazioni pertinenti anche se i termini esatti utilizzati nella query non sono presenti nei documenti.
La ricerca vettoriale è fondamentale nel framework Retrieval Augmented Generation (RAG) per recuperare il contesto pertinente da un ampio corpus di testo. RAG è un framework per l'AI generativa che combina la ricerca vettoriale con modelli linguistici generativi per generare risposte.
Nelle attività tradizionali di generazione del linguaggio, vengono utilizzati modelli linguistici di grandi dimensioni (LLM) come Generative Pre-trained Transformer (GPT) di OpenAI o Granite Models di IBM per costruire risposte in base al prompt di input. Tuttavia, questi modelli potrebbero avere difficoltà a produrre risposte contestualmente rilevanti, fattualmente accurate o aggiornate. RAG risolve questa limitazione incorporando un passaggio di recupero prima della generazione della risposta. Durante il recupero, la ricerca vettoriale può essere utilizzata per identificare informazioni contestualmente pertinenti, come passaggi rilevanti o documenti da un ampio corpus di testo, tipicamente memorizzati in un database vettoriale. Successivamente, viene utilizzato un LLM per generare una risposta in base al contesto recuperato.
Oltre alla generazione del linguaggio, RAG e la ricerca vettoriale hanno ulteriori applicazioni in varie altre attività dell'NLP, tra cui risposta alle domande, chatbot, riepilogo e generazione di contenuti.
La ricerca vettoriale può essere integrata in approcci di ricerca ibridi per migliorare l'efficacia e la flessibilità del processo di ricerca. La ricerca ibrida combina la ricerca vettoriale con altre tecniche di ricerca, come la ricerca basata su parole chiave o la ricerca basata su metadati. La ricerca vettoriale può essere utilizzata per recuperare elementi in base alla loro similarità con una query, mentre altri metodi di ricerca possono essere utilizzati per recuperare elementi in base a corrispondenze esatte o criteri specifici.
Gli archivi vettoriali vengono utilizzati nei motori di ricerca di immagini e video per indicizzare e recuperare contenuti visivi in base alla similarità. Gli incorporamenti di immagini e video vengono memorizzati come vettori, consentendo agli utenti di cercare immagini o video visivamente simili in set di dati di grandi dimensioni.
I motori di raccomandazione nei servizi di streaming e nelle piattaforme di e-commerce, social media e visual media possono essere alimentati dalla ricerca vettoriale. La ricerca vettoriale consente di consigliare prodotti, film, musica o altri elementi in base alla loro similarità con gli elementi con cui gli utenti hanno interagito o che hanno apprezzato in precedenza.
La ricerca vettoriale viene utilizzata nelle applicazioni di dati geospaziali per recuperare dati spaziali come punti di interesse, caratteristiche geografiche o traiettorie spaziali in base alla loro vicinanza o similarità con la posizione o lo schema di una query. Consente un'efficiente ricerca e analisi spaziale nei sistemi informativi geografici e nei servizi basati sulla localizzazione.
Le organizzazioni con storage dei dati adatti allo scopo e governance dell'AI sono meglio preparate a massimizzare gli sforzi dell'AI e i benefici aziendali.
IBM annuncia il rilascio dei primi modelli della serie di modelli Granite di watsonx, una raccolta di modelli di AI generativa con l'obiettivo di promuovere l'integrazione dell'AI generativa nelle applicazioni e nei workflow aziendali.
Il RAG è un framework di AI per recuperare dati da una knowledge base esterna per basare gli LLM sugli insight più accurati e aggiornati possibile e per fornire agli utenti informazioni sul processo generativo dei LLM.
1 Bahaaldine Azarmi and Jeff Vestal, Vector Search for Practitioners with Elastic, Packt Publishing, 2023
2 Vicki Boykis, “What are embeddings", 2023, https://vickiboykis.com/what_are_embeddings/ (link esterno a ibm.com)
3 Trey Grainger, Doug Turnbull and Max Irwin, AI Powered Search, Manning Publications, 2024