Nouvelles
Modèles
Des produits
keyboard_arrow_down
Lecteur
Lisez les URL et effectuez des recherches sur le Web pour de meilleurs LLM de base.
Intégrations
Intégrations multimodales et multilingues de classe mondiale.
Reclasseur
Récupérateur neuronal de classe mondiale pour maximiser la pertinence de la recherche.
Recherche profonde
Recherchez, lisez et raisonnez jusqu'à trouver la meilleure réponse.
Plus
keyboard_arrow_down
Classificateur
Classification à zéro plan et à quelques plans pour l'image et le texte.
Segmenteur
Coupez un long texte en morceaux et effectuez la tokenisation.

Documentation de l'API
Génération automatique de code pour votre IDE ou LLM copilote
open_in_new


Entreprise
keyboard_arrow_down
À propos de nous
Contacter le service commercial
Programme de stage
Rejoignez-nous
open_in_new
Télécharger le logo
open_in_new
termes et conditions


Se connecter
login
Résumé Technique de jina-colbert-v2
Embedding Asymétrique dans ColBERT
Support Multilingue Pour Plus de 89 Langues
Apprentissage de Représentation Matryoshka
Débuter avec Jina ColBERT v2
star
Mis en exergue
communiqué de presse
août 30, 2024

Jina ColBERT v2 : Système de recherche par interaction tardive multilingue pour l'embedding et le reranking

Jina ColBERT v2 prend en charge 89 langues avec des performances de recherche supérieures, des dimensions de sortie contrôlées par l'utilisateur et une longueur de token de 8192.
Dark-themed coding interface displaying English and Japanese characters with "JINA COLBERT V2" highlighted in the center.
Jina AI
Jina AI • 10 minutes lues

Aujourd'hui, nous sommes ravis de présenter Jina ColBERT v2 (jina-colbert-v2), un modèle avancé de recherche à interaction tardive basé sur l'architecture ColBERT. Ce nouveau modèle de langage améliore les performances de jina-colbert-v1-en et ajoute le support multilingue ainsi que des dimensions de sortie dynamiques.

Cette nouvelle version met en avant les fonctionnalités suivantes :

  • Performances de recherche supérieures par rapport au ColBERT-v2 original (+6,5 %) et à notre version précédente, jina-colbert-v1-en (+5,4 %).
  • Support multilingue pour 89 langues, offrant de solides performances dans les principales langues mondiales.
  • Tailles d'embedding de sortie contrôlables par l'utilisateur grâce à l'apprentissage de représentation Matryoshka, permettant aux utilisateurs d'équilibrer flexiblement entre efficacité et précision.

tagRésumé Technique de jina-colbert-v2

Le rapport technique complet est disponible sur arXiv :

Jina-ColBERT-v2: A General-Purpose Multilingual Late Interaction Retriever
Multi-vector dense models, such as ColBERT, have proven highly effective in information retrieval. ColBERT's late interaction scoring approximates the joint query-document attention seen in cross-encoders while maintaining inference efficiency closer to traditional dense retrieval models, thanks to its bi-encoder architecture and recent optimizations in indexing and search. In this paper, we introduce several improvements to the ColBERT model architecture and training pipeline, leveraging techniques successful in the more established single-vector embedding model paradigm, particularly those suited for heterogeneous multilingual data. Our new model, Jina-ColBERT-v2, demonstrates strong performance across a range of English and multilingual retrieval tasks, while also cutting storage requirements by up to 50% compared to previous models.
arXiv.orgRohan Jha
jina-colbert-v2 jina-colbert-v1-en Original ColBERTv2
Moyenne de 14 tâches
BEIR en anglais
0.521 0.494 0.489
Multilingue 89 langues Anglais uniquement Anglais uniquement
Dimensions de sortie 128, 96, ou 64 128 fixe 128 fixe
Longueur max. requête 32 tokens 32 tokens 32 tokens
Longueur max. document 8192 tokens 8192 tokens 512 tokens
Paramètres 560M 137M 110M
Taille du modèle 1.1GB 550MB 438MB

tagEmbedding Asymétrique dans ColBERT

ColBERT s'appuie sur l'architecture BERT en ajoutant une interaction tardive et un encodage asymétrique requête-document.

What is ColBERT and Late Interaction and Why They Matter in Search?
Jina AI's ColBERT on Hugging Face has set Twitter abuzz, bringing a fresh perspective to search with its 8192-token capability. This article unpacks the nuances of ColBERT and ColBERTv2, showcasing their innovative designs and why their late interaction feature is a game-changer for search.

