🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI
  • Home
  • Blog
  • Emboîtements Matryoshka : Détail à plusieurs échelles

Emboîtements Matryoshka : Détail à plusieurs échelles

  • Engineering
October 30, 2024
Stefan Webb, David Wang

Que sont les Matryoshka Embeddings ?

Lors de la construction de systèmes de recherche vectorielle efficaces, l'un des principaux défis consiste à gérer les coûts de stockage tout en maintenant une latence et un rappel acceptables. Les modèles d'intégration modernes produisent des vecteurs comportant des centaines ou des milliers de dimensions, ce qui entraîne des coûts de stockage et de calcul importants pour le vecteur brut et l'index.

Traditionnellement, les besoins en stockage sont réduits par l'application d'une méthode de quantification ou de réduction de la dimensionnalité juste avant la construction de l'index. Par exemple, nous pouvons économiser de l'espace de stockage en réduisant la précision à l'aide de la quantification par produit (PQ) ou le nombre de dimensions à l'aide de l'analyse en composantes principales (ACP). Ces méthodes analysent l'ensemble des vecteurs pour en trouver un plus compact qui préserve les relations sémantiques entre les vecteurs.

Bien qu'efficaces, ces approches standard ne réduisent la précision ou la dimensionnalité qu'une seule fois et à une seule échelle. Mais que se passerait-il si nous pouvions conserver simultanément plusieurs couches de détails, comme une pyramide de représentations de plus en plus précises ?

C'est là qu'interviennent les encastrements Matryoshka. Nommées d'après les poupées russes gigognes (voir illustration), ces constructions astucieuses intègrent plusieurs échelles de représentation dans un seul vecteur. Contrairement aux méthodes traditionnelles de post-traitement, les Matryoshka embeddings apprennent cette structure multi-échelle au cours du processus d'apprentissage initial. Le résultat est remarquable : non seulement l'intégration complète capture la sémantique de l'entrée, mais chaque préfixe de sous-ensemble imbriqué (première moitié, premier quart, etc.) fournit une représentation cohérente, bien que moins détaillée.

Figure: Visualization of Matryoshka embeddings with multiple layers of detail Figure : Visualisation des encastrements Matryoshka avec plusieurs couches de détails

Figure : Visualisation des encastrements de Matryoshka avec plusieurs couches de détails

Cette approche contraste fortement avec les encastrements conventionnels, où l'utilisation de sous-ensembles arbitraires des dimensions du vecteur détruit généralement le sens sémantique. Avec les encastrements de Matryoshka, vous pouvez choisir la granularité qui concilie le mieux la précision de votre tâche spécifique et le coût de calcul.

Vous avez besoin d'une recherche approximative rapide ? Utilisez la plus petite "poupée". Vous avez besoin d'une précision maximale ? Utilisez l'intégration complète. Cette flexibilité les rend particulièrement utiles pour les systèmes qui s'adaptent à des exigences de performance différentes ou à des contraintes de ressources.

Inférence

L'accélération des recherches de similarité sans sacrifier le rappel est une application précieuse des Matryoshka embeddings. En tirant parti de sous-ensembles plus petits d'encastrements de requêtes et de bases de données, tels que les 1/32 premiers de leurs dimensions, nous pouvons construire un index sur cet espace réduit qui préserve encore une grande partie des informations de similarité. Les résultats initiaux de cet espace d'intégration réduit peuvent être utilisés directement. Toutefois, il existe également une technique permettant d'augmenter le rappel et de tenir compte de toute réduction mineure résultant de la réduction des dimensions, ce qui rend cette approche à la fois efficace et efficiente pour les tâches de recherche de similarité.

Figure: How the funnel search works with Matryoshka embeddings Figure : Fonctionnement de la recherche en entonnoir avec les encastrements de Matryoshka

Figure : Fonctionnement de la recherche en entonnoir avec les encastrements de Matryoshka

