Sobes.tech
Middle — Senior

Cos'è la ricerca semantica rispetto a quella lessicale?

sobes.tech AI

Risposta dell'AI

La ricerca lessicale (lexical search) si basa sulla corrispondenza esatta di parole o frasi nel testo. Cerca documenti che contengono esattamente le parole indicate nella query, senza considerare il senso o il contesto. Ad esempio, la ricerca per parole chiave in un database o un semplice filtro per righe.

La ricerca semantica (semantic search) cerca di capire il senso della query e dei documenti, utilizzando modelli che considerano il contesto, i sinonimi e le relazioni tra le parole. Permette di trovare risultati pertinenti anche se non ci sono corrispondenze esatte delle parole. Ad esempio, cercando "auto", la ricerca semantica può restituire documenti con "macchina" o "trasporto".

In questo modo, la ricerca lessicale è una ricerca per corrispondenza letterale, mentre quella semantica per corrispondenza di significato.

Esempio con Python e una libreria per la ricerca semantica:

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer('all-MiniLM-L6-v2')

corpus = ["Mi piace guidare la mia macchina", "Il tempo oggi è soleggiato", "Le automobili hanno marche diverse"]
corpus_embeddings = model.encode(corpus, convert_to_tensor=True)

query = "automobile"
query_embedding = model.encode(query, convert_to_tensor=True)

hits = util.semantic_search(query_embedding, corpus_embeddings, top_k=2)

for hit in hits[0]:
    print(corpus[hit['corpus_id']], f"(punteggio: {hit['score']:.4f})")

Questo codice troverà frasi simili per senso alla parola "automobile".