Le premier ColBERT multilingue au monde : Jina ColBERT V2 et sa technologie de "poupées russes".

Nouvelles de l'IAMise à jour il y a 11 mois Cercle de partage de l'IA
2.9K 00

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术

existent RAG le modèle multivectoriel ColBERT est utilisé pour modéliser le document en fournissant un seul vecteur pour chacun des éléments du document. jeton La génération de vecteurs indépendants permet d'améliorer la précision de la recherche. Cependant, elle entraîne également une augmentation considérable des besoins en stockage et ne prend en charge que l'anglais, ce qui limite son champ d'application.

Pour résoudre ces problèmes, nous avons amélioré l'architecture et le processus de formation de ColBERT, et nous avons surtout réalisé des percées dans le traitement multilingue. La dernière version de Jina-ColBERT-v2 prend en charge 89 langues et introduit une option de dimension de sortie personnalisée, qui réduit considérablement les besoins de stockage et améliore l'efficacité et la précision de la recherche multilingue.

Principaux points forts de la nouvelle version

  1. l'amélioration des performancesLes performances de recherche en anglais ont été améliorées de 6,51 TP3T par rapport à la version originale de ColBERT-v2, et de 5,41 TP3T par rapport à son prédécesseur, jina-colbert-v1-fr.
  2. Prise en charge multilingueLa nouvelle version prend en charge jusqu'à 89 langues, dont l'anglais, l'arabe, le chinois, le japonais, le russe et d'autres langues, ainsi que des langages de programmation.
  3. Les dimensions de la sortie peuvent être personnaliséesLa nouvelle version utilise l'apprentissage par représentation de Matryoshka (MRL) et propose des vecteurs de sortie à 128, 96 et 64 dimensions, ce qui permet à l'utilisateur de choisir la dimensionnalité appropriée en fonction de ses besoins.

Le rapport technique complet est disponible sur arXiv : https://arxiv.org/abs/2408.16672

jina-colbert-v2 la performance en un coup d'œil

En termes de performances de recherche, jina-colbert-v2 présente un avantage significatif par rapport à la version précédente, à la fois en termes de tâches de recherche en anglais et de prise en charge multilingue. Les avantages de ce modèle multi-vecteur peuvent également être pleinement exploités avec la longueur d'entrée de 8192 jetons héritée de Jina AI. Vous trouverez ci-dessous une comparaison avec d'autres versions, où les principales améliorations sont clairement visibles :

jina-colbert-v2jina-colbert-v1-enOriginal ColBERTv2
Moyenne des tâches BEIR en anglais0.5210.4940.489
Prise en charge multilingue89 languesAnglais uniquementAnglais uniquement
dimension de la sortie128, 96 ou 64Fixe 128Fixe 128
Longueur maximale de la requête32 jetons32 jetons32 jetons
Longueur maximale du document8192 jetons8192 jetons512 jetons
Nombre de paramètres560 millions d'euros137 millions d'euros110 millions d'euros
Taille du modèle1.1GB550MB438MB

1. l'amélioration des performances

Dans la tâche de recherche en anglais, jina-colbert-v2 surpasse la génération précédente de jina-colbert-v1-en et l'original ColBERT v2, approchant le niveau du modèle AnswerAI-ColBERT-small, qui a été conçu spécifiquement pour l'anglais.

Nom du modèleScore moyen au test de référence BEIR en anglaisPrise en charge multilingue
jina-colbert-v20.521Prise en charge multilingue
jina-colbert-v1-en0.494Anglais uniquement
ColBERT v2.00.489Anglais uniquement
RéponseAI-ColBERT-small0.549Anglais uniquement
全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术Performance de Jina ColBERT v2 sur l'ensemble de données BEIR en anglais

2. support multilingue

Jina-ColBERT-v2 est le seul modèle ColBERT qui prenne en charge plusieurs langues.Le résultat est un vecteur d'intégration très compact, qui est nettement meilleur que le vecteur traditionnel. BM25 Méthodes de recherche (dans toutes les langues évaluées par MIRACL).

