Inspiration

Siempre acabamos con texto, notas, links, audios y PDFs desperdigados y tirados por Whastapp o sucedáneos. Queríamos desarrollar algo que entendiera el contenido de verdad y lo organizara automáticamente sin obligar al usuario a pensar en categorías.

La idea era simple: guardar cosas sin fricción y que el sistema evolucionara con el tiempo, que no sea una simple aplicación de clasificación.

¿Qué hace nuestro proyecto?

Newron es una app de notas inteligente que:

  • Acepta texto, enlaces, vídeos de YouTube, audios y archivos.
  • Extrae el contenido relevante de cada tipo y genera embeddings semánticos.
  • Agrupa automáticamente los contenidos en clústeres evolutivos.
  • Ajusta esos clústeres dinámicamente a medida que entra nueva información.
  • Separa el uso de la aplicación del procesado mediante BackgraoundTasks. No hay categorías hardcodeadas: los grupos nacen, crecen, se fusionan o desaparecen según el uso real.

Además, el sistema puede funcionar en dos modos: Modo con LangExtract

  • Usa un LLM ligero para extraer foco semántico (topic, domain, summary).
  • Enriquece el contexto antes de generar el embedding.
  • Mejora coherencia semántica en textos ambiguos o muy cortos.
  • Sacrifica algo de latencia a cambio de mayor profundidad semántica.

Modo sin LangExtract

  • Pipeline determinista y rápido.
  • Normalización + keywords por frecuencia + contenido canónico.
  • Embeddings directos del contenido limpio.
  • Menor latencia, menos puntos de fallo, pero pierde contextualización. Esto nos permite elegir entre mayor profundidad semántica o mayor rendimiento según el entorno.

¿Cómo lo desarrollamos?

Construimos un pipeline modular:

  1. Ingesta y tipado (text, link, youtube, audio, file).
  2. Normalización por tipo (resumen web, metadata de YouTube, transcripción de audio, parsing de código, etc.).
  3. Generación de embeddings (modelo ligero en castellano).
  4. Clustering incremental con centroides dinámicos.
  5. Generación automática de etiquetas y descripción del cluster.
  6. Sistema de merge entre clusters basado en solapamiento semántico.

Optamos por un enfoque lo más ligero posible: menos dependencia de LLMs grandes y más control del pipeline, aunque creemos que el uso de arquitecturas más grandes facilitaría la estabilidad de los resultados.

Retos a los que nos enfrentamos

  • Latencia al usar LLMs externos para extracción semántica.
  • Mantener coherencia semántica en castellano.
  • Evitar que clusters similares se fragmentaran demasiado.
  • Ajustar thresholds sin que el sistema se volviera inestable.
  • Manejar tipos de contenido muy distintos sin introducir ruido en los embeddings.

Retos de los que estamos orgullosos

  • Clustering evolutivo sin categorías predefinidas.
  • Pipeline robusto incluso sin LLM externo.
  • Capacidad para despliegue "at home".
  • Merge automático de clusters similares.
  • Soporte real para múltiples formatos (incluyendo código).

Lo que aprendimos

  • Los embeddings bien usados pueden hacer mucho sin necesidad de prompts complejos.
  • La normalización del contenido es más importante de lo que parece.
  • Los sistemas adaptativos necesitan métricas claras o se vuelven caóticos.
  • El diseño del threshold es casi tan importante como el modelo de embedding.

Ideas futuras

  • Threshold adaptativo por cluster (basado en varianza interna).
  • Mejoras en el etiquetado automático sin depender de LLM pesado.
  • Feedback del usuario para reforzar o dividir clusters.
  • Posiblidad de entrenamiento de modelos basados en proxies.
  • Optimización de rendimiento para procesamiento asíncrono completo.

La idea es que Newron no solo agrupe cosas, sino que evolucione contigo.

¿Dónde puedo preguntar si encuentro un problema o tengo dudas?

Podéis contactar a uno de los desarrolladores:

¿Qué licencia tiene Newron?

Newron está bajo la licencia MIT. Elegimos MIT porque es simple, permisiva y facilita la adopción y experimentación, nos deja usar, modificar y distribuir el código sin restricciones complejas, lo que encaja con nuestra idea de mantener el proyecto abierto y flexible.

Built With

Share this project:

Updates