Producto en producción
Cinerd
Encuentra una película a partir de un recuerdo.
22.029 películas en el catálogo
Proyecto propio: ingesta, búsqueda, evaluación e implementación
En el conjunto de prueba separado de la calibración, el nDCG@10 pasó de 0,360 con BM25 a 0,829 con la búsqueda híbrida. La métrica evalúa la ordenación; no equivale a un porcentaje de aciertos.
LA DECISIÓN QUE IMPORTA
Retirar un modelo más complejo
El cross-encoder aumentaba la latencia unas 40 veces sin una mejora consistente de calidad. Retirarlo fue una decisión basada en la evaluación.
UNA DECISIÓN REAL DE CINERD
¿Mantener un modelo más complejo?
Probé un cross-encoder para reordenar los resultados. La evaluación mostró una mejora dentro del ruido y una latencia unas 40 veces mayor.
Ver la decisión y su justificación
Retiré el cross-encoder de producción. La mejora inconsistente no justificaba el coste de latencia. La búsqueda híbrida siguió siendo evaluada mediante pruebas de calidad.
Las cifras describen la prueba informada en el currículum. Esta interacción presenta la decisión; no realiza una nueva medición ni ejecuta los modelos.
El reto
No siempre recordamos el título de una película. Una descripción vaga de una escena o personaje debería ser suficiente para empezar la búsqueda.
Mi contribución
Construí un catálogo de 22.029 títulos y un buscador que combina palabras clave con comprensión semántica. Me encargué de la ingesta de datos, la evaluación de calidad y la infraestructura de producción.
El resultado
El producto está disponible para su uso. En el conjunto de prueba, la calidad de la ordenación de los resultados pasó de 0,360 a 0,829 en nDCG@10, comparando la búsqueda solo por palabras clave con la búsqueda híbrida. Cuanto más cerca de 1, mejor la ordenación en esta métrica.
Explorar los detalles técnicos
Catálogo de TMDB, IMDb y Wikipedia. Ocho señales de búsqueda, entre ellas BM25, embeddings multilingual-e5-large, personajes y popularidad. Normalización por z-score con límite para valores extremos. Recomendación con SVD propio, 64 factores y 10 millones de valoraciones de MovieLens (RMSE 0,83), combinada con contenido mediante RRF.
Implementación en Oracle Cloud, DVC, CI con ruff, mypy y pytest, y métricas de Prometheus. La cuantización INT8 redujo la memoria de 2,3 a 1,7 GB. Se retiró un cross-encoder porque aumentaba la latencia unas 40 veces sin una mejora consistente de calidad.