← Volver a proyectos

MovieFinder

Buscador semántico de películas: describe lo que recuerdas en lenguaje natural y encuentra el título exacto mediante embeddings, sin necesidad de coincidencia de texto.

Catálogo
9.883 películas
Modelo
all-MiniLM-L6-v2
Inferencia
ONNX Runtime
Despliegue
Docker · Render
  • FastAPI
  • ONNX Runtime
  • Python

Machine Learning · NLP · Embeddings · Dense Retrieval

Respuestas reales de la API, grabadas el 16/10/2026.

Pruébalo tú →

Cómo funciona

Tres piezas: unos scripts offline que generan los embeddings, una API en Docker que solo codifica la consulta y compara, y esta web en Astro, que llama a la API y muestra los resultados.

Desliza para ver el mapa completo →

Navegador antoniocaballero.dev API · FastAPI contenedor Docker en Render Preparación offline una sola vez en memoria al arrancar mismo modelo Consulta texto + filtros GET /search Tokenizer ONNX Runtime all-MiniLM-L6-v2 Mean pooling + norma L2 Filtros género · años Similitud coseno Top-k JSON Resultados image.tmdb.org pósters Catálogo 9.883 películas Título + sinopsis por película all-MiniLM-L6-v2 mean pooling + L2 embeddings.npy vectores
  1. 01

    El catálogo

    Todo empieza en un catálogo de 9.883 películas con título, fecha, géneros, sinopsis y póster. De cada una se toma el texto título + sinopsis.

  2. 02

    De texto a vector

    Ese texto pasa por el modelo all-MiniLM-L6-v2. Con mean pooling y normalización L2, cada película se convierte en un vector que resume su significado.

  3. 03

    Se calcula una sola vez

    Los vectores se guardan en embeddings.npy. La API los carga en memoria al arrancar, así que en producción nunca se recalculan.

  4. 04

    Llega una búsqueda

    Desde el navegador, la descripción y los filtros viajan a GET /search, una API hecha con FastAPI que corre en un contenedor Docker en Render.

  5. 05

    La consulta, también vector

    La descripción se tokeniza y se codifica con ONNX Runtime, con el mismo modelo, pooling y normalización que el catálogo. Así la consulta y las películas viven en el mismo espacio.

  6. 06

    Filtros

    Antes de comparar, se descartan las películas que no cumplen el género o el rango de años elegidos.

  7. 07

    Las más parecidas

    Se calcula la similitud coseno contra las que quedan y vuelven las top-k en JSON. El navegador las pinta y carga los pósters desde TMDB. En la primera búsqueda de arriba, gana Spider-Man (2002) con 0,752.

Limitaciones

  • Funciona mejor con descripciones en inglés.
  • El servidor está en el plan gratuito de Render: si lleva un rato sin uso, la primera búsqueda puede tardar unos 30 segundos en responder.