
Update: Am 31. August 2024 haben wir die zweite Version von Jina-ColBERT veröffentlicht, mit verbesserter Leistung, mehrsprachiger Unterstützung für 89 Sprachen und flexiblen Ausgabedimensionen. Weitere Details finden Sie im Release-Post.
Letzten Freitag sorgte die Veröffentlichung des ColBERT-Modells von Jina AI auf Hugging Face für große Begeisterung in der KI-Community, besonders auf Twitter/X. Während viele mit dem bahnbrechenden BERT-Modell vertraut sind, fragen sich einige angesichts der Aufregung um ColBERT: Was macht ColBERT im überfüllten Bereich der Informationsabruf-Technologien so besonders? Warum ist die KI-Community so begeistert von ColBERT mit 8192 Token Länge? Dieser Artikel geht auf die Feinheiten von ColBERT und ColBERTv2 ein und beleuchtet deren Design, Verbesserungen und die überraschende Effektivität von ColBERTs Late Interaction.

tagWas ist ColBERT?
Der Name "ColBERT" steht für Contextualized Late Interaction over BERT, ein Modell der Stanford University, das das tiefe Sprachverständnis von BERT nutzt und einen neuartigen Interaktionsmechanismus einführt. Dieser Mechanismus, bekannt als Late Interaction, ermöglicht einen effizienten und präzisen Abruf, indem Anfragen und Dokumente bis zu den letzten Stufen des Abrufprozesses separat verarbeitet werden. Es gibt konkret zwei Versionen des Modells:
- ColBERT: Das ursprüngliche Modell war die Erfindung von Omar Khattab und Matei Zaharia, die einen neuartigen Ansatz für den Informationsabruf durch das Paper "ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT" vorstellten. Ihre Arbeit wurde auf der SIGIR 2020 veröffentlicht.

Das ursprüngliche ColBERT-Paper, das die "Late Interaction" einführt.
- ColBERTv2: Aufbauend auf der Grundlagenarbeit setzte Omar Khattab seine Forschung fort und führte in Zusammenarbeit mit Barlas Oguz, Matei Zaharia und Michael S. Bernstein "ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction" ein, das auf der SIGIR 2021 vorgestellt wurde. Diese nächste Iteration von ColBERT adressierte frühere Einschränkungen und führte wichtige Verbesserungen ein, wie denoised supervision und residual compression, die sowohl die Abrufeffektivität als auch die Speichereffizienz des Modells verbesserten.

