🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI

HomeBlogsIncrustaciones Matryoshka: Detalle a múltiples escalas

Incrustaciones Matryoshka: Detalle a múltiples escalas

  • Engineering
October 30, 2024
Stefan Webb, David Wang

¿Qué son las incrustaciones Matryoshka?

A la hora de crear sistemas de búsqueda vectorial eficientes, uno de los principales retos es gestionar los costes de almacenamiento manteniendo una latencia y una recuperación aceptables. Los modelos de incrustación modernos producen vectores con cientos o miles de dimensiones, lo que genera una importante sobrecarga computacional y de almacenamiento para el vector en bruto y el índice.

Tradicionalmente, los requisitos de almacenamiento se reducen aplicando un método de cuantificación o reducción de la dimensionalidad justo antes de construir el índice. Por ejemplo, podemos ahorrar almacenamiento reduciendo la precisión mediante la cuantificación de productos (PQ) o el número de dimensiones mediante el análisis de componentes principales (PCA). Estos métodos analizan todo el conjunto de vectores para encontrar uno más compacto que mantenga las relaciones semánticas entre vectores.

Aunque eficaces, estos enfoques estándar reducen la precisión o la dimensionalidad una sola vez y a una sola escala. Pero, ¿y si pudiéramos mantener varias capas de detalle simultáneamente, como una pirámide de representaciones cada vez más precisas?

He aquí las incrustaciones Matryoshka. Estas ingeniosas construcciones, que deben su nombre a las muñecas rusas (véase la ilustración), integran múltiples escalas de representación en un único vector. A diferencia de los métodos tradicionales de posprocesamiento, las incrustaciones Matryoshka aprenden esta estructura multiescala durante el proceso de entrenamiento inicial. El resultado es notable: no sólo la incrustación completa capta la semántica de entrada, sino que cada prefijo de subconjunto anidado (primera mitad, primer cuarto, etc.) proporciona una representación coherente, aunque menos detallada.

Figure: Visualization of Matryoshka embeddings with multiple layers of detail Figura: Visualización de incrustaciones Matryoshka con múltiples capas de detalle

Figura: Visualización de incrustaciones Matryoshka con múltiples capas de detalle

Este enfoque contrasta claramente con las incrustaciones convencionales, en las que el uso de subconjuntos arbitrarios de las dimensiones vectoriales suele destruir el significado semántico. Con las incrustaciones Matryoshka, puede elegir la granularidad que mejor equilibre la precisión y el coste computacional de su tarea específica.

¿Necesita una búsqueda rápida aproximada? Utilice la "muñeca" más pequeña. ¿Necesita la máxima precisión? Utilice la incrustación completa. Esta flexibilidad los hace especialmente valiosos para los sistemas que se adaptan a diferentes requisitos de rendimiento o limitaciones de recursos.

Inferencia

Una valiosa aplicación de las incrustaciones Matryoshka es acelerar las búsquedas de similitud sin sacrificar la recuperación. Aprovechando subconjuntos más pequeños de incrustaciones de consultas y bases de datos -como el primer 1/32 de sus dimensiones- podemos construir un índice sobre este espacio reducido que conserva gran parte de la información de similitud. Los resultados iniciales de este espacio de incrustación más pequeño pueden utilizarse directamente. Sin embargo, también existe una técnica para aumentar la recuperación y tener en cuenta cualquier reducción menor derivada del recorte dimensional, lo que hace que este enfoque sea eficiente y eficaz para las tareas de búsqueda de similitudes.

Figure: How the funnel search works with Matryoshka embeddings Figura: Funcionamiento de la búsqueda en embudo con incrustaciones Matryoshka

Figura: Funcionamiento de la búsqueda en embudo con incrustaciones Matryoshka