jina-colbert-v2 Le corpus de formation couvre 89 langues et comprend 450 millions de paires de phrases, de paires question-réponse et de paires requête-document sémantiquement liées et faiblement supervisées. La moitié d'entre elles sont en anglais, et la partie restante comprend 29 langues non anglaises différentes, en plus de 3,0% de données sur les langages de programmation et 4,3% de données inter-langues.

Nous nous sommes également spécialisés dans Allemand, arabe, chinois, espagnol, français, japonais, russe et autres langues courantes répondre en chantant langage de programmation Une formation supplémentaire a été dispensée, qui a permis au modèle d'obtenir de bons résultats dans le traitement des tâches multilingues grâce à l'introduction d'un corpus de textes bilingues alignés.

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术Répartition des langues dans l'ensemble de données de pré-entraînement

La figure suivante montre les résultats de la comparaison des performances entre Jina-ColBERT-v2 et BM25 sur 16 langues dans le cadre du benchmark MIRACL.

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术

3. apprentissage de la représentation des poupées russes

Apprentissage par représentation de Matryoshka (MRL) est une méthode d'apprentissage souple et efficace qui minimise la perte de précision tout en prenant en charge différentes dimensions du vecteur de sortie. Elle est mise en œuvre en introduisant plusieurs couches linéaires dans la couche cachée du modèle, chacune traitant une dimension différente. Pour plus de détails sur cette technique, voir : https://arxiv.org/abs/2205.13147

Par défaut, leJina-ColBERT-v2 génère un Embedding à 128 dimensions, mais vous pouvez choisir des vecteurs plus courts, tels que 96 ou 64 dimensions.. Même si le vecteur est raccourci de 25% ou 50%, son impact sur les performances est presque négligeable (la baisse est inférieure à 1,5%). En d'autres termes, quelle que soit la longueur des vecteurs, le modèle reste efficace et précis.

Le tableau ci-dessous montre la performance de Jina-ColBERT-v2 sur les dix meilleurs résultats (nDGC@10) de ces six benchmarks BEIR. On peut constater que la performance de Jina-ColBERT-v2La différence de performance entre les dimensions 128 et 96 est inférieure à 11 TP3T, tandis que la différence entre les dimensions 128 et 64 est inférieure à 1,51 TP3T.

dimension de la sortieScore moyen (nDGC@10 pour 6 points de référence)
1280.565
960.558
640.556

La figure suivante illustre les performances de Jina-ColBERT-v2 en fonction de différentes dimensions de sortie.

全球首个多语言 ColBERT:Jina ColBERT V2 和它的‘俄罗斯套娃’技术Le choix de vecteurs de sortie plus petits permet non seulement d'économiser de l'espace de stockage, mais aussi d'améliorer la vitesse de calcul, en particulier dans les scénarios où les vecteurs doivent être comparés ou les distances calculées, comme dans les systèmes de recherche vectorielle.

Selon le Cloud Cost Estimator de Qdrant, le coût de stockage de 100 millions de documents sur AWS en utilisant des vecteurs à 128 dimensions est de 1 319,24 $ par mois, alors qu'avec des vecteurs à 64 dimensions, le coût peut être réduit de moitié, à 659,62 $ par mois. Il s'agit non seulement d'un gain de vitesse, mais aussi d'une réduction significative des coûts.

Comment démarrer avec Jina ColBERT v2

Jina ColBERT v2 est maintenant disponible sur l'API Jina Search Foundation, AWS Marketplace et les plateformes Azure. Il est également disponible sous la licence CC BY-NC-4.0 sur le site de la Visage étreint Sur la source ouverte pour une utilisation non commerciale.

  • Place de marché AWS : https://aws.amazon.com/marketplace/seller-profile?id=seller-stch2ludm6vgy
  • Azure : https://azuremarketplace.microsoft.com/en-gb/marketplace/apps?search=Jina
  • Visage d'étreinte : https://huggingface.co/jinaai/jina-colbert-v2

 

via Jina Search Foundation API

pour l'intégration

L'utilisation de l'API Jina Embedding pour obtenir l'Embedding de jina-colbert-v2 est la manière la plus simple et la plus directe.

