La rubrique AIxiv est une rubrique où ce site publie du contenu académique et technique. Au cours des dernières années, la rubrique AIxiv de ce site 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 : liyazhou@jiqizhixin.com ; zhaoyunfeng@jiqizhixin.com
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 phares de 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 à un faible taux de réussite. Par conséquent, un modèle Reranker avancé est nécessaire pour y remédier. le problème, qui constitue 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. 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 dans 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 l'évaluation. 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 que, puisque chaque document et requête doivent être codés conjointement 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 ci-dessus. de modèles de classement. :
Tout d'abord, par rapport à Cross Encoder, ColBERT utilise toujours une stratégie de double encodeur, encodant la requête et le document avec des encodeurs indépendants. Par conséquent, le jeton de requête et le jeton de document ne s'affectent pas lors de l'encodage. séparation Cela permet de traiter l'encodage des documents hors ligne, et seul l'encodage de requête est utilisé lors de l'interrogation, donc la vitesse de traitement est beaucoup plus élevée que Cross Encoder ;
Deuxièmement, par rapport aux encodeurs doubles, ColBERT génère plusieurs vecteurs au lieu de vecteurs uniques ; est dû au fait que la couche de sortie finale de Transformer est obtenue directement, tandis que le double encodeur convertit plusieurs vecteurs en une seule sortie vectorielle via une couche de pooling, perdant ainsi une certaine sémantique.
Lors du calcul de tri, ColBERT a introduit une fonction de similarité de calcul interactif différé et l'a nommée similarité maximale (MaxSim). La méthode de calcul est la suivante : pour chaque vecteur Token de requête, il doit être comparé aux vecteurs correspondant à tous les Tokens du document. La similarité est calculée et le score maximum de chaque jeton de requête est suivi. 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.
En comparaison, Cross Encoder peut être appelé Early Interaction Model, tandis que le travail représenté par ColBERT peut être appelé Late Interaction Model.
为此,我们需要考虑 ColBERT 工程化的一些问题:
1. ColBERT 的 MaxSim 延迟交互相似度函数,计算效率大大高于 Cross Encoder,但相比普通向量搜索,计算开销仍然很大:因为查询和文档之间的相似度,是多向量计算,因此 MaxSim 的开销是普通向量相似度计算的 M * N 倍 (M 为查询的 Token 数, N 为 文档的 Token 数)。针对这些,ColBERT 作者在 2021 年推出了 ColBERT v2 【参考文献 2】,通过 Cross Encoder 和模型蒸馏,改进了生成的 Embedding 质量,并且采用压缩技术,对生成的文档向量进行量化,从而改善 MaxSim 的计算性能。基于 ColBERT v2 包装的项目 RAGatouille 【参考文献 3】成为高质量 RAG 排序的解决方案。然而,ColBERT v2 只是一个算法库,端到端的让它在企业级 RAG 系统使用,仍然是一件困难的事情。
2. 由于 ColBERT 是预训练模型,而训练数据来自于搜索引擎的查询和返回结果,这些文本数据并不大,例如查询 Token 数 32 , 文档 Token 数 128 是典型的长度限制。因此将 ColBERT 用于真实数据时, 超过限制的长度会被截断,这对于长文档检索并不友好。
基于以上问题, 开源 AI 原生数据库 Infinity 在最新版本中提供了 Tensor 数据类型,并原生地提供端到端的 ColBERT 方案。当 Tensor 作为一种数据类型,ColBERT 编码输出的多个向量,就可以直接用一个 Tensor 来存放,因此 Tensor 之间的相似度就可以直接得出 MaxSim 打分。针对 MaxSim 计算量大的问题,Infinity 给出了 2 个方案来优化:其一种是 binary 量化,它可以让原始 Tensor 的空间只需原始尺寸的 1/32 , 但并不改变 MaxSim 计算的相对排序结果。这种方案主要用于 Reranker,因为需要根据前一阶段粗筛的结果取出对应的 Tensor 。另一种是 Tensor Index,ColBERTv2 实际上就是 ColBERT 作者推出的 Tensor Index 实现,Infinity 采用的则是 EMVB【参考文献 4】,它可以看作是 ColBERT v2 的改进,主要通过量化和预过滤技术,并在关键操作上引入 SIMD 指令来加速实现。Tensor Index 只能用来服务 Ranker 而非 Reranker。此外,针对超过 Token 限制的长文本,Infinity 引入了 Tensor Array 类型:
一篇超过 ColBERT 限制的文档,会被切分成多个段落,分别编码生成 Tensor 后,都跟原始文档保存在一行。计算 MaxSim 的时候,查询跟这些段落分别计算,然后取最大值作为整个文档的打分。如下图所示:
因此,采用 Infinity,可以端到端地引入延迟交互模型高质量地服务 RAG。那么,应该是采用 ColBERT 作为 Ranker ,还是 Reranker 呢?下边我们采用 Infinity 来在真实数据集上进行评测。由于 Infinity 的最新版本实现了有史以来最全的混合搜索方案,召回手段包含向量搜索、全文搜索、稀疏向量搜索,上文所述的 Tensor ,以及这些手段的任意组合,并且提供了多种 Reranker 手段,如 RRF,以及 ColBERT Reranker 等,因此我们在评测中包含了各种混合搜索和 Reranker 的组合。
我们采用 MLDR 数据集进行评测。MLDR 是 MTEB 【参考文献 5】用来评测 Embedding 模型质量的 benchmark 集,其中 MLDR 是其中一个数据集,全称为 Multi Long Document Retrieval,一共包含 20 万长文本数据。评测采用 BGE-M3【参考文献 6】作为 Embedding 模型,采用 Jina-ColBERT 【参考文献 7】来生成 Tensor,评测脚本也放到了 Infinity 仓库【参考文献 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 les éléments complets correspondants. index de texte. Index vectoriel, index vectoriel clairsemé. L'évaluation inclut toutes les combinaisons de rappel, y compris le rappel à un seul canal, le rappel à deux canaux et le rappel à trois canaux, comme indiqué ci-dessous :
L'indice d'évaluation utilise 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 vous pouvez le voir sur la figure, toutes les solutions de rappel ont considérablement amélioré les résultats après avoir utilisé ColBERT Reranker. ColBERT, un modèle d'interaction retardée, offre une qualité de classement comparable à celle des classements Reranker de MTEB, mais avec des performances 100 fois supérieures, permettant un reclassement à une échelle beaucoup plus grande. Les résultats affichés dans la figure sont basés sur le Top 100 Reranker, et le Top 1000 est utilisé pour le reclassement ColBERT. La valeur ne change pas de manière significative et les performances chutent de manière significative, ce n'est donc pas recommandé. Traditionnellement, lors de l'utilisation d'un Reranker externe basé sur Cross Encoder, le Top 10 aura un délai de deuxième niveau. Cependant, Infinity implémente le ColBERT Reranker haute performance en interne. Même si le Top 100 ou même le Top 1000 sont réorganisés, l'utilisateur. l'expérience 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 en tant que Ranker plutôt qu'en Reranker. Par conséquent, il est nécessaire de construire un index Tensor pour la colonne de données 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.
Donc, force est de constater que ColBERT est bien plus rentable en tant que Reranker qu'en tant que Ranker. La meilleure solution actuelle de récupération RAG est basée sur une recherche hybride à trois voies (recherche en texte intégral + vecteur + vecteur clairsemé) plus ColBERT Reranker. 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 de rappel multidirectionnelle 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 - recherche hybride à 3 voies + réorganisation basée sur le tenseur. actuellement la méthode de rappel avec les résultats de recherche de la plus haute qualité.
On peut voir que ColBERT et son modèle d'interaction retardée ont une grande valeur d'application dans les scénarios RAG. Ce qui précède est un travail connexe sur la génération de contenu de dialogue textuel. Récemment, des modèles d'interaction retardée ont également été utilisés dans des scénarios multimodaux. Il s'agit de ColPali [Référence 9], qui modifie le flux de travail RAG, comme indiqué ci-dessous :
RAG 복잡한 형식의 문서에 직면했을 때 현재 SOTA는 문서 인식 모델을 사용하여 문서의 레이아웃을 식별한 다음 식별된 차트, 그림 등 부분 구조에 해당 모델을 호출하여 변환합니다. 그러면 해당 텍스트가 다양한 형식으로 RAG 지원 데이터베이스에 저장됩니다. ColPali는 이러한 단계를 제거하고 다중 모드 모델을 직접 사용하여 임베딩 콘텐츠를 생성합니다. 질문할 때 문서의 차트를 기반으로 직접 답변할 수 있습니다.
ColPali 모델의 교육은 ColBERT와 유사하며 쿼리-문서 페이지 쌍 형식을 사용하여 쿼리 간의 의미를 캡처합니다. 다중 모드 데이터 연관을 문서화하려면 PaliGemma [참조 10]를 사용하여 다중 모드 임베딩을 생성하세요. Late Interaction 메커니즘을 사용하지 않지만 PaliGemma를 사용하여 Embedding을 생성하는 BiPali와 비교하면 nDCG@5의 평가 지수 비교는 81.3 대 58.8입니다. 이 차이는 "우수"와 "전혀 작동하지 않음"의 차이입니다.
따라서 ColBERT가 등장한 지 4년이 지났지만 RAG의 Late Interaction 모델 적용은 이제 막 시작되었습니다. 확실히 RAG의 사용 시나리오를 확장하고 다중 모드를 포함한 복잡한 RAG 시나리오를 제공할 것입니다. 품질 의미 기억. Infinity는 이미 엔드투엔드 애플리케이션을 위한 준비가 되어 있습니다. Star Infinity(https://github.com/infiniflow/infinity)에 주목해 주셔서 감사합니다. 최고의 AI 네이티브 데이터베이스가 되기 위해 최선을 다하고 있습니다!
참고자료
1. Colbert: bert를 통한 상황별 후기 상호작용을 통한 효율적이고 효과적인 구절 검색, SIGIR 2020.
2: 경량의 후기 상호작용을 통한 효과적이고 효율적인 검색, arX. iv :2112.01488, 2021. 비트 벡터를 사용한 효율적인 다중 벡터 밀도 검색, ECIR 2024.
5. https://huggingface.co/mteb
6. /BAAI/bge-m3
7. https://huggingface.co /jinaai/jina-colbert-v1-en
8. /tree/main/python/benchmark/mldr_benchmark
9. ColPali: Vision 언어 모델을 사용한 효율적인 문서 검색, arXiv:2407.01449, 2024.
10. google-research/big_vision/tree/main/big_vision/configs/proj/paligemma
위 내용은 차세대 RAG에서는 지연된 상호작용 모델이 표준인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!