Le premier ColBERT multilingue au monde : Jina ColBERT V2 et sa technologie de "poupées russes".
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
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. 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. 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-v2 | jina-colbert-v1-en | Original ColBERTv2 | |
---|---|---|---|
Moyenne des tâches BEIR en anglais | 0.521 | 0.494 | 0.489 |
Prise en charge multilingue | 89 langues | Anglais uniquement | Anglais uniquement |
dimension de la sortie | 128, 96 ou 64 | Fixe 128 | Fixe 128 |
Longueur maximale de la requête | 32 jetons | 32 jetons | 32 jetons |
Longueur maximale du document | 8192 jetons | 8192 jetons | 512 jetons |
Nombre de paramètres | 560 millions d'euros | 137 millions d'euros | 110 millions d'euros |
Taille du modèle | 1.1GB | 550MB | 438MB |
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èle | Score moyen au test de référence BEIR en anglais | Prise en charge multilingue |
---|---|---|
jina-colbert-v2 | 0.521 | Prise en charge multilingue |
jina-colbert-v1-en | 0.494 | Anglais uniquement |
ColBERT v2.0 | 0.489 | Anglais uniquement |
RéponseAI-ColBERT-small | 0.549 | Anglais uniquement |

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.

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.
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 sortie | Score moyen (nDGC@10 pour 6 points de référence) |
---|---|
128 | 0.565 |
96 | 0.558 |
64 | 0.556 |
La figure suivante illustre les performances de Jina-ColBERT-v2 en fonction de différentes dimensions de sortie.
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 :
dimensions
Indique 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-v2
Pour 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
Article copyright Cercle de partage de l'IA Tous, prière de ne pas reproduire sans autorisation.
Articles connexes
Pas de commentaires...