Para acelerar eficazmente la búsqueda de similitudes manteniendo la precisión, podemos utilizar un enfoque de "búsqueda en embudo". En primer lugar, realizamos una búsqueda inicial de similitudes utilizando sólo el primer 1/32 de las dimensiones de la incrustación, lo que genera un amplio conjunto de elementos candidatos. A continuación, volvemos a clasificar estos candidatos en función de su similitud con la consulta utilizando los primeros 1/16 de las dimensiones, eliminando una parte de la lista. Este proceso continúa de forma iterativa, reordenando y eliminando con subconjuntos cada vez más grandes de las dimensiones de incrustación: 1/8, 1/4, etcétera. Es importante destacar que sólo realizamos una búsqueda inicial de similitudes en este espacio de dimensiones inferiores, y una única pasada del modelo de incrustación calcula la incrustación de la consulta. Este proceso de canalización reduce los candidatos en cada paso y es más rápido y eficaz que la búsqueda directa en el espacio de dimensión completa. Extraer muchas coincidencias del espacio de 1/32 dimensiones y refinarlas mediante la búsqueda en embudo puede acelerar significativamente la búsqueda de similitudes, conservando al mismo tiempo una gran capacidad de recuperación.

Entrenamiento

Veamos algunos detalles técnicos. El método es muy sencillo de aplicar. Consideremos el contexto de la puesta a punto de un modelo BERT para la incrustación de frases. Para convertir un modelo BERT, que ha sido preentrenado en la pérdida por enmascaramiento de token, en un modelo de incrustación de frases, formamos la incrustación de frases como la media de la capa final, es decir, la media de las incrustaciones contextualizadas por token.

Una opción de objetivo de entrenamiento es la pérdida Cosine Sentence (CoSENT), L(u,v;s)L(u, v; s) L v s . Introduce un par de incrustaciones de frases, u,vu,v u v, y su puntuación de similitud deseada, ss s (véase la fórmula en el enlace anterior). Ahora, para aprender las incrustaciones Matryoshka, hacemos una pequeña modificación en el objetivo de entrenamiento:

LM(u,v)=w0L(u1:d,v1:d)+w1L(u1:d/2,v1:d/2)+w2L(u1:d/4,v1:d/4)+⋯L_M(u, v) = w_0L(u_{1:d}, v_{1:d}) + w_1L(u_{1:d/2}, v_{1:d/2}) + w_2L(u_{1:d/4}, v_{1:d/4}) + \cdots L v = w L1, v 1) + w L1, v 1) + w L1, v

donde la suma se continúa calculando la pérdida en la mitad de la entrada del término anterior hasta que se alcanza un cuello de botella de información. Los autores sugieren fijar

w0=w1=⋯=1w_0=w_1=\cdots=1 w=

En pocas palabras, la pérdida Matryoshka es una suma ponderada de la pérdida original sobre subconjuntos recursivos de la entrada.

Una conclusión clave de la ecuación anterior es que la pérdida Matryoshka logra un aprendizaje eficiente de las representaciones en múltiples escalas compartiendo pesos a través de los modelos de incrustación (el mismo modelo se utiliza para codificar, por ejemplo, u1:du_{1:d} u y u1:d/2u_{1:d/2} u ) y compartiendo dimensiones entre escalas(u1:d/2u_{1:d/2} u es un subconjunto de uu u).

Incrustaciones Matryoshka y Milvus

Milvus admite sin problemas cualquier modelo de incrustación Matryoshka que pueda cargarse a través de bibliotecas estándar como pymilvus.model, transformadores de frases u otras herramientas similares. Desde el punto de vista del sistema, no hay diferencia funcional entre un modelo de incrustación normal y uno entrenado específicamente para generar incrustaciones Matryoshka.

Los modelos de incrustación Matryoshka más conocidos son:

Para obtener una guía completa sobre el uso de las incrustaciones Matryoshka con Milvus, consulte el cuaderno Funnel Search with Matryoshka Embeddings.

Resumen

La incrustación Matryoshka permite a los desarrolladores crear incrustaciones abreviadas sin sacrificar la integridad semántica, lo que las hace ideales para una búsqueda y un almacenamiento más eficientes. Aunque se puede modificar un modelo existente, también hay disponibles opciones preentrenadas, como las de OpenAI y Hugging Face.

Sin embargo, una limitación actual es la escasez de incrustaciones Matryoshka de código abierto, con pocas disponibles en el hub de Hugging Face. Además, estos modelos a menudo no se etiquetan explícitamente como "Matryoshka", lo que dificulta su localización. Esperemos que, con el creciente interés, pronto haya una mayor disponibilidad y un etiquetado más claro.

¿Preparado para optimizar tus capacidades de búsqueda? Empiece a utilizar Milvus + Matryoshka hoy mismo.

Recursos

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Sigue Leyendo