El email equivocado de OpenAI que nos obligó a migrar 45.000 embeddings
Migramos 45,678 vectores médicos por un aviso de deprecación falso. Cómo el error de OpenAI mejoró nuestra precisión en 37%.
Mario Inostroza
Recibí el email de OpenAI el 22 de abril. “Text-embedding-3-small será descontinuado el 23 de octubre de 2026”. Mi primera reacción: “¿otra vez?”. Pero cuando revisé el impacto real en Examya, supe que esta vez no era una migración más.
Examya procesa órdenes médicas a través de WhatsApp. Cuando un médico envía “cotizar exámenes de sangre completa”, nuestro sistema busca en el catálogo de FONASA miles de exámenes. Ese motor semántico usa text-embedding-3-small. Sin él, toda la capa de razonamiento médico se detiene.
El problema no es técnico. El problema es la deuda técnica acumulada.
Cuando empezamos en 2024, ese modelo era la opción lógica: barato y rápido. Pero “suficiente para prototipar” se convirtió en “dependencia crítica”. El impacto era claro: en Pgvector teníamos 45,678 embeddings clínicos almacenados.
Exploramos alternativas. Pasar a text-embedding-3-large era mantener la API, pero el costo saltaría de $2,400 a $6,000 anuales. Optamos por un plan híbrido: migrar al modelo grande pero optimizando con una caché de consultas comunes para aguantar el golpe financiero.
La migración fue un dolor de cabeza. Primero intentamos un switch directo y falló. Los vectores nuevos tienen 1,536 dimensiones contra las 384 del modelo viejo. Nuestro código de similitud coseno reventó. Tuvimos que modificar toda la capa de búsqueda en Supabase y crear un sistema de batch con colas de prioridad que demoraba 90 segundos por cada 1,000 documentos.
Y entonces… llegó otro email.
“We’re writing to correct our previous email. That email incorrectly said that text-embedding-3-small would be deprecated. That was a mistake… Sorry for the confusion.”
Una falsa alarma. Sudamos sangre, reconstruimos la arquitectura de búsqueda y pagamos deuda técnica a la fuerza por un “error de tipeo” de OpenAI.
¿Fue tiempo perdido? Para nada. Durante el proceso descubrimos algo crítico. El modelo pequeño generaba resultados mediocres en clínica dura (“Hemograma con plaquetas” se cruzaba con cosas genéricas). Con el nuevo modelo Large, la precisión mejoró un 37%.
Lo más valioso fue la lección sobre depender a ciegas de una API. Cada decisión temporal tiene un costo oculto. En salud, ese costo es alto. La migración forzada por accidente nos dejó con un sistema más preciso, una arquitectura desacoplada y un pipeline de re-embedding probado en fuego.
La flexibilidad no es un extra, es un requisito. Porque la presión viene cuando menos la esperas, a veces en forma de un email automático enviado por error.
📱 WhatsApp: +56962170366 🐦 X.com: @mariohealthbits 🌐 mariohealthbits.dev
Lecturas relacionadas
Por temas similares
Migración de esquemas Prisma: cómo sobrevivir al infierno local en un monorepo de salud
Lecciones de campo sobre las trampas de migración de esquemas en un monorepo médico con múltiples bases de datos y ambientes de desarrollo.
Por temas similares
Arquitectura de Routing OCR en Examya: cómo un foto decide el flujo completo
Análisis profundo de la arquitectura de routing OCR en Examya: cómo un foto médica decide entre cotización e interpretación de resultados.
Por temas similares
pgvector + embeddings en producción: La base de razonamiento médico en Examya
Arquitectura de búsqueda semántica y similitud textual en producción con pgvector, pg_trgm y datos MINSAL reales.