nouvelles

Pourquoi le modèle d’interaction retardée est-il la norme pour la prochaine génération de RAG ?

2024-08-05

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



La rubrique AIxiv est une rubrique dans laquelle Machine Heart publie du contenu académique et technique. Au cours des dernières années, la rubrique Heart of the Machine AIxiv a reçu plus de 2 000 rapports, couvrant les meilleurs laboratoires des principales universités et entreprises du monde entier, favorisant efficacement les échanges et la diffusion académiques. Si vous souhaitez partager un excellent travail, n'hésitez pas à contribuer ou à nous contacter pour un rapport. Courriel de soumission : [email protected] ; [email protected] ;

Zhang Yingfeng : Co-fondateur d'Infra, avec de nombreuses années d'expérience dans la recherche, l'IA et le développement d'infrastructures Infra, il travaille actuellement sur la construction de la prochaine génération de produits de base RAG.

Dans le développement du système RAG, un bon modèle Reranker est un lien indispensable et est toujours utilisé dans diverses évaluations. En effet, les requêtes représentées par la recherche vectorielle seront confrontées au problème du faible taux de réussite. Un modèle Reranker avancé est donc nécessaire pour y remédier. ceci, formant ainsi une architecture de tri en deux étapes utilisant la recherche vectorielle comme criblage grossier et le modèle Reranker comme tri fin.

Il existe actuellement deux principaux types d'architectures pour les modèles de classement :

1. Double encodeur. En prenant le modèle BERT comme exemple, il encode les requêtes et les documents séparément, et passe enfin par une couche Pooling afin que la sortie ne contienne qu'un seul vecteur. Dans l'étape de classement de la requête, il vous suffit de calculer la similarité de deux vecteurs, comme le montre la figure ci-dessous. Les encodeurs doubles peuvent être utilisés à la fois pour les étapes de classement et de reclassement, et la recherche vectorielle est en fait ce modèle de classement. Étant donné que le double encodeur code la requête et le document séparément, il ne peut pas capturer la relation interactive complexe entre la requête et les jetons du document, ce qui entraînera cependant beaucoup de pertes sémantiques, puisque seule la recherche vectorielle est nécessaire pour effectuer le tri et la notation. calcul, l'efficacité d'exécution est améliorée de manière très élevée.



2. Encodeur croisé. Cross-Encoder utilise un modèle d'encodeur unique pour encoder simultanément les requêtes et les documents. Il peut capturer l'interaction complexe entre les requêtes et les documents, afin de fournir des résultats de classement de recherche plus précis. Cross-Encoder ne génère pas le vecteur correspondant au jeton de la requête et du document, mais ajoute un classificateur pour générer directement le score de similarité de la requête et du document. Son inconvénient est qu'en raison de la nécessité d'encoder conjointement chaque document et chaque requête au moment de la requête, ce qui rend le tri très lent, Cross-Encoder ne peut être utilisé que pour réorganiser les résultats finaux. Par exemple, la réorganisation du Top 10 des résultats de sélection préliminaires prend encore quelques secondes.



Depuis cette année, un autre type de travail représenté par ColBERT [Référence 1] a attiré une large attention dans la communauté de développement RAG. Comme le montre la figure ci-dessous, il présente certaines caractéristiques qui sont significativement différentes des deux types de modèles de classement ci-dessus :

La première est que par rapport à Cross Encoder, ColBERT utilise toujours une stratégie de double encodeur, utilisant des encodeurs indépendants pour encoder les requêtes et les documents. Par conséquent, le jeton de requête et le jeton de document ne s'affectent pas lors de l'encodage. traité hors ligne, et seule la requête est codée lors de l'interrogation, donc la vitesse de traitement est beaucoup plus élevée que Cross Encoder ;

La seconde est que, par rapport au double encodeur, ColBERT génère plusieurs vecteurs au lieu d'un seul vecteur, qui est obtenu directement à partir de la dernière couche de sortie du transformateur, tandis que le double encodeur convertit plusieurs vecteurs en un seul vecteur via une sortie de couche de pooling. perdant ainsi une certaine sémantique.

Dans le calcul de tri, ColBERT introduit une fonction de similarité de calcul interactif différé et la nomme similarité maximale (MaxSim). La méthode de calcul est la suivante : pour chaque vecteur Token de requête, la similarité est calculée avec les vecteurs correspondant à tous les Tokens du document. suivez le score maximum pour chaque jeton de requête. Le score total de la requête et du document est la somme de ces scores cosinus maximaux. Par exemple, pour une requête avec 32 vecteurs de jetons (la longueur maximale de la requête est de 32) et un document avec 128 jetons, 32*128 opérations de similarité doivent être effectuées, comme le montre la figure ci-dessous.

