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".