Semantic Search
La búsqueda semántica ordena documentos e imágenes según el significado de una consulta en lugar de sus palabras exactas, mediante incrustaciones, búsqueda de vecinos más cercanos y rerankers.
La búsqueda semántica clasifica documentos, imágenes u otros elementos según la similitud entre su significado y el de una consulta, en lugar de basarse en las palabras que comparten. Una búsqueda de «mi gato tiene hambre» puede devolver una página titulada «Horario de alimentación para un gatito nuevo», aunque no compartan ninguna palabra. Los sistemas actuales lo hacen con embeddings: un codificador neuronal asigna consultas y elementos a vectores que quedan próximos cuando sus significados son similares, y la búsqueda vectorial encuentra los elementos más cercanos. La búsqueda web avanzó en esta dirección en 2019, cuando Google empezó a aplicar BERT para comprender las consultas de búsqueda, un cambio que, según la empresa, afectó a una de cada diez búsquedas en inglés en Estados Unidos.
Cómo funciona la búsqueda semántica#
La mayoría de los sistemas de búsqueda semántica recuperan resultados con un bi-encoder y los refinan con un reranker. El bi-encoder genera de antemano un embedding de cada documento, y los vectores se almacenan en una base de datos vectorial. En el momento de la consulta, solo se genera el embedding de la consulta, y un índice aproximado de vecinos más cercanos devuelve los principales candidatos según la similitud coseno. Sentence-BERT (2019) hizo viable este enfoque para oraciones: encontrar el par más similar entre 10 000 oraciones llevaba unas 65 horas con un cross-encoder BERT y unos 5 segundos con sus embeddings de oraciones. Después, Dense Passage Retrieval (2020) demostró que los embeddings aprendidos superaban la clasificación por palabras clave BM25 en entre 9 y 19 puntos de precisión de recuperación de pasajes entre los 20 primeros en tareas de respuesta a preguntas de dominio abierto. Finalmente, un reranker cross-encoder procesa juntos la consulta y cada candidato para reordenar la lista corta con más precisión.
Este ejemplo compara la coincidencia de palabras con la similitud entre embeddings mediante la biblioteca Sentence Transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
documents = [
"How to reset a forgotten account password",
"Feeding schedule for a new kitten",
"Quarterly sales report for the retail division",
"Best hiking trails near Denver",
]
query = "my cat is hungry"
# Keyword search: documents sharing at least one word with the query
query_words = set(query.lower().split())
print("Keyword matches:", [d for d in documents if query_words & set(d.lower().split())])
# Semantic search: rank documents by cosine similarity of their embeddings
doc_embeddings = model.encode(documents)
query_embedding = model.encode(query)
scores = model.similarity(query_embedding, doc_embeddings)[0]
best = int(scores.argmax())
print(f"Semantic match: {documents[best]!r} (cosine {scores[best]:.2f})")La búsqueda por palabras clave devuelve una lista vacía, porque ningún documento contiene «mi», «gato», «tiene» ni «hambre». La búsqueda semántica devuelve el horario de alimentación del gatito con una similitud coseno de 0,56, el documento cuyo significado más se aproxima.
Búsqueda semántica y términos relacionados#
- Búsqueda por palabras clave: Clasifica documentos según coincidencias exactas de términos mediante fórmulas como BM25. Gestiona nombres, números de pieza y palabras poco frecuentes que los embeddings pueden difuminar, pero no detecta sinónimos ni paráfrasis.
- Búsqueda híbrida: Combina la recuperación por palabras clave y la semántica, y fusiona los resultados; es una configuración habitual en sistemas de búsqueda de producción y RAG.
- Segmentación semántica: Una tarea de visión artificial no relacionada que asigna una clase a cada píxel de una imagen y solo comparte con la búsqueda semántica la palabra «semántica».
- Caché semántica: Aplica la misma búsqueda basada en el significado a las solicitudes de LLM y reutiliza una respuesta almacenada cuando una nueva instrucción significa lo mismo que otra anterior.
Aplicaciones en el mundo real#
- Generación aumentada por recuperación (RAG): Encuentra los pasajes que necesita un modelo de lenguaje, aunque la forma de expresarse del usuario sea distinta de la de la documentación.
- Búsqueda de patentes: Encuentra técnicas anteriores que describen la misma invención con una terminología distinta.
- Búsqueda de productos minoristas: Relaciona una consulta como «zapatos para ir al trabajo cuando llueve» con zapatillas impermeables cuyos anuncios nunca usan esas palabras.
- Sistemas de recomendación: Sugieren artículos o productos cuyos embeddings están cerca de los elementos que el usuario ya ha elegido.
Búsqueda de imágenes por significado#
Los modelos entrenados con aprendizaje contrastivo sobre pares de imágenes y pies de foto, como CLIP, convierten textos e imágenes en embeddings dentro de un mismo espacio, de modo que una consulta de texto puede clasificar fotos sin etiquetas ni pies de foto. La solución de búsqueda semántica de imágenes de Ultralytics funciona así: su clase VisualAISearch genera una sola vez con CLIP el embedding de cada imagen de una carpeta, genera el embedding de cada consulta de texto en el mismo espacio y devuelve hasta 30 imágenes cuya similitud coseno con la consulta supera un umbral, ordenadas de mayor a menor similitud. Así, una consulta como «un perro sentado en un banco» encuentra fotos coincidentes en una colección sin etiquetar.