Donc, en comparaison, Cross Encoder peut être appeléModèle d'interaction précoce, et le travail représenté par ColBERT peut être appeléModèle d'interaction tardive.



La figure suivante compare les modèles de tri ci-dessus en termes de performances et de qualité de tri. Étant donné que le modèle d'interaction retardée satisfait à la capacité de capturer les interactions complexes entre les requêtes et les documents pendant le processus de tri, et évite également la surcharge liée à l'encodage des jetons de document, il peut non seulement garantir de bons effets de tri, mais également obtenir des performances de tri plus rapides—— Sous à la même échelle de données, l'efficacité de ColBERT peut être plus de 100 fois supérieure à celle de Cross Encoder. Par conséquent, le modèle d’interaction retardée est un modèle de tri très prometteur. Une idée naturelle est la suivante :Le modèle d'interaction retardée peut-il être directement utilisé dans RAG pour remplacer l'architecture de tri en deux étapes recherche vectorielle + tri fin ?



À cette fin, nous devons considérer certains problèmes liés à l’ingénierie ColBERT :

1. La fonction de similarité interactive retardée MaxSim de ColBERT a une efficacité de calcul bien supérieure à celle de Cross Encoder, mais par rapport à la recherche vectorielle ordinaire, la surcharge de calcul est toujours très élevée : comme la similarité entre la requête et le document est un calcul multi-vecteur, la fonction de similarité interactive retardée de MaxSim est un calcul multi-vecteur. la surcharge est M * N fois celle du calcul de similarité vectorielle ordinaire (M est le nombre de jetons dans la requête, N est le nombre de jetons dans le document). En réponse à cela, l'auteur de ColBERT a lancé ColBERT v2 en 2021 [Référence 2], qui a amélioré la qualité de l'intégration générée via Cross Encoder et la distillation de modèle, et a utilisé la technologie de compression pour quantifier le vecteur de document généré, améliorant ainsi le calcul de Performances MaxSim. Le projet RAGatouille [Référence 3] basé sur les emballages ColBERT v2 devient une solution de tri RAG de haute qualité. Cependant, ColBERT v2 n'est qu'une bibliothèque d'algorithmes et il est encore difficile de l'utiliser de bout en bout dans les systèmes RAG d'entreprise.

2. Étant donné que ColBERT est un modèle pré-entraîné et que les données d'entraînement proviennent des requêtes des moteurs de recherche et des résultats renvoyés, ces données textuelles ne sont pas volumineuses. Par exemple, le nombre de jetons de requête est de 32 et le nombre de jetons de document est de 128. , qui sont des limites de longueur typiques. Par conséquent, lorsque ColBERT est utilisé pour des données réelles, la longueur dépassant la limite sera tronquée, ce qui n'est pas adapté à la récupération de documents longs.

Sur la base des problèmes ci-dessus, la base de données native IA open source Infinity fournit le type de données Tensor dans la dernière version et fournit nativement la solution ColBERT de bout en bout. Lorsque Tensor est utilisé comme type de données, plusieurs vecteurs générés par l'encodage ColBERT peuvent être directement stockés dans un Tensor, de sorte que la similarité entre Tensors peut directement dériver le score MaxSim. En réponse au problème de la grande quantité de calculs de MaxSim, Infinity a proposé deux solutions à optimiser : l'une est la quantification binaire, qui peut rendre l'espace du Tensor d'origine à seulement 1/32 de la taille d'origine, mais ne modifie pas l'ordre relatif. du résultat des calculs MaxSim. Cette solution est principalement utilisée pour Reranker, car il est nécessaire d'extraire le Tensor correspondant en fonction des résultats de l'étape précédente de criblage grossier. L'autre est Tensor Index. ColBERTv2 est en fait l'implémentation de Tensor Index lancée par l'auteur de ColBERT Infinity qui utilise EMVB [Référence 4], qui peut être considérée comme une amélioration de ColBERT v2, principalement grâce à la technologie de quantification et de pré-filtrage, et SIMD. des instructions sont introduites sur les opérations clés pour accélérer la mise en œuvre. Tensor Index ne peut être utilisé que pour servir Ranker plutôt que Reranker. De plus, pour les textes longs dépassant la limite de jetons, Infinity introduit le type Tensor Array :



Un document qui dépasse la limite de ColBERT sera divisé en plusieurs paragraphes après encodage et génération de Tensors respectivement, ils seront enregistrés sur la même ligne que le document original. Lors du calcul de MaxSim, la requête et ces paragraphes sont calculés séparément, puis la valeur maximale est considérée comme le score de l'ensemble du document. Comme indiqué ci-dessous:



Par conséquent, en utilisant Infinity, un modèle d’interaction retardée peut être introduit de bout en bout pour servir RAG avec une haute qualité. Alors, ColBERT doit-il être utilisé comme Ranker ou Reranker ? Ci-dessous, nous utilisons Infinity pour effectuer une évaluation sur des ensembles de données réels. Étant donné que la dernière version d'Infinity implémente la solution de recherche hybride la plus complète de l'histoire, les méthodes de rappel incluent la recherche vectorielle, la recherche en texte intégral, la recherche vectorielle clairsemée, le Tensor mentionné ci-dessus et toute combinaison de ces méthodes, et fournit une variété de méthodes Reranker. , tels que RRF et ColBERT Reranker, nous incluons donc diverses combinaisons de recherche hybride et de Reranker dans la revue.

Nous utilisons l'ensemble de données MLDR pour l'évaluation. MLDR est un ensemble de référence utilisé par MTEB [Référence 5] pour évaluer la qualité des modèles d'intégration. MLDR est l'un des ensembles de données, appelé Multi Long Document Retrieval et contient un total de 200 000 données de texte long. L'évaluation utilise BGE-M3 [Référence 6] comme modèle d'intégration, Jina-ColBERT [Référence 7] pour générer Tensor, et le script d'évaluation est également placé dans l'entrepôt Infinity [Référence 8].

Évaluation 1 : ColBERT est-il efficace en tant que Reranker ? Utilisez BGE-M3 pour générer des vecteurs denses et des vecteurs clairsemés à partir de 200 000 données MLDR et insérez-les dans la base de données Infinity. La base de données contient 4 colonnes, qui stockent respectivement le texte original, les vecteurs, les vecteurs clairsemés et les tenseurs, et construisent le texte intégral correspondant. index et vecteurs respectivement. Index, index vectoriel clairsemé. L'évaluation inclut toutes les combinaisons de rappel, y compris le rappel à sens unique, le rappel à double sens et le rappel à trois sens, comme suit :



L'indice d'évaluation adopte nDCG@10. Autres paramètres : lors de l'utilisation de RRF Reranker, le Top N = 1 000 renvoyé par filtrage grossier, le nombre total de requêtes est de 800 et la longueur moyenne des requêtes est d'environ 10 jetons.



Comme le montre la figure, toutes les solutions de rappel ont considérablement amélioré les résultats après l'utilisation de ColBERT Reranker. En tant que modèle d'interaction retardée, ColBERT peut fournir une qualité de classement comparable à celle des classements Reranker du MTEB, mais les performances sont 100 fois supérieures, de sorte que le reclassement peut être effectué à plus grande échelle. Les résultats affichés dans la figure concernent le Top 100 Reranker, et le Top 1000 est utilisé pour la réorganisation ColBERT. Les valeurs ne changent pas de manière significative et les performances diminuent de manière significative, ce n'est donc pas recommandé. Traditionnellement, lors de l'utilisation d'un Reranker externe basé sur Cross Encoder, il y aura un retard de deuxième niveau dans le Top 10. Cependant, Infinity implémente le Reranker ColBERT haute performance en interne, même si le Top 100 ou même le Top 1000 sont réorganisés. l'expérience utilisateur ne sera pas affectée. Cependant, la portée du rappel est considérablement augmentée, de sorte que l'effet de classement final peut être considérablement amélioré. De plus, ce calcul ColBERT Reranker ne doit être exécuté que sur une architecture CPU pure, ce qui réduit également considérablement le coût de déploiement.

Évaluation 2 : La comparaison est basée sur ColBERT comme Ranker plutôt que Reranker. Par conséquent, il est nécessaire de construire un index Tensor pour les données de la colonne Tensor. Dans le même temps, afin d'évaluer la perte de précision introduite par Tensor Index, une recherche par force brute a également été effectuée.



On peut voir que par rapport à Reranker, même en utilisant la recherche par force brute sans perte de précision, il n'y a pas d'amélioration significative et la qualité du tri basée sur l'indice Tensor est encore inférieure à celle de l'utilisation de Reranker. Cependant, le temps de requête en tant que Ranker est beaucoup plus lent : l'ensemble de données MLDR contient 200 000 données de documents, soit environ 2 Go. Après avoir utilisé Jina-ColBERT pour les convertir en données Tensor, il atteint 320 Go. Cela est dû au Tensor. Le type de données est un document. Le vecteur correspondant à chaque jeton du document doit être enregistré. La dimension du modèle ColBERT est de 128 dimensions, donc le volume de données par défaut augmentera de 2 ordres de grandeur même si un index tensoriel est construit. il faudra en moyenne 7 secondes pour interroger autant de données. Renvoie une requête mais n'obtient pas de meilleurs résultats.

