Akademia
Exámenes generados a partir de tu propio material
El problema
Estudiar con tu propio material obliga a escribirte antes las preguntas del examen. Es la parte más lenta de preparar cualquier cosa, y es justo la que todo el mundo se salta.
Akademia coge los documentos que ya tienes y produce preguntas a partir de ellos. Lo interesante en ingeniería no es el prompt. Es todo lo que rodea al prompt.
Un problema de recuperación, no de prompting
Un documento subido se almacena, se trocea en fragmentos de mil caracteres con doscientos de solapamiento, y cada fragmento se convierte en embedding y se guarda junto a su origen. La generación recupera los ocho fragmentos más cercanos a un tema y escribe preguntas solo desde esos pasajes, de modo que una pregunta sigue siendo respondible con el material que aportó el usuario.
Los embeddings corren sobre text-embedding-3-small a través de OpenRouter, mientras que el modelo de chat es Llama 3.3 70B en Groq. Dos proveedores no es indecisión: Groq no sirve modelos de embedding, así que el pipeline tiene que abarcar los dos. Se está añadiendo Gemini Embedding 2 como segundo proveedor de embeddings para que ningún proveedor pueda dejar el pipeline tirado.
Las preguntas generadas son borradores, no respuestas
Nada de lo que escribe un modelo se convierte en pregunta real por su cuenta. Cada elemento generado cae en una tabla de borradores con estado generado, validado o rechazado, y lleva una referencia al documento de origen del que salió.
Esa puerta es todo el argumento. Un modelo que alucina una pregunta verosímil sobre el temario del que te examinan es peor que no tener pregunta, así que el sistema se construye asumiendo que lo hará y pone a una persona como último paso.
Una costura donde irá el vector store
La primera versión guarda cada embedding como un array de floats en JSON dentro de una columna de texto. No es el estado final y la migración lo dice en voz alta: el camino de subida a una columna pgvector de dimensión 1536 está escrito en el esquema como comentario, y la recuperación vive detrás de un puerto.
Pasar de un escaneo completo a un índice vectorial de verdad es escribir un adaptador. El dominio no se entera. Publicar primero la versión simple fue una decisión, no un descuido, y dejar la costura a la vista es lo que la convierte en decisión.
El resto del producto
Alrededor del pipeline hay una aplicación de verdad: exámenes cronometrados y simulacros, flashcards de repetición espaciada con el algoritmo SM-2, una jerarquía de asignaturas, unidades y preguntas, autenticación JWT con Google OAuth2 y una tienda Stripe para los temarios.
Java 21 y Spring Boot 3.4 en el backend, React 18 con Vite 5 y Tailwind en el front, y todo el stack en Docker.