Sobes.tech
Middle — Senior

¿Qué es la búsqueda semántica frente a la búsqueda léxica?

sobes.tech AI

Respuesta de la IA

La búsqueda léxica (lexical search) se basa en la coincidencia exacta de palabras o frases en el texto. Busca documentos que contienen exactamente las palabras indicadas en la consulta, sin tener en cuenta el significado o el contexto. Por ejemplo, la búsqueda por palabras clave en una base de datos o un filtrado simple por cadenas.

La búsqueda semántica (semantic search) intenta entender el significado de la consulta y los documentos, utilizando modelos que consideran el contexto, los sinónimos y las relaciones entre palabras. Permite encontrar resultados relevantes incluso si no hay coincidencias exactas de palabras. Por ejemplo, al buscar "automóvil", la búsqueda semántica puede devolver documentos con "coche" o "transporte".

De este modo, la búsqueda léxica es una búsqueda por coincidencia literal, y la semántica por correspondencia de significado.

Ejemplo usando Python y una biblioteca para búsqueda semántica:

from sentence_transformers import SentenceTransformer, util

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

corpus = ["Me gusta conducir mi coche", "El clima hoy es soleado", "Los automóviles tienen diferentes marcas"]
corpus_embeddings = model.encode(corpus, convert_to_tensor=True)

query = "automóvil"
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"(puntuación: {hit['score']:.4f})")

Este código encontrará frases similares en significado a la palabra "automóvil".