ColBERTv2 fügt denoised supervision und residual compression hinzu, um die Qualität der Trainingsdaten zu verbessern und den Speicherbedarf zu reduzieren.
tagColBERTs Design verstehen
Da ColBERTv2s Architektur der des ursprünglichen ColBERT sehr ähnlich bleibt und seine wichtigsten Innovationen sich um Trainingstechniken und Kompressionsmechanismen drehen, werden wir zunächst die grundlegenden Aspekte des ursprünglichen ColBERT betrachten.
tagWas ist Late Interaction in ColBERT?
"Interaction" bezieht sich auf den Prozess der Bewertung der Relevanz zwischen einer Anfrage und einem Dokument durch den Vergleich ihrer Repräsentationen.
"Late Interaction" ist der Kern von ColBERT. Der Begriff leitet sich von der Architektur und Verarbeitungsstrategie des Modells ab, bei der die Interaktion zwischen den Repräsentationen von Anfrage und Dokument erst spät im Prozess stattfindet, nachdem beide unabhängig voneinander codiert wurden. Dies steht im Gegensatz zu "Early Interaction"-Modellen, bei denen Query- und Dokument-Embeddings in früheren Stadien interagieren, typischerweise vor oder während ihrer Codierung durch das Modell.
Interaction Type | Models |
---|---|
Early Interaction | BERT, ANCE, DPR, Sentence-BERT, DRMM, KNRM, Conv-KNRM, etc. |
Late Interaction | ColBERT, ColBERTv2 |
Early Interaction kann die Berechnungskomplexität erhöhen, da alle möglichen Query-Dokument-Paare berücksichtigt werden müssen, was es weniger effizient für großangelegte Anwendungen macht.
Late Interaction-Modelle wie ColBERT optimieren die Effizienz und Skalierbarkeit, indem sie die Vorberechnung von Dokumentrepräsentationen ermöglichen und einen leichtgewichtigeren Interaktionsschritt am Ende einsetzen, der sich auf die bereits codierten Repräsentationen konzentriert. Diese Designentscheidung ermöglicht schnellere Abrufzeiten und reduzierte Rechenanforderungen, was es besser geeignet für die Verarbeitung großer Dokumentensammlungen macht.
tagKeine Interaktion: Kosinus-Ähnlichkeit von Dokument- und Query-Embeddings
Viele praktische Vektordatenbanken und neuronale Suchlösungen basieren auf schneller Kosinus-Ähnlichkeitsberechnung zwischen Dokument- und Query-Embeddings. Während diese Methode aufgrund ihrer Einfachheit und Recheneffizienz attraktiv ist, hat sich gezeigt, dass dieser als "keine Interaktion" oder "nicht interaktionsbasiert" bezeichnete Ansatz im Vergleich zu Modellen, die eine Form der Interaktion zwischen Queries und Dokumenten beinhalten, schlechter abschneidet.
Die zentrale Einschränkung des "keine Interaktion"-Ansatzes liegt in seiner Unfähigkeit, die komplexen Nuancen und Beziehungen zwischen Query- und Dokumentbegriffen zu erfassen. Information Retrieval dreht sich im Kern darum, die Absicht hinter einer Query mit dem Inhalt eines Dokuments abzugleichen und zu verstehen. Dieser Prozess erfordert oft ein tiefes, kontextbezogenes Verständnis der beteiligten Begriffe - etwas, das einzelne, aggregierte Embeddings für Dokumente und Queries nur schwer leisten können.
tagQuery- und Dokument-Encoder in ColBERT
ColBERTs Encoding-Strategie basiert auf dem BERT-Modell, das für sein tiefes kontextuelles Sprachverständnis bekannt ist. Das Modell generiert dichte Vektordarstellungen für jeden Token in einer Query oder einem Dokument und erstellt dabei jeweils einen Bag of Contextualized Embeddings für eine Query und einen für ein Dokument. Dies ermöglicht einen nuancierten Vergleich ihrer Embeddings während der späten Interaktionsphase.
tagQuery-Encoder von ColBERT
Für eine Query mit Tokens beginnt der Prozess mit der Tokenisierung von in BERT-basierte WordPiece-Tokens und dem Voranstellen eines speziellen [Q]
-Tokens. Dieser [Q]
-Token, der direkt nach BERTs [CLS]
-Token positioniert wird, signalisiert den Beginn einer Query.
Wenn die Query kürzer als eine vordefinierte Anzahl von Tokens ist, wird sie mit [mask]
-Tokens bis zu aufgefüllt; andernfalls wird sie auf die ersten Tokens gekürzt. Die aufgefüllte Sequenz wird dann durch BERT geleitet, gefolgt von einem CNN (Convolutional Neural Network) und Normalisierung. Das Ergebnis ist ein Set von Embedding-Vektoren, unten als bezeichnet:
tagDokument-Encoder von ColBERT
Ähnlich wird für ein Dokument mit Tokens ein [D]
-Token vorangestellt, um den Beginn eines Dokuments anzuzeigen. Diese Sequenz durchläuft, ohne Auffüllung zu benötigen, den gleichen Prozess und ergibt ein Set von Embedding-Vektoren, unten als bezeichnet:
Die Verwendung von [mask]
-Tokens zum Auffüllen von Queries (im Paper als Query-Augmentation bezeichnet) gewährleistet eine einheitliche Länge über alle Queries hinweg und erleichtert die Batch-Verarbeitung. Die [Q]
- und [D]
-Tokens markieren explizit den Beginn von Queries bzw. Dokumenten und helfen dem Modell dabei, zwischen den beiden Eingabetypen zu unterscheiden.
tagVergleich von ColBERT mit Cross-Encodern
Cross-Encoder verarbeiten Paare von Queries und Dokumenten gemeinsam, was sie sehr genau, aber aufgrund der Rechenkosten für die Auswertung jedes möglichen Paars weniger effizient für großangelegte Aufgaben macht. Sie eignen sich besonders für spezifische Szenarien, in denen die präzise Bewertung von Satzpaaren erforderlich ist, wie bei Aufgaben zur semantischen Ähnlichkeit oder detaillierten Inhaltsvergleichen. Dieses Design beschränkt jedoch ihre Anwendbarkeit in Situationen, die eine schnelle Abfrage aus großen Datensätzen erfordern, wo vorberechnete Embeddings und effiziente Ähnlichkeitsberechnungen von entscheidender Bedeutung sind.
Im Gegensatz dazu ermöglicht ColBERTs spätes Interaktionsmodell die Vorberechnung von Dokument-Embeddings, was den Abrufprozess deutlich beschleunigt, ohne die Tiefe der semantischen Analyse zu beeinträchtigen. Diese Methode, obwohl im Vergleich zum direkten Ansatz der Cross-Encoder scheinbar kontraintuitiv, bietet eine skalierbare Lösung für Echtzeit- und großangelegte Information-Retrieval-Aufgaben. Sie stellt einen strategischen Kompromiss zwischen Recheneffizienz und Qualität der Interaktionsmodellierung dar.
tagFinden der Top-K-Dokumente mit ColBERT
Sobald wir Embeddings für die Query und Dokumente haben, wird das Finden der relevantesten Top-K-Dokumente überschaubar (aber nicht so einfach wie die Berechnung des Kosinus zweier Vektoren).
Die Hauptoperationen umfassen ein Batch-Skalarprodukt zur Berechnung der termweisen Ähnlichkeiten, Max-Pooling über Dokumentterme zur Ermittlung der höchsten Ähnlichkeit pro Query-Term und Summierung über Query-Terme zur Ableitung des Gesamtdokumentscores, gefolgt von der Sortierung der Dokumente basierend auf diesen Scores. Der Pseudo-PyTorch-Code wird unten beschrieben:
import torch
def compute_relevance_scores(query_embeddings, document_embeddings, k):
"""
Compute relevance scores for top-k documents given a query.
:param query_embeddings: Tensor representing the query embeddings, shape: [num_query_terms, embedding_dim]
:param document_embeddings: Tensor representing embeddings for k documents, shape: [k, max_doc_length, embedding_dim]
:param k: Number of top documents to re-rank
:return: Sorted document indices based on their relevance scores
"""
# Ensure document_embeddings is a 3D tensor: [k, max_doc_length, embedding_dim]
# Pad the k documents to their maximum length for batch operations
# Note: Assuming document_embeddings is already padded and moved to GPU
# Compute batch dot-product of Eq (query embeddings) and D (document embeddings)
# Resulting shape: [k, num_query_terms, max_doc_length]
scores = torch.matmul(query_embeddings.unsqueeze(0), document_embeddings.transpose(1, 2))
# Apply max-pooling across document terms (dim=2) to find the max similarity per query term
# Shape after max-pool: [k, num_query_terms]
max_scores_per_query_term = scores.max(dim=2).values
# Sum the scores across query terms to get the total score for each document
# Shape after sum: [k]
total_scores = max_scores_per_query_term.sum(dim=1)
# Sort the documents based on their total scores
sorted_indices = total_scores.argsort(descending=True)
return sorted_indices
Beachten Sie, dass dieses Verfahren sowohl beim Training als auch beim Re-Ranking während der Inferenz verwendet wird. Das ColBERT-Modell wird mit einem paarweisen Ranking-Loss trainiert, wobei die Trainingsdaten aus Tripeln bestehen, wobei eine Query repräsentiert, ein relevantes (positives) Dokument für die Query ist und ein nicht relevantes (negatives) Dokument. Das Modell zielt darauf ab, Repräsentationen zu lernen, bei denen der Ähnlichkeitsscore zwischen und höher ist als der Score zwischen q und .
Das Trainingsziel kann mathematisch als Minimierung der folgenden Verlustfunktion dargestellt werden:
, wobei den von ColBERT berechneten Ähnlichkeitsscore zwischen einer Query und einem Dokument bezeichnet. Dieser Score wird durch Aggregation der Max-Ähnlichkeitsscores der am besten übereinstimmenden Embeddings zwischen Query und Dokument ermittelt, dem in der Modellarchitektur beschriebenen späten Interaktionsmuster folgend. Dieser Ansatz stellt sicher, dass das Modell darauf trainiert wird, zwischen relevanten und irrelevanten Dokumenten für eine gegebene Query zu unterscheiden, indem ein größerer Abstand in den Ähnlichkeitsscores für positive und negative Dokumentpaare gefördert wird.
tagEntrauschte Supervision in ColBERTv2
Die entrauschte Supervision in ColBERTv2 verfeinert den ursprünglichen Trainingsprozess durch die Auswahl anspruchsvoller Negative und die Nutzung eines Cross-Encoders für die Destillation. Diese ausgefeilte Methode zur Verbesserung der Trainingsdatenqualität umfasst mehrere Schritte:
- Initiales Training: Verwendung der offiziellen Tripel aus dem MS MARCO-Datensatz, bestehend aus einer Query, einem relevanten Dokument und einem nicht relevanten Dokument.
- Indexierung und Abruf: Einsatz von ColBERTv2's Kompression zur Indexierung von Trainingspassagen, gefolgt vom Abruf der Top-k-Passagen für jede Query.
- Cross-Encoder Reranking: Verbesserung der Passagenauswahl durch Reranking mittels eines MiniLM Cross-Encoders, dessen Scores in ColBERTv2 destilliert werden.
- Bildung von Trainingstupeln: Generierung von w-way Tupeln für das Training, die sowohl hoch als auch niedriger bewertete Passagen einbeziehen, um anspruchsvolle Beispiele zu erstellen.
- Iterative Verfeinerung: Wiederholung des Prozesses zur kontinuierlichen Verbesserung der Auswahl harter Negative, wodurch die Modellleistung gesteigert wird.
Beachten Sie, dass dieser Prozess eine ausgefeilte Verbesserung des ColBERT-Trainingsregimes darstellt und keine grundlegende Änderung seiner Architektur.
tagHyperparameter von ColBERT
Die Hyperparameter von ColBERT sind nachfolgend zusammengefasst:
Hyperparameter | Beste Wahl | Begründung |
---|---|---|
Learning Rate | 3 x 10^{-6} | Ausgewählt für Fine-Tuning, um stabile und effektive Modellupdates zu gewährleisten. |
Batch Size | 32 | Balanciert Recheneffizienz und die Fähigkeit, ausreichend Informationen pro Update zu erfassen. |
Number of Embeddings per Query (Nq) | 32 | Festgelegt, um eine konsistente Repräsentationsgröße über alle Anfragen hinweg zu gewährleisten, was die effiziente Verarbeitung unterstützt. |
Embedding Dimension (m) | 128 | Erwies sich als gute Balance zwischen Darstellungskraft und Recheneffizienz. |
Training Iterations | 200k (MS MARCO), 125k (TREC CAR) | Gewählt, um gründliches Lernen sicherzustellen und Overfitting zu vermeiden, mit Anpassungen basierend auf Dataseteigenschaften. |
Bytes per Dimension in Embeddings | 4 (Re-Ranking), 2 (End-to-End Ranking) | Kompromiss zwischen Präzision und Speichereffizienz, unter Berücksichtigung des Anwendungskontexts (Re-Ranking vs. End-to-End). |
Vector-Similarity Function | Cosine (Re-Ranking), (Squared) L2 (End-to-End) | Ausgewählt basierend auf Leistung und Effizienz in den jeweiligen Retrieval-Kontexten. |
FAISS Index Partitions (P) | 2000 | Bestimmt die Granularität der Suchraum-Partitionierung, beeinflusst die Sucheffizienz. |
Nearest Partitions Searched (p) | 10 | Balanciert die Suchbreite gegen Recheneffizienz. |
Sub-vectors per Embedding (s) | 16 | Beeinflusst die Granularität der Quantisierung, wirkt sich auf Suchgeschwindigkeit und Speichernutzung aus. |
Index Representation per Dimension | 16-bit values | Gewählt für die zweite Phase des End-to-End Retrievals, um den Kompromiss zwischen Genauigkeit und Speicher zu managen. |
Number of Layers in Encoders | 12-layer BERT | Optimale Balance zwischen Tiefe des kontextuellen Verständnisses und Recheneffizienz. |
Max Query Length | 128 | Die maximale Anzahl an Tokens, die vom Query-Encoder verarbeitet werden. Dies wird im Jina-ColBERT Modell erweitert. |
Max Document Length | 512 | Die maximale Anzahl an Tokens, die vom Dokument-Encoder verarbeitet werden. Dies wird im Jina-ColBERT Modell auf 8192 erweitert. |
tagDie Indexierungsstrategie von ColBERT
Im Gegensatz zu repräsentationsbasierten Ansätzen, die jedes Dokument in einen Embedding-Vektor kodieren, kodiert ColBERT Dokumente (und Anfragen) in Embedding-Bags, wobei jedes Token in einem Dokument sein eigenes Embedding hat. Dieser Ansatz bedeutet naturgemäß, dass für längere Dokumente mehr Embeddings gespeichert werden müssen, was ein Schwachpunkt des ursprünglichen ColBERT ist und später durch ColBERTv2 adressiert wurde.
Der Schlüssel zum effizienten Management liegt in ColBERTs Verwendung einer Vektordatenbank (z.B. FAISS) für Indexierung und Retrieval, sowie seinem detaillierten Indexierungsprozess, der für die effiziente Verarbeitung großer Datenmengen konzipiert ist. Das ursprüngliche ColBERT-Paper erwähnt mehrere Strategien zur Verbesserung der Effizienz von Indexierung und Retrieval, darunter:
- Offline Indexierung: Dokumentrepräsentationen werden offline berechnet, was die Vorberechnung und Speicherung von Dokument-Embeddings ermöglicht. Dieser Prozess nutzt Batch-Verarbeitung und GPU-Beschleunigung, um große Dokumentensammlungen effizient zu verarbeiten.
- Embedding-Speicherung: Dokument-Embeddings können mit 32-Bit- oder 16-Bit-Werten für jede Dimension gespeichert werden, was einen Kompromiss zwischen Präzision und Speicheranforderungen bietet. Diese Flexibilität ermöglicht es ColBERT, eine Balance zwischen Effektivität (in Bezug auf Retrieval-Leistung) und Effizienz (in Bezug auf Speicher- und Rechenkosten) zu halten.
Die Einführung der Residual-Kompression in ColBERTv2, eine neuartige Technik, die im ursprünglichen ColBERT nicht vorhanden war, spielt eine Schlüsselrolle bei der Reduzierung des Speicherbedarfs des Modells um das 6-10-fache bei gleichzeitiger Qualitätserhaltung. Diese Technik komprimiert die Embeddings weiter, indem sie effektiv nur die Unterschiede zu einer Menge fester Referenz-Zentroide erfasst und speichert.
tagEffektivität und Effizienz von ColBERT
Man könnte zunächst annehmen, dass die Integration von BERTs tiefem kontextuellem Verständnis in die Suche inhärent erhebliche Rechenressourcen erfordert, was einen solchen Ansatz aufgrund hoher Latenz und Rechenkosten für Echtzeit-Anwendungen weniger praktikabel macht. ColBERT widerlegt jedoch diese Annahme durch seine innovative Nutzung des Late-Interaction-Mechanismus. Hier sind einige bemerkenswerte Punkte:
- Signifikante Effizienzgewinne: ColBERT erreicht eine um Größenordnungen reduzierte Rechenleistung (FLOPs) und Latenz im Vergleich zu traditionellen BERT-basierten Ranking-Modellen. Speziell für eine gegebene Modellgröße (z.B. 12-Layer "Base" Transformer Encoder) erreicht ColBERT nicht nur die gleiche, sondern in einigen Fällen sogar eine bessere Effektivität als BERT-basierte Modelle mit dramatisch geringerem Rechenaufwand. Zum Beispiel benötigt BERT bei einer Re-Ranking-Tiefe von k=10 fast 180-mal mehr FLOPs als ColBERT; diese Lücke vergrößert sich mit steigendem k auf das 13900-fache bei k=1000 und sogar auf das 23000-fache bei k=2000.
- Verbesserte Recall und MRR@10 im End-to-End Retrieval: Entgegen der anfänglichen Intuition, dass eine tiefere Interaktion zwischen Query- und Dokument-Repräsentationen (wie bei frühen Interaktionsmodellen) für eine hohe Retrieval-Leistung notwendig wäre, zeigt ColBERTs End-to-End-Retrieval-Setup überlegene Effektivität. Zum Beispiel übertrifft sein Recall@50 den Recall@1000 des offiziellen BM25 und fast aller anderen Modelle Recall@200, was die bemerkenswerte Fähigkeit des Modells unterstreicht, relevante Dokumente aus einer großen Sammlung ohne direkten Vergleich jedes Query-Dokument-Paars zu finden.
- Praktikabilität für reale Anwendungen: Die experimentellen Ergebnisse unterstreichen ColBERTs praktische Anwendbarkeit für reale Szenarien. Sein Indexierungsdurchsatz und seine Speichereffizienz machen es geeignet für die Indexierung großer Dokumentensammlungen wie MS MARCO innerhalb weniger Stunden, wobei eine hohe Effektivität bei überschaubarem Speicherbedarf erhalten bleibt. Diese Eigenschaften unterstreichen ColBERTs Eignung für den Einsatz in Produktionsumgebungen, wo sowohl Leistung als auch Recheneffizienz von größter Bedeutung sind.
- Skalierbarkeit mit der Dokumentensammlungsgröße: Vielleicht die überraschendste Schlussfolgerung ist ColBERTs Skalierbarkeit und Effizienz im Umgang mit großen Dokumentensammlungen. Die Architektur ermöglicht die Vorberechnung von Dokument-Embeddings und nutzt effiziente Batch-Verarbeitung für die Query-Dokument-Interaktion, wodurch das System effektiv mit der Größe der Dokumentensammlung skaliert. Diese Skalierbarkeit ist kontraintuitiv, wenn man die Komplexität und Tiefe des Verständnisses berücksichtigt, die für ein effektives Dokument-Retrieval erforderlich sind, und zeigt ColBERTs innovativen Ansatz zur Ausbalancierung von Recheneffizienz und Retrieval-Effektivität.
tagVerwendung von jina-colbert-v1-en: ein ColBERTv2-Modell mit 8192 Token Länge
Jina-ColBERT ist sowohl für schnelles als auch genaues Retrieval konzipiert und unterstützt längere Kontextlängen bis zu 8192, wobei es die Fortschritte von JinaBERT nutzt, das aufgrund seiner verbesserten Architektur längere Sequenzverarbeitung ermöglicht.
[D],[CLS]
gepadded.
tagJinas Verbesserungen gegenüber dem ursprünglichen ColBERT
Jina-ColBERTs wichtigste Weiterentwicklung ist sein Backbone, jina-bert-v2-base-en
, der die Verarbeitung von deutlich längeren Kontexten (bis zu 8192 Token) im Vergleich zum ursprünglichen ColBERT ermöglicht, der bert-base-uncased
verwendet. Diese Fähigkeit ist entscheidend für die Verarbeitung von Dokumenten mit umfangreichem Inhalt und liefert detailliertere und kontextbezogenere Suchergebnisse.
tagjina-colbert-v1-en Leistungsvergleich vs. ColBERTv2
Wir haben jina-colbert-v1-en auf BEIR-Datensätzen und dem neuen LoCo-Benchmark evaluiert, der lange Kontexte bevorzugt, und es gegen die ursprüngliche ColBERTv2-Implementierung und nicht-interaktionsbasierte
jina-embeddings-v2-base-en Modell.Dataset | ColBERTv2 | jina-colbert-v1-en | jina-embeddings-v2-base-en |
---|---|---|---|
Arguana | 46.5 | 49.4 | 44.0 |
Climate-Fever | 18.1 | 19.6 | 23.5 |
DBPedia | 45.2 | 41.3 | 35.1 |
FEVER | 78.8 | 79.5 | 72.3 |
FiQA | 35.4 | 36.8 | 41.6 |
HotpotQA | 67.5 | 65.9 | 61.4 |
NFCorpus | 33.7 | 33.8 | 32.5 |
NQ | 56.1 | 54.9 | 60.4 |
Quora | 85.5 | 82.3 | 88.2 |
SCIDOCS | 15.4 | 16.9 | 19.9 |
SciFact | 68.9 | 70.1 | 66.7 |
TREC-COVID | 72.6 | 75.0 | 65.9 |
Webis-touch2020 | 26.0 | 27.0 | 26.2 |
LoCo | 74.3 | 83.7 | 85.4 |
Average | 51.7 | 52.6 | 51.6 |
Diese Tabelle zeigt die überlegene Leistung von jina-colbert-v1-en, besonders in Szenarien, die längere Kontextlängen erfordern, im Vergleich zum ursprünglichen ColBERTv2. Beachten Sie, dass jina-embeddings-v2-base-en mehr Trainingsdaten verwendet, während jina-colbert-v1-en nur MSMARCO nutzt, was die gute Leistung von jina-embeddings-v2-base-en bei einigen Aufgaben erklären könnte.
tagBeispielverwendung von jina-colbert-v1-en
Dieser Codeausschnitt beschreibt den Indizierungsprozess mit Jina-ColBERT und zeigt dessen Unterstützung für lange Dokumente.
from colbert import Indexer
from colbert.infra import Run, RunConfig, ColBERTConfig
n_gpu: int = 1 # Set your number of available GPUs
experiment: str = "" # Name of the folder where the logs and created indices will be stored
index_name: str = "" # The name of your index, i.e. the name of your vector database
if __name__ == "__main__":
with Run().context(RunConfig(nranks=n_gpu, experiment=experiment)):
config = ColBERTConfig(
doc_maxlen=8192 # Our model supports 8k context length for indexing long documents
)
indexer = Indexer(
checkpoint="jinaai/jina-colbert-v1-en",
config=config,
)
documents = [
"ColBERT is an efficient and effective passage retrieval model.",
"Jina-ColBERT is a ColBERT-style model but based on JinaBERT so it can support both 8k context length.",
"JinaBERT is a BERT architecture that supports the symmetric bidirectional variant of ALiBi to allow longer sequence length.",
"Jina-ColBERT model is trained on MSMARCO passage ranking dataset, following a very similar training procedure with ColBERTv2.",
"Jina-ColBERT achieves the competitive retrieval performance with ColBERTv2.",
"Jina is an easier way to build neural search systems.",
"You can use Jina-ColBERT to build neural search systems with ease.",
# Add more documents here to ensure the clustering work correctly
]
indexer.index(name=index_name, collection=documents)
tagVerwendung von jina-colbert-v1-en in RAGatouille
RAGatouille ist eine neue Python-Bibliothek, die die Verwendung fortschrittlicher Abrufmethoden in RAG-Pipelines erleichtert. Sie ist auf Modularität und einfache Integration ausgelegt und ermöglicht Benutzern, modernste Forschung nahtlos zu nutzen. Das Hauptziel von RAGatouille ist es, die Anwendung komplexer Modelle wie ColBERT in RAG-Pipelines zu vereinfachen und es Entwicklern zu ermöglichen, diese Methoden ohne tiefgehendes Fachwissen in der zugrundeliegenden Forschung zu nutzen. Dank Benjamin Clavié können Sie jina-colbert-v1-en jetzt einfach verwenden:
from ragatouille import RAGPretrainedModel
# Get your model & collection of big documents ready
RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v1-en")
my_documents = [
"very long document1",
"very long document2",
# ... more documents
]
# And create an index with them at full length!
RAG.index(collection=my_documents,
index_name="the_biggest_index",
max_document_length=8190,)
# or encode them in-memory with no truncation, up to your model's max length
RAG.encode(my_documents)
Für detailliertere Informationen und weitere Erkundung von Jina-ColBERT können Sie die Hugging Face Seite besuchen.
tagFazit
ColBERT stellt einen bedeutenden Fortschritt im Bereich des Information Retrieval dar. Durch die Ermöglichung längerer Kontextlängen mit Jina-ColBERT und die Beibehaltung der Kompatibilität mit dem ColBERT-Ansatz zur späten Interaktion bietet es eine leistungsstarke Alternative für Entwickler, die modernste Suchfunktionalität implementieren möchten.
In Verbindung mit der RAGatouille-Bibliothek, die die Integration komplexer Abrufmodelle in RAG-Pipelines vereinfacht, können Entwickler nun die Leistungsfähigkeit fortschrittlicher Abrufmethoden problemlos nutzen, ihre Arbeitsabläufe optimieren und ihre Anwendungen verbessern. Die Synergie zwischen Jina-ColBERT und RAGatouille zeigt einen bemerkenswerten Fortschritt bei der Zugänglichkeit und Effizienz fortschrittlicher KI-Suchmodelle für den praktischen Einsatz.