Heute freuen wir uns, Jina ColBERT v2 (jina-colbert-v2) vorzustellen, ein fortschrittliches Late-Interaction-Retrieval-Modell, das auf der ColBERT-Architektur basiert. Dieses neue Sprachmodell verbessert die Leistung von jina-colbert-v1-en und fügt mehrsprachige Unterstützung sowie dynamische Ausgabedimensionen hinzu.
Diese neue Version zeichnet sich durch folgende Funktionen aus:
- Überlegene Retrieval-Leistung im Vergleich zum ursprünglichen ColBERT-v2 (+6,5%) und unserer vorherigen Version jina-colbert-v1-en (+5,4%).
- Mehrsprachige Unterstützung für 89 Sprachen mit starker Leistung in allen wichtigen Weltsprachen.
- Benutzergesteuerte Ausgabe-Embedding-Größen durch Matryoshka Representation Learning, wodurch Benutzer flexibel zwischen Effizienz und Präzision abwägen können.
tagTechnische Zusammenfassung von jina-colbert-v2
Der vollständige technische Bericht ist auf arXiv verfügbar:

jina-colbert-v2 | jina-colbert-v1-en | Original ColBERTv2 | |
---|---|---|---|
Durchschnitt von 14 englischen BEIR-Aufgaben |
0.521 | 0.494 | 0.489 |
Mehrsprachig | 89 Sprachen | Nur Englisch | Nur Englisch |
Ausgabedimensionen | 128, 96, oder 64 | Fix 128 | Fix 128 |
Max. Querylänge | 32 Tokens | 32 Tokens | 32 Tokens |
Max. Dokumentenlänge | 8192 Tokens | 8192 Tokens | 512 Tokens |
Parameter | 560M | 137M | 110M |
Modellgröße | 1,1GB | 550MB | 438MB |
tagAsymmetrisches Embedding in ColBERT
ColBERT baut auf der BERT-Architektur auf und fügt Late Interaction und asymmetrische Query-Dokument-Kodierung hinzu.

Die asymmetrische Natur von ColBERT bedeutet, dass bei der Verwendung von Modellen wie jina-colbert-v2 oder jina-colbert-v1-en angegeben werden muss, ob eine Query, ein Dokument oder beides (für Reranking-Zwecke) eingebettet werden soll. Diese zusätzliche Flexibilität verbessert die Leistung gegenüber homogenen Embedding-Modellen bei Retrieval-Aufgaben.
tagMehrsprachige Unterstützung für über 89 Sprachen
Jina ColBERT v2 verfügt über umfangreiche mehrsprachige Fähigkeiten, die für die Anforderungen moderner, globalisierter Informationssuche und KI-Anwendungen entwickelt wurden. Das Trainingskorpus für jina-colbert-v2 umfasst 89 Sprachen, mit zusätzlichen Trainingsphasen für wichtige internationale Sprachen wie Arabisch, Chinesisch, Englisch, Französisch, Deutsch, Japanisch, Russisch und Spanisch sowie Programmiersprachen. Das Training umfasste auch ein Korpus ausgerichteter zweisprachiger Texte, um crosslinguale Potenziale zu erschließen, wodurch Queries und Dokumente in verschiedenen Sprachen bei Reranking/Retrieval-Aufgaben abgeglichen werden können.
Heute sticht Jina ColBERT v2 als einziges mehrsprachiges ColBERT-ähnliches Modell hervor, das kompakte Embeddings generiert und die BM25-basierte Suche in allen getesteten Sprachen auf MIRACL-Benchmarks deutlich übertrifft.
Darüber hinaus übertrifft Jina ColBERT v2 bei englischsprachigen Retrieval-Aufgaben die Leistung seines Vorgängers jina-colbert-v1-en und des ursprünglichen ColBERT v2 Modells, mit vergleichbarer Leistung zum hochspezialisierten, rein englischsprachigen AnswerAI-ColBERT-small Modell.
Modellname | Durchschnittliche Punktzahl (14 BEIR Englisch-only Benchmarks) |
Mehrsprachige Unterstützung |
---|---|---|
jina-colbert-v2 | 0.521 | Mehrsprachig |
jina-colbert-v1-en | 0.494 | Nur Englisch |
ColBERT v2.0 | 0.489 | Nur Englisch |
AnswerAI-ColBERT-small | 0.549 | Nur Englisch |
tagMatryoshka Representation Learning
Matryoshka Representation Learning ist eine Technik zum Training von Modellen, die verschiedene Ausgabevektorgrößen unterstützt und dabei Genauigkeitsverluste minimiert. Wir trainieren die verborgenen Schichten des Netzwerks mit mehreren verschiedenen linearen Projektionsköpfen — den finalen Schichten eines neuronalen Netzwerks — die jeweils eine andere Ausgabegröße unterstützen. Jina ColBERT v2 unterstützt Ausgabevektoren von 128, 96 und 64 Dimensionen.
Jina ColBERT v2 produziert standardmäßig 128-dimensionale Ausgabe-Embeddings, kann aber auch 96- und 64-dimensionale Vektoren erzeugen, die eine nahezu identische Leistung aufweisen, aber 25% bzw. 50% kürzer sind.
Die folgende Tabelle zeigt die nDGC-Leistung vonjina-colbert-v2 für die Top-Ten-Ergebnisse (nDGC@10) über sechs Datensätze aus dem BEIR-Benchmark. Hier sehen Sie, dass der Leistungsunterschied zwischen 128 und 96 Dimensionen kaum 1% beträgt und unter 1,5% zwischen 128 und 64 Dimensionen.
Output Dimensions | Durchschnittlicher Score (nDGC@10 für 6 Benchmarks) |
---|---|
128 | 0.565 |
96 | 0.558 |
64 | 0.556 |
Die Reduzierung der Größe der Ausgabevektoren spart Speicherplatz und beschleunigt Anwendungen wie vektorbasierte Informationssuche, bei denen verschiedene Vektoren verglichen oder der Abstand zwischen ihnen gemessen werden muss.
Dies hat erhebliche Kostenauswirkungen, allein schon in Bezug auf reduzierten Speicherplatz. Zum Beispiel kostet die Speicherung von 100 Millionen Dokumenten auf AWS mit 128-dimensionalen Vektoren für jedes Dokument laut Qdrants Cloud-Kostenrechner schätzungsweise US$1.319,24 pro Monat. Bei 64 Dimensionen sinkt dies auf US$659,62.
tagErste Schritte mit Jina ColBERT v2
Jina ColBERT v2 ist über die Jina Search Foundation API, den AWS Marketplace und auf Azure verfügbar. Es ist auch für nicht-kommerzielle Nutzung (CC BY-NC-4.0) über Hugging Face verfügbar.
tagÜber die Jina Search Foundation API
Für Embedding
Der folgende curl
-Befehl zeigt, wie man Input und Optionen spezifiziert, um Dokument-Embeddings von jina-colbert-v2 über die Jina Embeddings API zu erhalten. Um Vektoren Ihrer bevorzugten Größe zu erhalten, geben Sie 128 oder 64 für den Parameter dimensions
an. Dieser Parameter ist optional und der Standardwert ist 128.
Eingabedokumente werden abgeschnitten, wenn sie länger als 8192 Token sind.
Geben Sie Ihren Jina API-Schlüssel im Autorisierungs-Header an 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, # Or 64 for half-size vectors
"input_type": "document", # For query embeddings see below
"embedding_type": "float",
"input": [
"Your document text string goes here",
"You can send multiple texts",
"Each text can be up to 8192 tokens long"
]}'
Um Query-Embeddings zu erhalten, setzen Sie den Parameter input_type
auf query
statt document
. Beachten Sie, dass Queries viel strengere Größenbeschränkungen haben als Dokumente. Sie werden bei 32 Token abgeschnitten. Die Query-Kodierung wird immer 32 Token zurückgeben, einschließlich Embeddings für das Padding, wenn weniger als 32 Token lang.
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, # Or 64 for half-size vectors
"input_type": "query", # This must be specified for query embeddings
"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"
]}'