Deux paramètres clés :

dimensionsIndique la dimension de sortie de l'incorporation. La valeur par défaut est 128, mais vous pouvez également choisir 64.

input_type: détermine le type d'entrée.query est limité à 32 tokens, qui seront automatiquement tronqués, et le mot-clé document Le codage du document peut être effectué hors ligne, de sorte que seule la partie de l'interrogation doit être codée au moment de l'interrogation, ce qui peut améliorer considérablement la vitesse de traitement.

La clé API de Jina est disponible sur jina.ai/embeddings.

curl https://api.jina.ai/v1/multi-vector \\
     -H "Content-Type: application/json" \\
     -H "Authorization: Bearer <YOUR JINA API KEY>" \\
     -d '{
     "model": "jina-colbert-v2",
     "dimensions": 128, # 或 64
     "input_type": "document", # 这里需要注意input_type 是 document 还是 query
     "embedding_type": "float",
     "input": [
         "在此输入你的文档文本",
         "你可以发送多个文本",
         "每个文本最长可达 8192 个标记"
    ]}'

Pour Reranker

Pour utiliser l'API Jina Reranker via l'option jina-colbert-v2Pour ce faire, transmettez une requête et plusieurs documents, et renvoyez un score de correspondance Rerankable, en construisant la requête suivante :

curl https://api.jina.ai/v1/rerank \\
     -H "Content-Type: application/json" \\
     -H "Authorization: Bearer <YOUR JINA API KEY>" \\
     -d '{
      "model": "jina-colbert-v2",
      "query": "柏林的人口是多少?",
      "top_n": 3,
      "documents": [
        "2023年柏林的人口比去年增长了0.7%。因此,到去年年底,柏林的居民人数比2022年增加了约27300人。30岁到40岁的人群是数量最多的年龄组。柏林拥有约88.1万外国居民,来自约170个国家,平均年龄为42.5岁。",
        "柏林山是南极洲玛丽·伯德地的一个冰川覆盖的火山,距离阿蒙森海约100公里(62英里)。它是一个宽约20公里(12英里)的山峰,有寄生火山口,由两座合并的火山组成:柏林火山,其火山口宽2公里(1.2英里),以及距离柏林火山约3.5公里(2.2英里)的Merrem峰,火山口宽2.5×1公里(1.55英里×0.62英里)。",
        "截至2023年12月31日,各联邦州按国籍和州统计的人口数据",
        "柏林的都市区人口超过450万,是德国人口最多的都市区。柏林-勃兰登堡首都地区约有620万人口,是德国第二大都市区,仅次于莱茵-鲁尔区,并且是欧盟第六大都市区(按GDP计算)。",
        "欧文·柏林(原名以色列·贝林)是一位美国作曲家和词曲作者。他的音乐是《伟大的美国歌本》的一部分。柏林获得了许多荣誉,包括奥斯卡奖、格莱美奖和托尼奖。",
        "柏林是美国康涅狄格州首都规划区的一个城镇。2020年人口普查时人口为20,175。",
        "柏林是德国的首都和最大城市,无论是面积还是人口。其超过385万居民使其成为欧盟人口最多的城市(按城市限界内人口计算)。",
        "《柏林,柏林》是一部为ARD制作的电视剧,于2002年至2005年在德国第一电视台的晚间节目中播出。导演包括弗朗茨斯卡·迈耶·普莱斯、克里斯托夫·施内、斯文·温特瓦尔特和蒂图斯·塞尔格。"
        ]
    }'

A noter également. top_n qui spécifie le nombre de documents à renvoyer lors de la recherche. Si vous n'avez besoin que de correspondances optimales, vous pouvez définir le paramètre top_n Régler à 1.

Pour obtenir d'autres exemples de code en Python ou dans d'autres langages, visitez la page https://jina.ai/embeddings ou choisissez dans le menu déroulant à l'adresse https://jina.ai/reranker/. jina-colbert-v2.

Via Stanford ColBERT