La nature asymétrique de ColBERT signifie que lors de l'utilisation de modèles comme jina-colbert-v2 ou jina-colbert-v1-en, vous devez spécifier si vous intégrez une requête, un document, ou les deux (à des fins de reclassement). Cette flexibilité supplémentaire améliore les performances par rapport aux modèles d'embedding homogènes dans les tâches de recherche.

tagSupport Multilingue Pour Plus de 89 Langues

Jina ColBERT v2 dispose de capacités multilingues étendues, conçues pour répondre aux exigences des applications modernes de recherche d'information et d'IA globalisées. Le corpus d'entraînement de jina-colbert-v2 intègre 89 langues, avec des étapes d'entraînement supplémentaires pour les principales langues internationales, notamment l'arabe, le chinois, l'anglais, le français, l'allemand, le japonais, le russe et l'espagnol, ainsi que les langages de programmation. L'entraînement incluait également un corpus de textes bilingues alignés pour exploiter les potentiels multilingues, permettant la correspondance entre requêtes et documents dans différentes langues lors des tâches de reclassement/recherche.

Graphique de la distribution des langues dans les données d'entraînement, soulignant la dominance de l'anglais et du chinois.
Distribution des données du dataset de pré-entraînement par langue (spécifiée par le code ISO-639) en échelle logarithmique.

Aujourd'hui, Jina ColBERT v2 se distingue comme le seul modèle de type ColBERT multilingue qui génère des embeddings compacts, surpassant significativement la recherche basée sur BM25 dans toutes les langues testées sur les benchmarks MIRACL.

Graphique en barres comparant les performances de jina-colbert-v2 et BM25 sur 20 langues pour des tâches multilingues.
Performance de Jina ColBERT v2 sur 16 langues, comparée à BM25, sur les benchmarks MIRACL.

De plus, sur les tâches de recherche en langue anglaise, Jina ColBERT v2 dépasse les performances de son prédécesseur jina-colbert-v1-en et du modèle ColBERT v2 original, avec des performances comparables au modèle anglais hautement spécialisé AnswerAI-ColBERT-small.

Nom du Modèle Score moyen
(14 benchmarks BEIR anglais)
Support Multilingue
jina-colbert-v2 0.521 Multilingue
jina-colbert-v1-en 0.494 Anglais uniquement
ColBERT v2.0 0.489 Anglais uniquement
AnswerAI-ColBERT-small 0.549 Anglais uniquement
Graphique en barres montrant les évaluations des modèles sur les datasets BEIR en anglais, avec plusieurs modèles comme 'jina-colbert' et 'BM25'.
Évaluation de jina-colbert-v2 sur une sélection de datasets en anglais du benchmark BEIR.

tagApprentissage de Représentation Matryoshka

L'Apprentissage de Représentation Matryoshka est une technique d'entraînement de modèles permettant de supporter différentes tailles de vecteurs de sortie tout en minimisant toute perte de précision. Nous entraînons les couches cachées du réseau avec plusieurs têtes de projection linéaire différentes — les couches finales d'un réseau de neurones — chacune supportant une taille de sortie différente. Jina ColBERT v2 supporte des vecteurs de sortie de 128, 96 et 64 dimensions.

Jina ColBERT v2 produit par défaut des embeddings de sortie de 128 dimensions, mais peut produire des dimensions de 96 et 64 qui ont des performances presque identiques tout en étant respectivement 25 % et 50 % plus courts.

Le tableau ci-dessous montre la performance nDGC dujina-colbert-v2 pour les dix premiers résultats (nDGC@10) sur six jeux de données du benchmark BEIR. Vous pouvez constater que la différence de performance entre 128 dimensions et 96 est à peine de 1% et moins de 1,5% entre 128 et 64 dimensions.

Dimensions de SortieScore Moyen
(nDGC@10 pour 6 benchmarks)
1280.565
960.558
640.556
Graphique à barres des benchmarks BEIR, mettant en évidence les scores des jeux de données de nfcorpus à msmarco, avec jina-colbert-v2.64 excellant.
Performance de Jina ColBERT v2 à différentes dimensions de sortie.

Réduire la taille des vecteurs de sortie permet d'économiser de l'espace et d'accélérer les applications comme la recherche d'informations basée sur les vecteurs qui doivent comparer différents vecteurs ou mesurer la distance entre eux.