Il est donc évident que ColBERT est bien plus rentable en tant que Reranker qu’en tant que Ranker. La meilleure solution actuelle de récupération RAG consiste à ajouter ColBERT Reranker sur la base d'une recherche hybride à 3 voies (recherche en texte intégral + vecteur + vecteur clairsemé). Certains partenaires peuvent demander que pour utiliser ColBERT Reranker, il soit nécessaire d'ajouter une colonne Tensor distincte, et la colonne s'agrandira de 2 ordres de grandeur par rapport à l'ensemble de données d'origine. Tout d'abord : Infinity fournit une méthode de quantification binaire pour Tensor, en tant que Reranker, cela n'affecte pas beaucoup les résultats de tri, mais cela ne peut rendre les données finales qu'à 1/32 de la taille d'origine du Tensor. Deuxièmement, malgré cela, certains penseront que ces frais généraux sont trop élevés. Cependant, du point de vue de l'utilisateur, il est toujours très intéressant d'utiliser plus de stockage en échange d'une meilleure qualité de tri et de coûts moins élevés (le processus de tri ne nécessite pas de GPU). Enfin, je pense qu'un modèle d'interaction tardive avec des performances légèrement réduites mais une surcharge de stockage considérablement réduite sera bientôt lancé. En tant qu'infrastructure Data Infra, elle est transparente face à ces changements et c'est un choix judicieux de confier ces compromis aux utilisateurs.

Ce qui précède est basé sur l'évaluation du rappel multicanal d'Infinity sur l'ensemble de données MLDR. Les résultats de l'évaluation sur d'autres ensembles de données peuvent être différents, mais la conclusion globale ne changera pas - la recherche hybride à 3 voies + la réorganisation basée sur le tenseur sont le rappel actuel. méthode avec des résultats de recherche de la plus haute qualité.

Il ressort de cela que ColBERT et son modèle d'interaction retardée ont une grande valeur d'application dans les scénarios RAG. Récemment, les modèles d'interaction retardée ont également obtenu la reconnaissance SOTA dans les scénarios multimodaux. Il s'agit de ColPali [Référence 9], qui modifie le flux de travail de RAG, comme le montre la figure suivante :



Lorsque RAG est confronté à des documents au format complexe, le SOTA actuel utilise un modèle de reconnaissance de document pour identifier la mise en page du document, puis appelle le modèle correspondant pour les structures partielles identifiées, telles que des graphiques, des images, etc., pour les convertir en Le correspondant le texte est ensuite enregistré dans la base de données de support RAG dans différents formats. ColPali élimine ces étapes et utilise directement des modèles multimodaux pour générer du contenu Embedding. Lorsque vous posez des questions, vous pouvez répondre directement en vous basant sur les graphiques du document :



La formation du modèle ColPali est similaire à ColBERT, utilisant également la forme de paires de pages requête-document pour capturer l'association sémantique entre les données multimodales de la requête et du document, mais en utilisant PaliGemma [Référence 10] pour générer une intégration multimodale. Par rapport à BiPali, qui n'utilise pas le mécanisme d'interaction tardive mais utilise également PaliGemma pour générer l'intégration, la comparaison de l'indice d'évaluation de nDCG@5 est de 81,3 contre 58,8. Cet écart est la différence entre « excellent » et « ne peut pas fonctionner du tout ».



Par conséquent, même si ColBERT est apparu depuis 4 ans, l'application du modèle d'interaction tardive dans RAG ne fait que commencer. Il élargira certainement les scénarios d'utilisation de RAG et fournira un rappel sémantique de haute qualité dans les scènes RAG complexes, y compris la multimodalité. Infinity est déjà prêt pour son application de bout en bout. Bienvenue pour suivre Star Infinity, https://github.com/infiniflow/infinity, et s'engage à devenir la meilleure base de données native d'IA !

les références

1. Colbert : Recherche de passage efficace et efficiente via une interaction tardive contextualisée sur bert, SIGIR 2020.

2. Colbertv2 : Récupération efficace et efficiente via une interaction tardive légère, arXiv:2112.01488, 2021.

3. RAGatouille https://github.com/bclavie/RAGatouille

4. Récupération dense multi-vecteurs efficace avec vecteurs de bits, ECIR 2024.

5. https://huggingface.co/mteb

6. https://huggingface.co/BAAI/bge-m3

7. https://huggingface.co/jinaai/jina-colbert-v1-en

8. https://github.com/infiniflow/infinity/tree/main/python/benchmark/mldr_benchmark

9. ColPali : recherche efficace de documents avec des modèles de langage de vision, arXiv : 2407.01449, 2024.

10. https://github.com/google-research/big_vision/tree/main/big_vision/configs/proj/paligemma