Matryoshka Representation Learning (MRL)
Aprende cómo el aprendizaje de representaciones Matryoshka (MRL) permite crear embeddings con distintos niveles de granularidad. Descubre cómo optimizar la búsqueda y el despliegue en el borde de Ultralytics YOLO26.
El aprendizaje de representaciones Matryoshka (MRL) es una técnica de entrenamiento en inteligencia artificial (IA) y aprendizaje automático (ML) que obliga a una red neuronal a aprender embeddings con distintos niveles de granularidad dentro de un único vector de salida. Inspirado en las muñecas rusas encajables, MRL organiza el embedding para colocar primero la información semántica más importante. Esto significa que un vector de alta dimensionalidad (por ejemplo, de 1024 dimensiones) puede truncarse para formar subconjuntos anidados más pequeños (como de 512, 256 o 64 dimensiones) sin perder su representación subyacente. Esta flexibilidad reduce drásticamente la carga computacional asociada habitualmente a las tareas de recuperación de información.
Cómo funciona el aprendizaje de representaciones Matryoshka#
Tradicionalmente, un modelo de embeddings se entrena para optimizar una función de pérdida concreta para un tamaño de salida fijo. Si un sistema necesita un vector más pequeño para ahorrar memoria, hay que entrenar un modelo completamente nuevo. MRL resuelve este problema aplicando una función de pérdida anidada durante el entrenamiento. Optimiza conjuntamente la representación completa y sus subconjuntos anidados. Organizaciones como OpenAI han adoptado MRL para sus API modernas de embeddings, lo que permite a los desarrolladores eliminar dinámicamente dimensiones del final de un vector y conservar puntuaciones precisas de similitud del coseno.
Aplicaciones en el mundo real#
MRL ofrece ventajas claras al equilibrar la precisión con los costes de almacenamiento y el ancho de banda de memoria.
- Búsqueda vectorial adaptativa para LLM: En las canalizaciones de generación aumentada por recuperación (RAG), los modelos de lenguaje grandes (LLM) suelen depender de enormes bases de datos vectoriales. Con MRL, una empresa puede realizar una búsqueda semántica rápida y aproximada con las primeras 64 dimensiones de los embeddings y, después, volver a clasificar los mejores resultados utilizando vectores completos de 1024 dimensiones. Este enfoque de dos pasadas acelera enormemente la búsqueda vectorial y reduce los costes de almacenamiento de la base de datos.
- Visión artificial escalable en el edge: Al implementar sistemas de visión artificial mediante la plataforma Ultralytics, las limitaciones del hardware pueden variar mucho. Un modelo que utiliza MRL puede transmitir embeddings visuales completos a un servidor potente de implementación en la nube, pero también recurrir sin problemas a la transmisión de embeddings truncados de 128 dimensiones cuando funciona en dispositivos de baja potencia para la computación en el edge, optimizando la latencia sin volver a entrenar el modelo.
Diferencias entre conceptos relacionados#
Para utilizar MRL correctamente, conviene distinguirlo de las técnicas más antiguas de compresión de datos.
- MRL frente a la reducción de dimensionalidad: Los algoritmos como PCA (análisis de componentes principales) o t-SNE se aplican después del entrenamiento para comprimir los datos. En cambio, MRL se integra de forma nativa en la arquitectura de la red neuronal durante el entrenamiento y preserva relaciones no lineales más profundas.
- MRL frente a la poda de modelos: La poda elimina pesos y capas de la propia red neuronal para acelerar la inferencia, por ejemplo, creando una variante más pequeña de un modelo Ultralytics YOLO. MRL no cambia el tamaño del modelo, sino únicamente el tamaño del vector de salida que produce.
Implementación práctica#
Truncar un embedding MRL es muy sencillo y no requiere lógica compleja de indexación semántica. Como las características más importantes tienen mucho peso en las primeras dimensiones, basta con seccionar la matriz. El siguiente ejemplo muestra cómo truncar una salida multimodal simulada de YOLO26 mediante operaciones básicas con tensores de PyTorch.
import torch
# Simulate a full 1024-dimensional MRL embedding returned by a model
full_embedding = torch.rand(1, 1024)
# To deploy on memory-constrained hardware, simply slice the first 256 dimensions
# Because the model was trained with MRL, this subset remains highly accurate
truncated_embedding = full_embedding[:, :256]
print(f"Original size: {full_embedding.shape[1]}, Compressed size: {truncated_embedding.shape[1]}")