Si vous avez utilisé la bibliothèque Stanford ColBERT, vous pouvez maintenant la remplacer par la version Jina ColBERT v2. Il vous suffit de spécifier l'option jinaai/jina-colbert-v2 comme source de modèle.

from colbert.infra import ColBERTConfig
from colbert.modeling.checkpoint import Checkpoint

ckpt = Checkpoint("jinaai/jina-colbert-v2", colbert_config=ColBERTConfig())
docs = ["你的文本列表"]
query_vectors = ckpt.queryFromText(docs)

Via RAGatouille

Jina ColBERT v2 est également intégré dans le système RAGatouille, par le biais de l'application RAGPretrainedModel.from_pretrained() La méthode est facile à télécharger et à utiliser.

from ragatouille import RAGPretrainedModel

RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v2")
docs = ["你的文本列表"]
RAG.index(docs, index_name="your_index_name")
query = "你的查询"
results = RAG.search(query)

via Qdrant

A partir de la version 1.10 de Qdrant, Qdrant supporte les multivecteurs et le modèle d'interaction tardive, que vous pouvez utiliser directement avec jina-colbert-v2. Que vous déployiez Qdrant localement ou hébergé dans le nuage, vous pouvez insérer des documents dans une collection multivecteur simplement en configurant correctement le paramètre multivector_config dans le client.

Création d'une nouvelle collection à l'aide de l'opération MAX_SIM

from qdrant_client import QdrantClient, models

qdrant_client = QdrantClient(
    url="<YOUR_ENDPOINT>",
    api_key="<YOUR_API_KEY>",
)

qdrant_client.create_collection(
    collection_name="{collection_name}",
    vectors_config={
        "colbert": models.VectorParams(
            size=128,
            distance=models.Distance.COSINE,
            multivector_config=models.MultiVectorConfig(
                comparator=models.MultiVectorComparator.MAX_SIM
            ),
        )
    }
)

⚠️ Réglage correct multivector_config Les paramètres sont la clé de l'utilisation du modèle ColBERT dans Qdrant.

Insérer un document dans un ensemble multivectoriel

import requests
from qdrant_client import QdrantClient, models

url = 'https://api.jina.ai/v1/multi-vector'

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer <YOUR BEARER>'
}

data = {
    'model': 'jina-colbert-v2',
    'input_type': 'query',
    'embedding_type': 'float',
    'input': [
        '在此输入你的文本',
        '你可以发送多个文本',
        '每个文本最长可达 8192 个标记'
    ]
}

response = requests.post(url, headers=headers, json=data)
rows = response.json()["data"]

qdrant_client = QdrantClient(
    url="<YOUR_ENDPOINT>",
    api_key="<YOUR API_KEY>",
)

for i, row in enumerate(rows):
    qdrant_client.upsert(
        collection_name="{collection_name}",
        points=[
            models.PointStruct(
                id=i,
                vector=row["embeddings"],
                payload={"text": data["input"][i]}
            )
        ],
    )

Ensemble de requêtes (informatique)

from qdrant_client import QdrantClient, models
import requests

url = 'https://api.jina.ai/v1/multi-vector'

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer <YOUR BEARER>'
}

data = {
    'model': 'jina-colbert-v2',
    "input_type": "query",
    "embedding_type": "float",
    "input": [
        "Jina AI 的Embedding模型支持多少个标记的输入?"
    ]
}

response = requests.post(url, headers=headers, json=data)
vector = response.json()["data"][0]["embeddings"]

qdrant_client = QdrantClient(
    url="<YOUR_ENDPOINT>",
    api_key="<YOUR API_KEY>",
)

results = qdrant_client.query_points(
    collection_name="{collection_name}",
    query=vector,
)

print(results)

résumés

Basé sur son prédécesseur, jina-colbert-v2 couvre 89 langues mondiales et une large sélection de dimensions de sortie Embedding, permettant aux utilisateurs d'équilibrer de manière flexible les besoins de précision et d'efficacité, et d'économiser des coûts de calcul et de temps. Cliquez sur https://jina.ai pour l'essayer dès maintenant et obtenir 1 million de tokens gratuits.

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...