Für Reranking
Um jina-colbert-v2 über die Jina Reranker API zu verwenden, übergeben Sie eine Query und mehrere Dokumente und erhalten rankingfähige Match-Scores zurück. Konstruieren Sie Ihre Anfrage wie folgt:
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."
]
}'
Beachten Sie das Argument top_n
, das die Anzahl der Dokumente angibt, die Sie abrufen möchten. Wenn Ihre Anwendung beispielsweise nur den besten Treffer verwendet, setzen Sie top_n
auf 1.
Code-Snippets in Python und anderen Programmiersprachen und Frameworks finden Sie auf der Jina AI Embeddings API-Seite oder wählen Sie jina-colbert-v2 aus dem Dropdown-Menü auf der Jina Reranker API-Seite.

tagÜber Stanford ColBERT
Sie können Jina ColBERT v2 auch als Drop-in-Ersatz für ColBERT v2 in der Stanford ColBERT Bibliothek verwenden. Geben Sie einfach jinaai/jina-colbert-v2
als Modellquelle an:
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)
einops
und flash_attn
installieren, um den obigen Code zu verwenden.tagÜber RAGatouille
Jina ColBERT v2 ist auch in RAGatouille integriert. Sie können es über die Methode RAGPretrainedModel.from_pretrained()
herunterladen und verwenden:
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)
einops
und flash_attn
installieren, um den obigen Code zu verwenden.tagÜber Qdrant
Seit Version 1.10 hat Qdrant Unterstützung für Multi-Vektoren und Late-Interaction-Modelle hinzugefügt. Bestehende Nutzer von Qdrant-Engines, ob lokale oder verwaltete Cloud-Versionen, können direkt von der Integration von jina-colbert-v2 über den Qdrant-Client profitieren.
Erstellen einer neuen Collection mit der MAX_SIM Operation
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
),
)
}
)
multivector_config
Parameters ist essenziell für die Verwendung von ColBERT-Style Modellen in Qdrant.Dokumente in Multi-Vektor-Collections einfügen
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]}
)
],
)
Collections abfragen
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)
tagZusammenfassung
Jina ColBERT v2 (jina-colbert-v2) baut auf der hohen Leistung von jina-colbert-v1-en auf und erweitert seine Fähigkeiten auf eine Vielzahl globaler Sprachen. Mit Unterstützung für mehrere Embedding-Größen ermöglicht jina-colbert-v2 den Nutzern, das Verhältnis zwischen Präzision und Effizienz an ihre spezifischen Anwendungsfälle anzupassen, was potenziell erhebliche Zeit- und Rechenkosten einsparen kann.
Dieses Modell vereint all diese Funktionen in einem einzigen, preislich wettbewerbsfähigen Paket, das über eine intuitive Web-API zugänglich und mit jedem Computing-Framework kompatibel ist, das HTTP-Anfragen unterstützt. Testen Sie es selbst mit 1 Million kostenlosen Tokens, um zu sehen, wie es Ihre Anwendungen und Prozesse verbessern kann.