Técnica de recuperación de información que utiliza embeddings vectoriales para encontrar resultados por significado, no solo por coincidencia exacta de palabras clave.
La búsqueda semántica es una técnica de recuperación de información que va más allá de la coincidencia literal de palabras. En lugar de buscar si un documento contiene exactamente los términos de la consulta, convierte tanto la consulta como los documentos en vectores numéricos — llamados embeddings — y mide la similitud entre ellos en un espacio vectorial de alta dimensión.
Si un usuario busca «cómo desplegar en la nube», una búsqueda por palabras clave solo encontraría documentos que contengan esas palabras exactas. La búsqueda semántica también encontraría documentos sobre «deployment en AWS», «infraestructura serverless» o «CI/CD con contenedores» — porque entiende que el significado es similar.
El proceso tiene tres fases:
Un modelo de lenguaje transforma texto en vectores de dimensión fija. Cada vector captura el significado semántico del texto en un espacio donde textos similares quedan cerca entre sí.
Los modelos más comunes para esto son:
Los embeddings de todos los documentos se almacenan en una estructura que permite búsqueda eficiente por similitud. Las opciones van desde un simple arreglo en memoria hasta bases de datos vectoriales especializadas.
La consulta del usuario se convierte en un embedding con el mismo modelo, y se calcula la similitud coseno contra todos los documentos indexados. Los resultados se ordenan por similitud.
consulta → embedding → similitud coseno → resultados ordenados
La primera implementación de búsqueda semántica en este sitio usó Transformers.js con el modelo Xenova/all-MiniLM-L6-v2 ejecutándose directamente en el navegador vía WebAssembly. Los embeddings se pre-computaban en build time y se pasaban como props a la página de búsqueda.
¿Por qué se removió? Cuatro problemas lo hicieron inviable en producción:
tolist(), .data y output[0] se comportaban distinto según el contexto, causando fallos silenciosos.La decisión y los detalles técnicos están documentados en el issue #9 del repositorio.
La búsqueda actual es por palabras clave: coincidencia instantánea contra títulos, resúmenes y tags. Cero dependencias, funciona sincrónicamente, sin estado de carga.
Los embeddings pre-computados siguen generándose en build time (scripts/generate-embeddings.ts) y se almacenan en public/embeddings.json — listos para uso futuro.
Para implementar búsqueda semántica de forma robusta, hay varias opciones según la escala:
Ejecutar el modelo de embeddings en una API route de Node.js (no en el navegador). El modelo se carga una vez al iniciar el servidor y procesa consultas en milisegundos. Viable para sitios con tráfico moderado.
Para colecciones grandes, una base de datos vectorial especializada maneja la indexación y búsqueda eficiente:
Para sitios estáticos con pocas decenas de documentos, pre-computar embeddings en build time y hacer la búsqueda coseno en el cliente es viable — siempre que el modelo no se descargue en el navegador. Los embeddings pre-computados pesan kilobytes, no megabytes.
La combinación de búsqueda por palabras clave y búsqueda semántica suele dar mejores resultados que cualquiera de las dos por separado. El enfoque típico es:
La búsqueda semántica agrega valor real cuando:
Para colecciones pequeñas con vocabulario predecible, la búsqueda por palabras clave es más simple, más rápida y suficientemente efectiva.
La búsqueda por palabras clave falla cuando el usuario no conoce la terminología exacta. La búsqueda semántica cierra esa brecha al entender la intención detrás de la consulta, lo que la hace esencial para bases de conocimiento, documentación técnica y cualquier sistema donde la experiencia de descubrimiento importa.
Campo de la informática dedicado a crear sistemas capaces de realizar tareas que normalmente requieren inteligencia humana, desde el razonamiento y la percepción hasta la generación de lenguaje.
Patrón arquitectónico que combina la recuperación de información de fuentes externas con la generación de texto por LLMs, reduciendo alucinaciones y manteniendo el conocimiento actualizado sin reentrenar el modelo.
Sistemas autónomos que combinan modelos de lenguaje con razonamiento, memoria y uso de herramientas para ejecutar tareas complejas de múltiples pasos con mínima intervención humana.
Crónica de construir un segundo cerebro con grafo de conocimiento, pipeline bilingüe y endpoints para agentes — en días, no semanas, y lo que eso enseña sobre la brecha entre teoría y sistemas que funcionan.
Sistemas de almacenamiento especializados en indexar y buscar vectores de alta dimensión de forma eficiente, habilitando búsqueda semántica y aplicaciones de RAG a escala.
Estructuras de datos que representan conocimiento como redes de entidades y relaciones, permitiendo razonamiento, descubrimiento de conexiones y consultas semánticas sobre dominios complejos.
Representaciones vectoriales densas que capturan el significado semántico de texto, imágenes u otros datos en un espacio numérico donde la proximidad refleja similitud conceptual.