Entraîner des embeddings de texte avec Jina AI
Récemment, nous avons entendu Bo Wang au Berlin Unstructured Data Meetup parler de l’entraînement d’embeddings de texte généraux à l’état de l’art. Les embeddings de texte alimentent déjà la recherche vectorielle moderne et les systèmes de génération augmentée par récupération (RAG). Wang nous aide à comprendre les subtilités du développement d’embeddings de texte à l’état de l’art, avec un accent principal sur les embeddings Jina.
Regardez le replay de la présentation de Bo Wang sur Youtube
Pourquoi devriez-vous vous intéresser aux embeddings de texte Jina ?
La sortie de Jina-Embeddings-V2 a fait sensation dans la communauté de l’IA, recueillant plus de 3 millions de téléchargements sur Hugging Face. Ce modèle a été intégré à de nombreux frameworks d’IA tels que LangChain et LlamaIndex, ainsi qu’à des bases de données vectorielles comme Milvus et Zilliz Cloud. L’engouement autour des embeddings Jina a même atteint le sommet de Hacker News, suscitant de vastes débats et discussions sur les encodeurs à long contexte. Les embeddings Jina rivalisent de près avec les embeddings OpenAI, parmi les meilleurs du secteur.
Dans cet esprit, explorons la présentation de Wang sur les subtilités du développement des embeddings de texte Jina.
Évolution du fine-tuning à l’entraînement de modèles d’embedding à grande échelle
Jina AI n’a pas commencé par entraîner son propre modèle d’embedding. Au lieu de cela, elle a commencé par affiner des modèles déjà existants tels que BERT. Les modèles affinés ont obtenu de meilleures performances que les modèles existants. Jetons un œil aux statistiques. La valeur delta à la fin représente les performances du modèle affiné par rapport au modèle pré-entraîné d’origine.
Comparaison des performances entre modèles pré-entraînés et affinés
Comme vous pouvez le voir, tous les modèles affinés se sont nettement améliorés, ce qui implique que l’algorithme fonctionnait bien. Mais le produit a-t-il été bien accueilli par l’industrie technologique ? La réponse simple est non.
C’était à une époque où l’industrie, même celle de la recherche, évoluait lentement vers les vecteurs et venait tout juste de commencer à utiliser des modèles d’embedding pré-entraînés. Cependant, elle n’était pas prête pour le fine-tuning des modèles d’embedding. Les modèles d’embedding n’étaient pas non plus largement adoptés dans d’autres secteurs, car il n’existait ni LLM ni systèmes RAG.
Ainsi, bien que le fine-tuning ait permis à Jina AI d’obtenir des améliorations progressives, l’entreprise a vite compris que le secteur n’était pas prêt pour les techniques de fine-tuning. Cette prise de conscience l’a incitée à se lancer dans une entreprise ambitieuse : entraîner son modèle d’embedding à partir de zéro. Elle pensait que développer une solution maison lui permettrait de repousser les limites du possible.
Création de Jina-Embeddings-V1
La création de Jina-Embeddings-V1 a impliqué de suivre une approche complète. Wang nous présente l’approche utilisée :
Étudier les modèles à l’état de l’art : La première étape consiste à étudier les modèles d’embedding de pointe, notamment minilm, mpnet, sentence-t5, GTR, ainsi que les instructeurs de géants technologiques comme Microsoft et Google. Cette approche aide à comprendre les forces et les limites des solutions existantes et à identifier les domaines nécessitant des améliorations.
Collecter un jeu de données d’entraînement massif : L’étape suivante consiste à constituer un énorme jeu de données. Jina AI a utilisé 2 milliards d’enregistrements de données d’entraînement en anglais. Cet immense corpus est essentiel pour entraîner un modèle d’embedding polyvalent et de haute qualité, capable de gérer un large éventail de tâches et de domaines.
Nettoyage et curation approfondis des données : Pour garantir la qualité des données d’entraînement, des processus approfondis de nettoyage et de curation des données sont effectués, notamment la déduplication, la détection de la langue et le filtrage de la qualité. Après ce processus rigoureux, Jina AI disposait de 400 millions d’enregistrements de données de pré-entraînement de haute qualité et de 5 millions de lignes de données de fine-tuning annotées par des humains.
Refactorisation pour l’entraînement distribué : Jina AI a refactorisé sa base de code Finetuner afin de permettre un entraînement efficace de modèles à grande échelle pour prendre en charge l’entraînement distribué sur plusieurs nœuds et GPU. Cette infrastructure évolutive est cruciale pour entraîner des modèles sur un jeu de données aussi massif.
Le modèle a été un succès, mais ne s’est pas démarqué de tous les autres modèles du secteur, car il avait une longueur de contexte limitée. Pour résoudre cette limitation, Jina AI a entraîné Jina-Embeddings-V2.
Présentation de Jina-Embeddings-V2 : entraînement court, inférence longue
Pour surmonter la barrière des 512 tokens et atteindre son objectif de gestion de séquences plus longues, Jina AI présente Jina-Embeddings-V2, un modèle d’embedding capable de gérer des séquences allant jusqu’à 8 192 tokens pendant l’inférence tout en s’entraînant sur des séquences plus courtes. Cela est rendu possible grâce à plusieurs modifications clés. Wang parcourt rapidement ces modifications. Examinons-les en profondeur :
Suppression de l’embedding positionnel
Les modèles transformers traditionnels, y compris BERT, s’appuient sur des embeddings positionnels pour encoder l’ordre des tokens au sein d’une séquence. Ces embeddings positionnels sont des vecteurs fixes représentant la position de chaque token par rapport aux autres. Cependant, ils présentent des limitations :
- Longueur du contexte : Les embeddings positionnels limitent la fenêtre de contexte à une taille fixe (par exemple, 512 tokens dans BERT). Les documents ou séquences plus longs dépassent cette limite, ce qui entraîne une perte d’information. Observez comment la perplexité monte en flèche pour les modèles BERT lorsque vous dépassez 512 tokens, ce qui signifie qu’il y a une perte d’information. La perplexité mesure la capacité du modèle à comprendre la sémantique du texte. Plus la perplexité est faible, mieux c’est.
Longueur de séquence d’inférence vs perplexité sur BERT
- Contraintes positionnelles : Les tokens situés à des positions éloignées reçoivent des embeddings similaires, ignorant leur contexte.
Jina-Embeddings-V2 supprime entièrement les embeddings positionnels, ce qui lui permet de gérer des séquences plus longues sans contraintes positionnelles. Le modèle capture le contexte à travers de longs documents, ce qui le rend adapté à la synthèse de documents, à l’analyse juridique et à la compréhension de contenus longs.
Attention avec biais linéaires (ALiBi)
ALiBi est une technique développée pour les grands modèles de langage. Au lieu de s’appuyer sur des embeddings positionnels fixes, ALiBi capture les informations d’ordre des mots de manière dynamique lors des calculs d’attention. Il s’adapte ensuite au contexte de chaque token, ce qui lui permet de prendre en compte à la fois les tokens précédents et suivants sans contraintes positionnelles.
Effet sur les embeddings : ALiBi améliore la compréhension du contexte, même dans les textes longs. Il permet à Jina-Embeddings-V2 de capturer de riches relations sémantiques entre les tokens, quelle que soit leur position.
Adaptation d’ALiBi aux transformers bidirectionnels
La compréhension bidirectionnelle est cruciale pour des tâches comme la réponse aux questions, la synthèse et la recherche sémantique. Voici comment Jina-Embeddings-V2 y parvient :
Concept : ALiBi a été conçu à l’origine pour des modèles uniquement décodeurs. Jina AI l’étend à des architectures bidirectionnelles comme BERT.
Contexte bidirectionnel : Jina-Embeddings-V2 prend en compte à la fois le contexte gauche et droit, capturant les dépendances sur l’ensemble de la séquence.
Effet sur les embeddings : Le modèle excelle dans les tâches où la compréhension du contexte dans les deux directions est importante. Par exemple, la recherche sémantique bénéficie d’embeddings bidirectionnels, car elle nécessite d’analyser simultanément les requêtes des utilisateurs et le contenu des documents.
Réentraîner BERT à partir de zéro
Jina AI a réentraîné BERT avec des techniques avancées, donnant naissance à JinaBERT, qui sert de colonne vertébrale à Jina-Embeddings-V2 :
Concept : Jina AI applique diverses astuces, notamment le masquage de mots entiers, la recette RoBERTa, les activations GeGLU et un masquage agressif.
Prise en charge d’ALiBi : JinaBERT est entraîné avec ALiBi, ce qui garantit une modélisation dynamique du contexte.
Effet sur les embeddings : Jina-Embeddings-V2 bénéficie d’une colonne vertébrale robuste capable de gérer diverses tâches. Il résume de longs articles, extrait les informations essentielles et maintient l’intégrité du contexte.
La perplexité conservée de JinaBERT reste faible même lorsque la limite de 512 tokens est dépassée. Grâce à la suppression des embeddings positionnels et à l’adaptation d’AliBi. Jetez un œil au nouveau graphique comparant BERT et JinaBERT :
Longueur de séquence d’inférence vs perplexité sur JinaBERT et BERT
Relier les langues : embeddings bilingues
Reconnaissant les limites des modèles d’embeddings multilingues existants, qui s’appuient souvent fortement sur des données d’entraînement en anglais, Jina AI a commencé à développer des embeddings bilingues. Leur objectif est de créer des modèles capables de gérer plusieurs langues et les relations interlinguistiques entre elles.
L’approche de Jina AI en matière d’embeddings bilingues s’écarte de la norme. La plupart des modèles multilingues, tels que Multilingual BERT et Multilingual E5, souffrent d’un déséquilibre important dans la distribution de leurs données d’entraînement. Par exemple, le modèle populaire Multilingual E5 contient 91,5 % de ses données d’entraînement en anglais, avec seulement 4,2 % en chinois et 4,3 % dans les autres langues combinées.
Multilingual E5 vs Jina Embedding v2 sur des données multilingues préentraînées
En revanche, le modèle Jina-Embeddings-V2-Based-German de Jina AI présente une distribution équilibrée de ses données d’entraînement, avec 50 % d’anglais et 50 % d’allemand. Ces données interlinguistiques sont spécifiquement conçues pour améliorer la compréhension par le modèle des similitudes et des relations entre les deux langues.
Bien qu’il soit plus petit que les modèles multilingues, Jina-Embeddings-V2-Based-German surpasse systématiquement ses concurrents, obtenant de meilleurs scores sur les tâches de recherche allemand-allemand, allemand-anglais et anglais-allemand.
Comparaison des performances de recherche entre différents modèles d’embeddings
Les résultats montrent la supériorité des embeddings bilingues de Jina AI par rapport aux modèles multilingues populaires comme Multilingual E5 et Cohere Embed V3, à la fois dans les tâches de recherche monolingues et interlinguistiques.
Ce qu’il faut prendre en compte lors de la création d’applications RAG avec Jina-Embeddings-V2
Lors du développement d’applications de génération augmentée par récupération (RAG) à l’aide de Jina-Embeddings-V2, il est essentiel de comprendre comment le modèle gère les documents de longueurs variables et le positionnement des informations pertinentes au sein de ces documents. Bo Wang a souligné plusieurs considérations clés :
Documents courts : Si vos documents comptent toujours moins de 512 tokens, Jina-Embeddings-V2 offre des performances comparables à celles d’autres encodeurs moyens comme E5 ou BGE.
Documents longs (informations au début) : Si vos documents comptent plus de 512 tokens, mais que les informations pertinentes se trouvent au début, Jina-Embeddings-V2 pourrait être moins performant.
Documents longs (informations plus tardives) : Si vos documents comptent plus de 512 tokens et que les informations pertinentes se trouvent au milieu ou à la fin, Jina-Embeddings-V2 améliore considérablement les performances de recherche.
Intégration de Jina AI avec la base de données vectorielle Milvus
Les bases de données vectorielles comme les modèles d’embeddings sont indispensables pour créer des systèmes efficaces de recherche d’informations et des applications RAG. Ces composants sont souvent intégrés afin d’effectuer des tâches de recherche et de récupération par similarité vectorielle.
Milvus est une base de données vectorielle open source conçue pour stocker et récupérer efficacement des embeddings vectoriels à l’échelle du milliard. Récemment, les embeddings Jina ont été intégrés à la bibliothèque de modèles PyMilvus, simplifiant le développement d’applications RAG ou autres applications GenAI en éliminant le besoin de composants d’embedding supplémentaires.
L’introduction récente de Milvus Lite, une version légère de Milvus, a encore simplifié ce processus. Milvus Lite partage la même API que la version complète de Milvus déployée sur Docker ou Kubernetes, mais peut être facilement installé via une commande pip d’une seule ligne, sans configurer de serveur. Il est idéal pour le prototypage et peut évoluer de manière fluide vers différents déploiements Milvus à mesure que vos besoins augmentent.
Pour en savoir plus sur cette intégration, consultez les ressources suivantes :
Documentation Milvus : Intégrer Milvus avec Jina Embeddings
Blog : Implementing a Chat History RAG with Jina AI and Milvus Lite
Perspectives : Jina-Embeddings-V3
L’équipe de Jina AI travaille déjà sur Jina-Embeddings-V3, qui promet d’apporter encore plus d’avancées :
Vitesse et efficacité : Jina-Embeddings-V3 sera plus rapide et plus efficace en mémoire, en particulier pour les séquences plus longues.
Prise en charge multilingue : La nouvelle version offrira une distribution linguistique optimisée et une meilleure gestion des données multilingues.
Résolution de problèmes concrets : Jina-Embeddings-V3 traitera des problèmes concrets grâce à une analyse des défaillances par compression sur V2 et d’autres modèles d’embedding.
Améliorations spécifiques aux tâches : Elle inclura des instructions de tâches et des têtes de tâches soigneusement conçues, ainsi qu’un routage intelligent pour mieux gérer différentes tâches.
Conscience des chunks et des schémas : Le modèle sera conscient des chunks et des schémas, améliorant sa compréhension des données semi-structurées et des embeddings hiérarchiques.
Résumé
Les modèles d’embedding Jina offrent de hautes performances, avec une fenêtre d’entrée de 8192 tokens qui excelle dans la représentation complète des données. Grâce à la prise en charge multilingue et à une intégration fluide avec des plateformes de premier plan comme OpenAI, ces embeddings sont idéaux pour les applications interlingues.
Les modèles d’embedding et les bases de données vectorielles sont essentiels pour une recherche de similarité et une récupération d’informations efficaces. En intégrant les modèles d’embedding Jina à PyMilvus, le SDK Python pour Milvus, le développement d’applications RAG et de diverses applications GenAI devient plus efficace et plus simple.
Dans une récente présentation de Bo Wang, il a abordé la création d’embeddings de texte Jina pour la recherche vectorielle moderne et les systèmes RAG. Il a également partagé des méthodologies pour entraîner des modèles d’embedding qui encodent efficacement de vastes informations, ainsi que des conseils pour choisir les modèles d’embedding les plus appropriés à divers besoins métier.
Pour plus de détails, regardez la rediffusion de la présentation de Bo Wang sur Youtube.
Continuer à lire

The Real Bottlenecks in Autonomous Driving — And How AI Infrastructure Can Solve Them
Autonomous driving faces a data bottleneck. Learn how AI-native vector databases like Zilliz solve scale, cost, and insight challenges across AV pipelines.

Expanding Our Global Reach: Zilliz Cloud Launches in Azure Central India
Zilliz Cloud expands to Azure Central India. This new region helps customers meet compliance, reduce latency, and optimize cloud costs when building AI applications.

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.