Cela a des conséquences significatives sur les coûts, ne serait-ce qu'en termes de stockage réduit. Par exemple, en utilisant le calculateur de coûts cloud de Qdrant, le stockage de 100 millions de documents sur AWS avec des vecteurs de 128 dimensions pour chacun a un coût estimé de 1 319,24 USD par mois. À 64 dimensions, ce coût tombe à 659,62 USD.

tagDébuter avec Jina ColBERT v2

Jina ColBERT v2 est disponible via l'API Jina Search Foundation, le marketplace AWS, et sur Azure. Il est également disponible pour une utilisation non commerciale uniquement (CC BY-NC-4.0) via Hugging Face.

tagVia l'API Jina Search Foundation

Pour l'Embedding

La commande curl suivante montre comment spécifier l'entrée et les options pour obtenir des embeddings de documents à partir de jina-colbert-v2 via l'API Jina Embeddings. Pour obtenir des vecteurs de la taille souhaitée, spécifiez 128 ou 64 pour le paramètre dimensions. Ce paramètre est optionnel et la valeur par défaut est 128.

Les documents d'entrée seront tronqués s'ils dépassent 8192 tokens.

Spécifiez votre clé API Jina dans l'en-tête d'autorisation Authorization: Bearer <YOUR JINA API KEY> :

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, # Ou 64 pour des vecteurs de taille réduite
	"input_type": "document", # Pour les embeddings de requête voir ci-dessous
	"embedding_type": "float",
	"input": [
		"Your document text string goes here", 
		"You can send multiple texts", 
		"Each text can be up to 8192 tokens long"
    ]}'

Pour obtenir des embeddings de requête, définissez le paramètre input_type sur query au lieu de document. Notez que les requêtes ont des limites de taille beaucoup plus strictes que les documents. Elles seront tronquées à 32 tokens. L'encodage des requêtes renverra toujours 32 tokens, y compris les embeddings pour le padding si la longueur est inférieure à 32 tokens.

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, # Ou 64 pour des vecteurs de taille réduite	
	"input_type": "query", # Doit être spécifié pour les embeddings de requête
	"embedding_type": "float",
	"input": [
		"Your query text string goes here", 
		"You can send multiple texts", 
		"Each query text can be up to 32 tokens long"
    ]}'
API d'Embedding
Embeddings multimodaux et bilingues à contexte long pour votre recherche et RAG.

Pour le Reranking

Pour utiliser jina-colbert-v2 via l'API Jina Reranker, en passant une requête et plusieurs documents et en obtenant des scores de correspondance classables, construisez votre requête comme celle ci-dessous :

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": "What is the population of Berlin?",
      "top_n": 3,
      "documents": [
        "Berlin's population grew by 0.7 percent in 2023 compared with the previous year. Accordingly, around 27,300 more residents lived in Berlin at the end of the last year than in 2022. Those of 30 to under 40 years old form the numerically largest age group. With roughly 881,000 foreign residents from around 170 nations and an average age of the population of 42.5 years old.",
        "Mount Berlin is a glacier-covered volcano in Marie Byrd Land, Antarctica, 100 kilometres (62 mi) from the Amundsen Sea. It is a roughly 20-kilometre-wide (12 mi) mountain with parasitic vents that consists of two coalesced volcanoes: Berlin proper with the 2-kilometre-wide (1.2 mi) Berlin Crater and Merrem Peak with a 2.5-by-1-kilometre-wide (1.55 mi × 0.62 mi) crater, 3.5 kilometres (2.2 mi) away from Berlin.",
        "Population as of 31.12.2023 by nationality and federal states Land\\tTotal\\tGermans\\tForeigners\\tincluding EU-states number\\t%\\tnumber\\t%",
        "The urban area of Berlin has a population of over 4.5 million and is therefore the most populous urban area in Germany. The Berlin-Brandenburg capital region has around 6.2 million inhabitants and is Germany's second-largest metropolitan region after the Rhine-Ruhr region, and the sixth-biggest metropolitan region by GDP in the European Union.",
        "Irving Berlin (born Israel Beilin) was an American composer and songwriter. His music forms a large part of the Great American Songbook. Berlin received numerous honors including an Academy Award, a Grammy Award, and a Tony Award.",
        "Berlin is a town in the Capitol Planning Region, Connecticut, United States. The population was 20,175 at the 2020 census.",
        "Berlin is the capital and largest city of Germany, both by area and by population. Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits.",
        "Berlin, Berlin ist eine für die ARD produzierte Fernsehserie, die von 2002 bis 2005 im Vorabendprogramm des Ersten ausgestrahlt wurde. Regie führten unter anderem Franziska Meyer Price, Christoph Schnee, Sven Unterwaldt Jr. und Titus Selge."
        ]
    }'

