Ricerca semantica vs. ricerca lessicale vs. ricerca full-text
Nel mondo digitale in cui viviamo oggi, i motori di ricerca sono diventati parte integrante della nostra vita, aiutandoci ad accedere alle informazioni in modo rapido e semplice. Al centro di questi motori di ricerca ci sono gli algoritmi di information retrieval, che determinano come vengono recuperate le informazioni.
Sono disponibili diversi algoritmi di information retrieval, che vanno dai metodi tradizionali come la ricerca full-text e lessicale a tecniche più avanzate come la ricerca semantica. Ognuno di questi algoritmi presenta vantaggi e svantaggi; pertanto, è fondamentale scegliere il miglior algoritmo di information retrieval adatto al nostro caso d’uso.
Questo articolo discuterà questi algoritmi di information retrieval, concentrandosi in particolare sulle ricerche lessicale, full-text e semantica. Iniziamo con la più semplice: la ricerca lessicale.
Ricerca lessicale
La ricerca lessicale, nota anche come ricerca per parole chiave, si riferisce a un algoritmo di ricerca basato sull’analisi del testo a livello di parola (da cui il nome). Questo algoritmo di information retrieval abbina i termini della query esattamente come compaiono nel testo. Ad esempio, se la nostra query di ricerca è “run,” l’algoritmo restituirà tutte le occorrenze del termine “run” in un documento.
La ricerca lessicale è l’algoritmo di information retrieval più basilare disponibile, poiché restituisce solo quei termini in un documento che contengono una corrispondenza esatta con la nostra query. Ciò rende la ricerca lessicale particolarmente utile quando sono richieste precisione e specificità, ad esempio per trovare documenti o record contenenti una stringa o una parola specifica.
Figura: Illustrazione di una semplice ricerca lessicale.
Tuttavia, la semplicità della ricerca lessicale comporta anche diversi svantaggi. Innanzitutto, non tollera errori di battitura nella nostra query. Ad esempio, se inseriamo per errore “ron” invece di “run,” non otterremo i risultati che stiamo cercando. In secondo luogo, la ricerca lessicale non tiene conto di sinonimi, stemming o lemmatizzazione. Di conseguenza, cercare “run” non troverà parole simili in forme diverse, come “ran” o “running.”
Inoltre, la ricerca lessicale potrebbe non essere l’opzione migliore se stiamo cercando i record più rilevanti in base alla nostra query. I documenti o i record che contengono il termine della nostra query non hanno alcuna nozione di ordine o classificazione, rendendo difficile valutare la rilevanza dei risultati restituiti dalla ricerca lessicale.
Come puoi vedere, la ricerca lessicale presenta sicuramente limitazioni significative quando si considerano le esigenze della maggior parte dei casi d’uso di information retrieval. Inoltre, gli utenti spesso richiedono maggiore flessibilità riguardo ai termini inclusi nei risultati, cosa che manca anche alla ricerca lessicale. È qui che entra in gioco la ricerca full-text.
Ricerca full-text
Una ricerca full-text funziona in modo simile a una ricerca lessicale, cercando di trovare record contenenti i termini della nostra query. Tuttavia, la ricerca full-text offre capacità più ampie e avanzate rispetto alla ricerca lessicale, affrontando i problemi associati alla ricerca lessicale.
L’implementazione della ricerca full-text spesso incorpora tecniche popolari di Natural Language Processing (NLP) come stemming e lemmatizzazione. Ciò significa che quando cerchiamo il termine “run,” tutti i documenti o record con parole simili in forme diverse, come “ran” o “running,” saranno inclusi anche nei risultati.
Figura: Illustrazione del progresso della ricerca full-text rispetto alla ricerca lessicale tradizionale.
Per ordinare i risultati di ricerca in base alla rilevanza, possiamo anche implementare algoritmi come TF-IDF e BM25. Parliamo più approfonditamente di questi due algoritmi.
Fondamenti di TF-IDF e BM25
Term Frequency-Inverse Document Frequency (TF-IDF) utilizza un metodo statistico semplice per determinare la rilevanza di un documento o record per un determinato termine o query. È composto da due componenti:
Term Frequency (TF): calcola il numero di occorrenze del termine della query in un documento. Pertanto, più frequentemente il termine della query appare in un documento, più alto sarà il punteggio TF per quel documento.
Inverse Document Frequency (IDF): calcola la proporzione di documenti nell’intera raccolta che contengono il termine della query.
L’obiettivo principale del componente IDF è penalizzare i termini comuni e meno significativi come “a,” “an,” “the,” e “and,” che tendono ad apparire in quasi tutti i documenti. Ad esempio, se il nostro termine di query è “mix and match,” vogliamo che i documenti più rilevanti contengano molte istanze di “mix” e “match” piuttosto che numerose occorrenze di “and”. Infine, il punteggio TF-IDF finale per un documento si ottiene moltiplicando i punteggi TF e IDF.
Uno dei principali svantaggi di TF-IDF è che non considera la lunghezza del documento nel calcolo della rilevanza. In realtà, i documenti più lunghi hanno maggiori probabilità di contenere il nostro termine di query più frequentemente. Ad esempio, se il nostro termine di query appare 10 volte in un documento di 1.000 parole (Documento A), mentre appare solo 5 volte in un documento di 50 parole (Documento B), potremmo sostenere che il Documento B potrebbe essere più rilevante pur avendo meno occorrenze.
BM25 affronta questa limitazione di TF-IDF introducendo termini aggiuntivi ed espandendo l’equazione TF-IDF per tenere conto della lunghezza del documento.
Così facendo, BM25 elimina il bias verso i documenti più lunghi quando misura la rilevanza di un documento per una determinata query.
Il concetto di embedding sparso
Sia TF-IDF sia BM25 possono essere rappresentati come embedding sparsi. Un embedding sparso è un vettore n-dimensionale, in cui la dimensionalità dipende dal numero di termini unici nel nostro corpus o nella nostra raccolta di documenti.
Ad esempio, supponiamo di avere 10 documenti contenenti un totale di 10.000 parole uniche. Ogni documento verrebbe quindi trasformato in un vettore a 10.000 dimensioni, con ciascuna dimensione che rappresenta l’importanza di un particolare termine in quel documento.
Figura: illustrazione della trasformazione da documento a embedding sparso.
Poiché la dimensionalità del vettore è determinata dal numero di termini unici nel corpus, spesso finiamo con vettori di dimensionalità enorme. Inoltre, poiché un documento contiene in genere solo una piccola frazione dei termini disponibili, la stragrande maggioranza degli elementi di questi vettori sarà zero, come puoi vedere nell’immagine sopra. Questo è il motivo per cui tali vettori sono comunemente chiamati embedding sparsi.
Ora che tutti i documenti sono rappresentati come embedding, possiamo calcolare la similarità tra due embedding qualsiasi utilizzando algoritmi comuni come la similarità del coseno o la distanza euclidea. L’intuizione è che due documenti con termini simili di grande importanza avranno un’elevata similarità.
Nonostante i vantaggi degli embedding sparsi nella ricerca full-text, c’è un inconveniente significativo: non tengono conto del significato semantico dei termini della query. Per esempio, se la nostra query è “Apple device,” i documenti che contengono molte occorrenze di “apple” (il frutto) potrebbero posizionarsi più in alto rispetto ai documenti tecnologici che sono più rilevanti per la nostra query ma non contengono il termine “Apple” (l’azienda).
Figura: Esempi di query che richiedono comprensione semantica e contesto.
Quando includere risultati con significati semantici simili è un requisito per il nostro caso d’uso, la ricerca full-text potrebbe non essere il miglior algoritmo di recupero delle informazioni da utilizzare. È qui che entra in gioco la ricerca semantica.
Ricerca semantica
La ricerca semantica è un approccio utile quando vogliamo risultati di ricerca che tengano conto del significato semantico. Usando l’esempio menzionato nella sezione precedente, quando digitiamo una query come “Apple device”, in realtà non stiamo cercando documenti o record che contengano la parola “apple”. Cerchiamo invece documenti che discutano di tecnologie, preferibilmente dispositivi Apple. In questo caso, la ricerca full-text produrrebbe risultati indesiderati, rendendo la ricerca semantica l’opzione migliore.
Il concetto di embedding denso
La ricerca semantica funziona utilizzando sofisticati modelli AI per trasformare i nostri documenti e i termini della query in embedding. Tuttavia, gli embedding prodotti da questi modelli, spesso chiamati embedding densi, differiscono dagli embedding sparsi discussi in precedenza.
Negli embedding densi, i valori in ciascuna dimensione del vettore sono raramente esattamente zero, e la dimensionalità stessa dipende dal modello utilizzato. Tuttavia, la dimensionalità degli embedding densi è molto inferiore rispetto a quella degli embedding sparsi.
Figura: Illustrazione della trasformazione da documento a embedding denso.
Gli embedding densi contengono informazioni semanticamente ricche sul contenuto che rappresentano. Pertanto, per determinare quanto siano semanticamente simili due embedding densi, possiamo semplicemente usare popolari algoritmi di similarità come la similarità del coseno o la distanza euclidea.
Il ruolo dei database vettoriali nella ricerca semantica
Nelle applicazioni reali di recupero delle informazioni, è probabile che abbiamo a che fare con milioni o persino miliardi di embedding densi. Pertanto, non è pratico memorizzare tutti questi embedding nella memoria del nostro computer; e abbiamo bisogno di un sistema di database capace di archiviarli in modo efficiente.
Un database vettoriale è un sistema che ci consente di archiviare grandi quantità di embedding densi in modo efficiente impiegando metodi di indicizzazione avanzati come approximate nearest neighbors (ANN) e hierarchical navigable small world (HNSW). Fornisce inoltre funzionalità per eseguire operazioni di ricerca vettoriale per trovare i documenti semanticamente più rilevanti per la nostra query utilizzando algoritmi di similarità popolari come la similarità del coseno e la distanza euclidea.
Figura: Flusso di lavoro dell’esecuzione di un’operazione di ricerca vettoriale.
Inoltre, database vettoriali popolari come Milvus offrono funzionalità avanzate come la ricerca ibrida, che ci consente di eseguire ricerche vettoriali combinando i punti di forza sia degli embedding densi sia di quelli sparsi. Ne parleremo ulteriormente nelle sezioni seguenti.
Ricerca lessicale vs. ricerca full-text vs. ricerca semantica
Ora che abbiamo una comprensione dettagliata della ricerca lessicale, full-text e semantica, confrontiamo i loro meccanismi di corrispondenza, la complessità, esempi di casi d’uso e le prestazioni.
| Ricerca semantica | Ricerca lessicale | Ricerca full-text | |
|---|---|---|---|
| Meccanismo | Contesto e intento | Corrispondenza esatta | Parola chiave e rilevanza |
| Complessità | Alta | Bassa | Media |
| Prestazioni | Più lenta | Veloce | Moderate |
| Casi d’uso | Sistemi basati su NLP, Retrieval augmented generation (RAG), applicazioni basate su LLM, sistemi di raccomandazione | Ricerca semplice | Sistemi con molti documenti |
Tabella: Ricerca lessicale vs. ricerca full-text vs. ricerca semantica
In termini di meccanismo di corrispondenza, la ricerca lessicale è la più semplice delle tre, poiché abbina i termini esatti nella query. La ricerca full-text migliora la ricerca lessicale scansionando interi documenti alla ricerca di occorrenze dei termini della query, consentendoci di ordinare i risultati in base alla loro rilevanza rispetto alla query. Nel frattempo, la ricerca semantica abbina i termini della query a una raccolta di documenti in base al significato semantico e al contesto, utilizzando modelli avanzati di deep learning e tecniche NLP.
Per quanto riguarda la complessità, anche la ricerca lessicale è l’opzione più semplice. La ricerca full-text è leggermente più complessa a causa dell’introduzione di algoritmi come TF-IDF o BM25, che trasformano i testi in embedding sparsi. La ricerca semantica è la più complessa perché impiega modelli avanzati di deep learning per convertire i testi in embedding densi.
Ad esempio, la ricerca lessicale è un’ottima scelta quando la corrispondenza esatta è fondamentale, come individuare il nome di una variabile nelle ricerche nel codice o trovare un ID prodotto in un documento. La ricerca full-text è adatta per applicazioni in cui si devono trovare documenti con termini o concetti speciali nella query, come la ricerca in database accademici o archivi legali. La ricerca semantica è ideale per casi d’uso in cui comprendere il contesto è la priorità, come chatbot per l’assistenza clienti, sistemi di raccomandazione e scoperta di contenuti.
In termini di prestazioni, le ricerche semantiche e full-text sono relativamente più lente a causa della loro complessità, mentre la ricerca lessicale è più veloce grazie al suo approccio diretto.
Il concetto di ricerca ibrida
Considerando la diversità e i pro e contro di ciascun algoritmo di recupero delle informazioni, scegliere il migliore non è facile e potrebbe non soddisfare davvero tutti i tuoi requisiti. Nei casi d’uso pratici, potremmo persino dover impiegare più di un algoritmo per soddisfare varie esigenze all’interno della nostra applicazione, poiché sistemi efficaci di recupero delle informazioni dovrebbero offrire agli utenti sia comprensione semantica sia corrispondenza esatta delle parole chiave. La ricerca ibrida è un concetto progettato per affrontare questa sfida.
La ricerca ibrida ci consente di combinare due diversi algoritmi di ricerca, più comunemente la combinazione della ricerca semantica con la ricerca full-text o lessicale. Tuttavia, implementare una ricerca ibrida presenta sfide dovute ai diversi sistemi coinvolti. Nello specifico, abbiamo bisogno di un database vettoriale come Milvus per archiviare embedding densi ed eseguire ricerche semantiche, e di un motore di ricerca come Elasticsearch per eseguire ricerche full-text.
Tuttavia, l’utilizzo di due sistemi separati per supportare diversi algoritmi di recupero introduce nuove complessità. Significa gestire configurazioni e attività di manutenzione separate, il che può portare a problemi di integrazione in futuro. Questo approccio può anche raddoppiare i nostri costi richiedendo l’archiviazione dei dati in due infrastrutture.
Figura: Elasticsearch vs Milvus sulla ricerca ibrida.
Una soluzione migliore è utilizzare un sistema unificato capace di facilitare sia ricerche semantiche sia ricerche full-text/lessicali. Milvus è un database vettoriale open-source perfetto per questo caso, poiché supporta l’implementazione di ricerche ibride semantiche e full-text. Inoltre, Milvus supporta anche la ricerca con filtraggio dei metadati, la ricerca per intervallo, e il reranking per ottenere i risultati più accurati.
Con Milvus, possiamo archiviare tutti i dati necessari per vari tipi di ricerche, inclusi embedding densi, embedding sparsi e metadati. Questo ci consente di eseguire ricerche ibride, come ricerche semantiche e full-text o lessicali. Grazie ai suoi metodi di indicizzazione avanzati, Milvus è anche altamente ottimizzato per le operazioni di ricerca vettoriale, accelerando significativamente il processo di recupero delle informazioni rispetto a Elasticsearch.
Conclusione
La scelta dell’algoritmo di recupero delle informazioni svolge un ruolo importante nel determinare l’efficienza e la rilevanza dei risultati di ricerca nella nostra applicazione. La ricerca lessicale offre una corrispondenza esatta dei termini, il che la rende ideale per scenari in cui le corrispondenze esatte sono essenziali. La ricerca full-text introduce progressi nella ricerca lessicale incorporando tecniche come stemming, fuzzy matching e ranking di rilevanza con algoritmi come TF-IDF e BM25, rendendola adatta ad applicazioni con molti documenti. Nel frattempo, la ricerca semantica fornisce capacità di comprensione del contesto e dell’intento, rendendola estremamente utile per sistemi complessi basati su NLP come i chatbot per l’assistenza clienti.
Tuttavia, con la crescita della domanda di sistemi di ricerca flessibili ed efficienti, la ricerca ibrida diventa una soluzione pratica per applicare i punti di forza di più algoritmi di recupero. Integrando sia la ricerca semantica sia la ricerca full-text/lessicale, Milvus offre flessibilità e una migliore esperienza utente. Dai un’occhiata a questo tutorial per provare le nostre ricerche semantiche e full-text con Milvus.
Risorse correlate
Continua a leggere

Introducing Business Critical Plan: Enterprise-Grade Security and Compliance for Mission-Critical AI Applications
Discover Zilliz Cloud’s Business Critical Plan—offering advanced security, compliance, and uptime for mission-critical AI and vector database workloads.

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.

Demystifying the Milvus Sizing Tool
Explore how to use the Sizing Tool to select the optimal configuration for your Milvus deployment.