Pour accélérer efficacement la recherche de similarités tout en maintenant la précision, nous pouvons utiliser une approche de "recherche en entonnoir". Tout d'abord, nous effectuons une première recherche de similitudes en utilisant uniquement les 1/32 premiers des dimensions de l'intégration, ce qui génère un large éventail d'éléments candidats. Nous classons ensuite ces candidats en fonction de leur similarité avec la requête en utilisant les 1/16 premières dimensions, ce qui permet d'élaguer une partie de la liste. Ce processus se poursuit de manière itérative, en procédant au reclassement et à l'élagage à l'aide de sous-ensembles de plus en plus grands des dimensions d'intégration - 1/8, 1/4, et ainsi de suite. Il est important de noter que nous n'effectuons qu'une seule recherche de similarité initiale dans cet espace de dimension inférieure et qu'un seul passage du modèle d'intégration calcule l'intégration de la requête. Ce processus d'entonnoir réduit le nombre de candidats à chaque étape et est plus rapide et plus efficace qu'une recherche directe dans l'espace à pleine dimension. Le fait de tirer de nombreuses correspondances de l'espace à 1/32 dimensions et de les affiner par le biais de la recherche en entonnoir peut accélérer considérablement la recherche de similarités tout en préservant un rappel important.

Entraînement

Entrons dans quelques détails techniques. La méthode est très simple à appliquer. Considérons le contexte de l'affinement d'un modèle BERT pour l'intégration de phrases. Pour convertir un modèle BERT, qui a été pré-entraîné sur la perte de jeton masqué, en un modèle d'intégration de phrases, nous formons l'intégration de phrases comme la moyenne de la couche finale, c'est-à-dire la moyenne des intégrations contextualisées par jeton.

Un choix d'objectif d'apprentissage est la perte de cosinus de la phrase (CoSENT), L(u,v;s)L(u, v ; s) L v s . Il entre une paire d'enchâssements de phrases, u,vu,v u v, et leur score de similarité souhaité, ss s (voir le lien ci-dessus pour la formule). Maintenant, pour apprendre les encastrements de Matryoshka, nous apportons une petite modification à l'objectif d'apprentissage :

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

où la somme se poursuit en calculant la perte sur la moitié de l'entrée du terme précédent jusqu'à ce qu'un goulot d'étranglement de l'information soit atteint. Les auteurs suggèrent de fixer

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

En termes simples, la perte Matryoshka est une somme pondérée de la perte originale sur des sous-ensembles récursifs de l'entrée.

L'un des principaux enseignements de l'équation ci-dessus est que la perte de Matryoshka permet un apprentissage efficace des représentations à plusieurs échelles en partageant les poids entre les modèles d'intégration (le même modèle est utilisé pour coder, par exemple, u1:du_{1:d} u et u1:d/2u_{1:d/2} u ) et en partageant les dimensions entre les échelles(u1:d/2u_{1:d/2} u est un sous-ensemble de uu u).

Matryoshka Embeddings et Milvus

Milvus prend en charge de manière transparente tout modèle d'intégration Matryoshka qui peut être chargé via des bibliothèques standard telles que pymilvus.model, sentence-transformers ou d'autres outils similaires. Du point de vue du système, il n'y a pas de différence fonctionnelle entre un modèle d'intégration normal et un modèle spécifiquement formé pour générer des intégrations Matryoshka.

Les modèles d'intégration de Matryoshka les plus répandus sont les suivants :

Pour un guide complet sur l'utilisation des embeddings Matryoshka avec Milvus, voir le carnet Funnel Search with Matryoshka Embeddings (Recherche en entonnoir avec les embeddings Matryoshka).

Résumé

L'intégration Matryoshka permet aux développeurs de créer des intégrations raccourcies sans sacrifier l'intégrité sémantique, ce qui les rend idéales pour une recherche et un stockage plus efficaces. Bien qu'il soit possible de modifier un modèle existant, des options pré-entraînées, telles que celles d'OpenAI et de Hugging Face, sont également disponibles.

Cependant, une limitation actuelle est la rareté des embeddings Matryoshka open-source, avec quelques uns disponibles sur le hub de Hugging Face. En outre, ces modèles ne sont souvent pas explicitement désignés comme "Matryoshka", ce qui les rend plus difficiles à localiser. Il est à espérer que l'intérêt croissant pour ces modèles se traduira bientôt par une plus grande disponibilité et un étiquetage plus clair.

Prêt à rationaliser vos capacités de recherche ? Commencez dès aujourd'hui à intégrer Milvus + Matryoshka !

Ressources

Try Managed Milvus for Free

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

Get Started

Like the article? Spread the word

Continuer à Lire