Notez l'argument top_n, qui spécifie le nombre de documents que vous souhaitez récupérer. Par exemple, si votre application n'utilise que la meilleure correspondance, définissez top_n à 1.

Pour des exemples de code en Python et autres langages et frameworks de programmation, rendez-vous sur la page de l'API Jina AI Embeddings, ou sélectionnez jina-colbert-v2 dans le menu déroulant sur la page de l'API Jina Reranker.

API Reranker
Maximisez la pertinence de la recherche et la précision du RAG en toute simplicité.

tagVia Stanford ColBERT

Vous pouvez aussi utiliser Jina ColBERT v2 comme remplacement direct de ColBERT v2 dans la bibliothèque Stanford ColBERT. Spécifiez simplement jinaai/jina-colbert-v2 comme source du modèle :

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

ckpt = Checkpoint("jinaai/jina-colbert-v2", colbert_config=ColBERTConfig())
docs = ["Your list of texts"] 
query_vectors = ckpt.queryFromText(docs)
⚠️
Vous devez installer einops et flash_attn pour utiliser le code ci-dessus.

tagVia RAGatouille

Jina ColBERT v2 est également intégré à RAGatouille. Vous pouvez le télécharger et l'utiliser via la méthode RAGPretrainedModel.from_pretrained() :

from ragatouille import RAGPretrainedModel

RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v2")
docs = ["Your list of texts"]
RAG.index(docs, index_name="your_index_name")
query = "Your query"
results = RAG.search(query)
⚠️
Vous devez installer einops et flash_attn pour utiliser le code ci-dessus.

tagVia Qdrant

Depuis la version 1.10, Qdrant a ajouté le support pour les multi-vecteurs et les modèles à interaction tardive. Les utilisateurs existants des moteurs Qdrant, qu'ils soient locaux ou en version cloud gérée, peuvent en bénéficier en intégrant directement jina-colbert-v2 en utilisant le client Qdrant.

Création d'une nouvelle Collection utilisant 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
            ),
        )
    }
)
⚠️
Il est essentiel de définir correctement le paramètre multivector_config pour utiliser les modèles de type ColBERT dans Qdrant.

Insertion de Documents Dans les Collections Multi-vecteurs

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': [
        'Your text string goes here',
        'You can send multiple texts',
        'Each text can be up to 8192 tokens long'
    ]
}

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]} 
            )
        ],
    )

Interrogation des Collections

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": [
        "how many tokens in an input do Jina AI's embedding models support?"
    ]
}

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)

tagRésumé

Jina ColBERT v2 (jina-colbert-v2) s'appuie sur les hautes performances de jina-colbert-v1-en et étend ses capacités à un large éventail de langues mondiales. Avec la prise en charge de plusieurs tailles d'embedding, jina-colbert-v2 permet aux utilisateurs d'ajuster le compromis précision/efficacité pour répondre à leurs cas d'utilisation spécifiques, offrant potentiellement des économies significatives en temps et en coûts de calcul.

Ce modèle combine toutes ces fonctionnalités dans un package unique à prix compétitif, accessible via une API web intuitive et compatible avec tout framework de calcul prenant en charge les requêtes HTTP. Essayez-le par vous-même avec 1 million de tokens gratuits pour voir comment il peut améliorer vos applications et processus.

Catégories:
star
Mis en exergue
communiqué de presse
rss_feed
Des bureaux
location_on
Sunnyvale, Californie
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, États-Unis
location_on
Berlin, Allemagne (siège social)
Prinzessinnenstraße 19-20, 10969 Berlin, Allemagne
location_on
Pékin, Chine
Niveau 5, bâtiment 6, n° 48, rue Haidian Ouest, Pékin, Chine
location_on
Shenzhen, en Chine
402 étage 4, bâtiment technologique Fu'an, Shenzhen, Chine
Fondation Recherche
Lecteur
Intégrations
Reclasseur
Recherche profonde
Classificateur
Segmenteur
Documentation de l'API
Obtenir la clé API Jina
Limite de taux
Statut de l'API
Entreprise
À propos de nous
Contacter le service commercial
Rédaction
Programme de stage
Rejoignez-nous
open_in_new
Télécharger le logo
open_in_new
Termes
Sécurité
termes et conditions
Confidentialité
Gérer les cookies
email
Jina AI © 2020-2025.