existieren RAG Domäne wird das Multivektormodell ColBERT verwendet, um das Dokument zu modellieren, indem ein einziger Vektor für jede der Dokumentenelemente Token Die Erzeugung unabhängiger Vektoren führt zu einer Verbesserung der Abrufgenauigkeit. Sie führt jedoch auch zu einem drastischen Anstieg des Speicherbedarfs und unterstützt nur die englische Sprache, was ihren Anwendungsbereich einschränkt.
Um diese Probleme anzugehen, haben wir die Architektur und den Trainingsprozess von ColBERT verbessert und insbesondere einen Durchbruch bei der mehrsprachigen Verarbeitung erzielt. Das neueste Jina-ColBERT-v2 unterstützt 89 Sprachen und führt eine Option für benutzerdefinierte Ausgabedimensionen ein, die den Speicherbedarf erheblich reduziert und die Effizienz und Genauigkeit der mehrsprachigen Abfrage verbessert.
Die wichtigsten Highlights der neuen Version
-
Leistungsverbesserung6,51 TP3T Verbesserung der englischen Suchleistung im Vergleich zum ursprünglichen ColBERT-v2 und 5,41 TP3T im Vergleich zu seinem Vorgänger jina-colbert-v1-de. -
Mehrsprachige UnterstützungDie neue Version unterstützt bis zu 89 Sprachen, darunter Arabisch, Chinesisch, Englisch, Japanisch, Russisch und andere Sprachen, sowie Programmiersprachen. -
Abmessungen der Ausgabe können individuell angepasst werdenDie neue Version verwendet Matryoshka Representation Learning (MRL) und bietet 128, 96 und 64 dimensionale Ausgangsvektoren, so dass der Benutzer die geeignete Dimensionalität entsprechend seinen Bedürfnissen wählen kann.
Der vollständige technische Bericht ist auf arXiv zu finden: https://arxiv.org/abs/2408.16672
jina-colbert-v2 leistung auf einen blick
In Bezug auf die Retrievalleistung zeigt jina-colbert-v2 einen deutlichen Vorteil gegenüber der Vorgängerversion, sowohl in Bezug auf englische Retrievalaufgaben als auch auf die Unterstützung mehrerer Sprachen. Die Vorteile dieses Multi-Vektor-Modells können auch mit der von Jina AI übernommenen Eingabelänge von 8192 Token voll ausgeschöpft werden. Unten finden Sie einen Vergleich mit anderen Versionen, bei dem die wichtigsten Verbesserungen deutlich zu erkennen sind:
jina-colbert-v2 |
jina-colbert-v1-de |
Original ColBERTv2 | |
---|---|---|---|
Durchschnitt der englischen BEIR-Aufgaben | 0.521 | 0.494 | 0.489 |
Mehrsprachige Unterstützung | 89 Sprachen | Nur Englisch | Nur Englisch |
Ausgangsmaß | 128, 96 oder 64 | Festgelegt 128 | Festgelegt 128 |
Maximale Abfragelänge | 32 Spielsteine | 32 Spielsteine | 32 Spielsteine |
Maximale Dokumentlänge | 8192 Wertmarken | 8192 Wertmarken | 512 Spielsteine |
Anzahl der Parameter | 560 Millionen | 137 Millionen | 110 Millionen |
Modellgröße | 1,1 GB | 550MB | 438MB |
1. die Verbesserung der Leistung
In der englischen Retrievalaufgabe übertrifft jina-colbert-v2 die vorherige Generation von jina-colbert-v1-de und das ursprüngliche ColBERT v2 und nähert sich dem Niveau des AnswerAI-ColBERT-small Modells, das speziell für Englisch entwickelt wurde.
Name des Modells | Durchschnittliche Punktzahl im BEIR-Benchmark-Test für Englisch | Mehrsprachige Unterstützung |
---|---|---|
jina-colbert-v2 |
0.521 | Unterstützung mehrerer Sprachen |
jina-colbert-v1-de |
0.494 | Nur Englisch |
ColBERT v2.0 | 0.489 | Nur Englisch |
AntwortAI-ColBERT-klein | 0.549 | Nur Englisch |
2. mehrsprachige Unterstützung
Jina-ColBERT-v2 ist das einzige ColBERT-Modell, das mehrere Sprachen unterstützt.Darüber hinaus ist es möglich, sehr kompakte Einbettungsvektoren zu erzeugen, die deutlich besser sind als herkömmliche BM25 Retrieval-Methoden (in allen von MIRACL bewerteten Sprachen).
jina-colbert-v2
Der Trainingskorpus deckt 89 Sprachen ab und umfasst 450 Millionen schwach überwachte semantisch verwandte Satzpaare, Frage-Antwort-Paare und Anfrage-Dokument-Paare. Die Hälfte davon ist in englischer Sprache, und der verbleibende Teil umfasst 29 verschiedene nicht-englische Sprachen, zusätzlich zu 3,0% an Programmiersprachdaten und 4,3% an sprachübergreifenden Daten.
Wir haben uns auch spezialisiert auf Arabisch, Chinesisch, Französisch, Deutsch, Japanisch, Russisch, Spanisch und andere gängige Sprachen im Gesang antworten Programmiersprache Es wurde ein zusätzliches Training durchgeführt, das das Modell in die Lage versetzte, sprachübergreifende Aufgaben gut zu bewältigen, indem ein zweisprachiger Textkorpus eingeführt wurde.
Die folgende Abbildung zeigt die Ergebnisse des Leistungsvergleichs zwischen Jina-ColBERT-v2 und BM25 für 16 Sprachen im MIRACL-Benchmark.
3. russische Schachtelpuppen-Darstellung lernen
Matrjoschka-Repräsentationslernen (MRL) ist eine flexible und effiziente Trainingsmethode, die den Genauigkeitsverlust minimiert und gleichzeitig verschiedene Dimensionen des Ausgabevektors unterstützt. Sie wird durch die Einführung mehrerer linearer Schichten in der verborgenen Schicht des Modells implementiert, wobei jede Schicht eine andere Dimension verarbeitet. Weitere Einzelheiten zu dieser Technik finden Sie unter: https://arxiv.org/abs/2205.13147
Standardmäßig wird dieJina-ColBERT-v2 generiert 128-dimensionale Einbettungen, aber Sie können auch kürzere Vektoren wählen, z. B. 96 oder 64 Dimensionen.. Selbst wenn der Vektor um 25% oder 50% gekürzt wird, ist die Auswirkung auf die Leistung fast vernachlässigbar (der Rückgang beträgt weniger als 1,5%). Mit anderen Worten: Egal, wie lang die Vektoren sein müssen, das Modell behält seine effiziente und genaue Leistung bei.
Die folgende Tabelle zeigt die Leistung von Jina-ColBERT-v2 bei den zehn besten Ergebnissen (nDGC@10) dieser sechs BEIR-Benchmarks. Es ist zu erkennen, dass dieDer Leistungsunterschied zwischen 128 und 96 Dimensionen beträgt weniger als 11 TP3T, während der Unterschied zwischen 128 und 64 Dimensionen weniger als 1,51 TP3T beträgt.
Ausgangsmaß | Durchschnittliche Punktzahl (nDGC@10 für 6 Benchmarks) |
---|---|
128 | 0.565 |
96 | 0.558 |
64 | 0.556 |
Die folgende Abbildung veranschaulicht die Leistung von Jina-ColBERT-v2 bei unterschiedlichen Ausgangsgrößen.
Die Wahl kleinerer Ausgangsvektoren spart nicht nur Speicherplatz, sondern verbessert auch die Rechengeschwindigkeit, insbesondere in Szenarien, in denen Vektoren verglichen oder Abstände berechnet werden müssen, wie z. B. bei Vektorabfragesystemen.
Laut dem Cloud Cost Estimator von Qdrant belaufen sich die Kosten für die Speicherung von 100 Millionen Dokumenten auf AWS unter Verwendung von 128-dimensionalen Vektoren auf 1.319,24 US-Dollar pro Monat, während sich die Kosten mit 64-dimensionalen Vektoren auf 659,62 US-Dollar pro Monat halbieren lassen. Das ist nicht nur ein Geschwindigkeitsschub, sondern auch eine erhebliche Kostenreduzierung.
Wie man mit Jina ColBERT v2 anfängt
Jina ColBERT v2 ist jetzt auf der Jina Search Foundation API, dem AWS Marketplace und den Azure-Plattformen verfügbar. Es ist auch unter der CC BY-NC-4.0-Lizenz auf der Gesicht umarmen Auf der offenen Quelle für nicht-kommerzielle Nutzung.
-
AWS-Marktplatz: https://aws.amazon.com/marketplace/seller-profile?id=seller-stch2ludm6vgy -
Azurblau: https://azuremarketplace.microsoft.com/en-gb/marketplace/apps?search=Jina -
Gesicht umarmen: https://huggingface.co/jinaai/jina-colbert-v2
über Jina Search Foundation API
zum Einbetten
Die Verwendung der Jina Embedding API für die Einbettung von jina-colbert-v2 ist der einfachste und direkteste Weg.
Zwei Schlüsselparameter:
Abmessungen
Gibt die Ausgabedimension der Einbettung an. Die Standardeinstellung ist 128, Sie können auch 64 wählen.
eingabe_art
: bestimmt die Art der Eingabe.Abfrage
ist auf 32 Token begrenzt, die automatisch abgeschnitten werden, und die Dokument
Die Dokumentenkodierung kann offline verarbeitet werden, so dass zum Zeitpunkt der Abfrage nur der Abfrageteil der Abfrage kodiert werden muss, was die Verarbeitungsgeschwindigkeit erheblich verbessern kann.
Der Jina API Key ist unter jina.ai/embeddings verfügbar.
curl https://api.jina.ai/v1/multi-vector \\\
-H "Content-Type: application/json" \\\\\\
-H "Authorization: Bearer " \\\\\
-d '{
"model": "jina-colbert-v2", "dimensions": 128, 1.0, 1.0, 1.0
"Abmessungen": 128, # oder 64
"input_type": "document", # Beachten Sie, ob der input_type document oder query ist.
"embedding_type": "float", "input": [ "float", #
"input": [
"Geben Sie hier den Text Ihres Dokuments ein.", "input_type": "float", "input": [
"Sie können mehr als einen Text senden.", "text_type": "float", "input": [ "Geben Sie hier den Text Ihres Dokuments ein.
"Jeder Text kann bis zu 8192 Token lang sein."
]}'
Für Reranker
So verwenden Sie die Jina Reranker API über die jina-colbert-v2
Um dies zu tun, eine Abfrage und mehrere Dokumente zu übergeben und einen Rerankable Match Score zurückzugeben, konstruieren Sie die folgende Anfrage:
curl https://api.jina.ai/v1/rerank \\\
-H "Content-Type: application/json" \\\\\\
-H "Authorization: Bearer " \\\\\
-d '{
"model": "jina-colbert-v2",
"query": "Wie hoch ist die Einwohnerzahl von Berlin?" ,
"top_n": 3,
"documents": [
"Die Bevölkerung Berlins ist im Jahr 2023 im Vergleich zum Vorjahr um 0,71 TP3T gestiegen, so dass Berlin am Ende des letzten Jahres rund 27.300 Einwohner mehr hatte als 2022.Die Altersgruppe mit den meisten Einwohnern ist die der 30- bis 40-Jährigen. In Berlin leben rund 881.000 ausländische Einwohner aus rund 170 Ländern mit einem Durchschnittsalter von 42,5 Jahren." ,
"Der Mount Berlin ist ein gletscherbedeckter Vulkan im Marie-Byrd-Land in der Antarktis, etwa 100 Kilometer von der Amundsen-See entfernt. Er ist ein etwa 20 Kilometer breiter Gipfel mit parasitären Kratern und besteht aus zwei miteinander verschmolzenen Vulkanen: dem Vulkan Berlin, dessen Krater 2 Kilometer breit ist, und dem etwa 3,5 Kilometer entfernten Merrem Peak, dessen Krater 2,5 x 1 Kilometer breit ist." ,
"Bevölkerungsdaten nach Nationalität und Kanton für die Bundesländer am 31. Dezember 2023",
"Der Großraum Berlin ist mit über 4,5 Millionen Einwohnern der bevölkerungsreichste Ballungsraum in Deutschland. Die Metropolregion Berlin-Brandenburg ist mit rund 6,2 Millionen Einwohnern nach der Rhein-Ruhr-Region der zweitgrößte Ballungsraum in Deutschland und der sechstgrößte Ballungsraum in der Europäischen Union (gemessen am BIP)." ,
"Irving Berlin (früher bekannt als Israel Behring) war ein amerikanischer Komponist und Songwriter. Seine Musik ist Teil des Great American Songbook. Berlin erhielt viele Auszeichnungen, darunter einen Academy Award, einen Grammy Award und einen Tony Award." ,
"Berlin ist eine Stadt im Capital Planning District des US-Bundesstaates Connecticut mit 20.175 Einwohnern (Volkszählung 2020).", .
"Berlin ist die Hauptstadt und die größte Stadt Deutschlands, sowohl von der Größe als auch von der Einwohnerzahl her. Mit mehr als 3,85 Millionen Einwohnern ist sie die bevölkerungsreichste Stadt in der Europäischen Union (gemessen an der Bevölkerung innerhalb der Stadtgrenzen)." ,
"Berlin, Berlin" war eine für die ARD produzierte Fernsehserie, die von 2002 bis 2005 im Abendprogramm von TV 1 ausgestrahlt wurde. Zu den Regisseuren gehören Franziska Meyer-Price, Christoph Schnee, Sven Winterwalt und Titus Selger."
]
}'
Beachten Sie auch. oben_n
der die Anzahl der Dokumente angibt, die bei der Suche zurückgegeben werden sollen. Wenn Sie nur die optimalen Treffer benötigen, können Sie den Parameter oben_n
Auf 1 setzen.
Weitere Codebeispiele in Python oder anderen Sprachen finden Sie auf der Seite https://jina.ai/embeddings, oder wählen Sie aus dem Dropdown-Menü unter https://jina.ai/reranker/ jina-colbert-v2
.
Über Stanford ColBERT
Wenn Sie die Stanford-ColBERT-Bibliothek verwendet haben, können Sie sie jetzt nahtlos durch die Jina-ColBERT-v2-Version ersetzen. Geben Sie einfach die jinaai/jina-colbert-v2
als Modellquelle.
from colbert.infra import ColBERTConfig
from colbert.modelling.checkpoint import Checkpoint
ckpt = Prüfpunkt("jinaai/jina-colbert-v2", colbert_config=ColBERTConfig())
docs = ["Ihre Textliste"]
query_vectors = ckpt.queryFromText(docs)
Über RAGatouille
Jina ColBERT v2 ist auch in das RAGatouille-System integriert, und zwar über die RAGPretrainedModel.from_pretrained()
Die Methode ist einfach herunterzuladen und anzuwenden.
from ragatouille import RAGPretrainedModel
RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v2")
docs = ["Liste Ihrer Texte"]
RAG.index(docs, index_name="ihr_index_name")
Abfrage = "Ihre Abfrage"
Ergebnisse = RAG.search(Abfrage)
über Qdrant
Ab Qdrant Version 1.10 unterstützt Qdrant Multivektoren und das Late-Interaction-Modell, das Sie direkt mit jina-colbert-v2 verwenden können. Unabhängig davon, ob Sie Qdrant lokal oder in der Cloud gehostet einsetzen, können Sie Dokumente in eine Multivektor-Sammlung einfügen, indem Sie den Parameter multivector_config im Client korrekt konfigurieren.
Erstellen einer neuen Sammlung mit der Operation MAX_SIM
from qdrant_client import QdrantClient, models
qdrant_client = QdrantClient(
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(
Komparator=models.MultiVectorComparator.MAX_SIM
),
)
}
)
⚠️ Richtige Einstellung multivektor_konfigurieren
Die Parameter sind der Schlüssel zur Verwendung des ColBERT-Modells in Qdrant.
Einfügen eines Dokuments in einen Multivektorsatz
importiere Anfragen
from qdrant_client import QdrantClient, models
url = 'https://api.jina.ai/v1/multi-vector'
headers = {
'Authorization': 'Bearer '
}
data = {
'input': [
'Geben Sie hier Ihren Text ein', 'input_type'.
'Jeder Text kann bis zu 8192 Token lang sein'.
]
}
response = requests.post(url, headers=headers, json=data)
Zeilen = response.json()["data"]
qdrant_client = QdrantClient(
url="",
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]}
)
],
)
(Berechnungs-)Abfragemenge
from qdrant_client import QdrantClient, models
importiere Anfragen
url = 'https://api.jina.ai/v1/multi-vector'
headers = {
'Content-Type': 'application/json', 'Authorisation': 'Bearer '
'Authorization': 'Bearer '
}
data = {
'model': 'jina-colbert-v2', 'input_type'.
'input_type': 'query', 'embedding_type': 'float', 'query', 'query'
"embedding_type": "float",
"input": [
"Wie viele gelabelte Eingaben unterstützt Jina AI's Embedding-Modell?"
]
}
response = requests.post(url, headers=headers, json=data)
vector = response.json()["data"][0]["embeddings"]
qdrant_client = QdrantClient(
url="",
api_key="",
)
results = qdrant_client.query_points(
collection_name="{collection_name}",
query=vector, )
)
print(ergebnisse)
Zusammenfassungen
Basierend auf seinem Vorgänger deckt jina-colbert-v2 89 globale Sprachen und eine große Auswahl an Einbettungsausgabedimensionen ab, die es dem Benutzer ermöglichen, die Anforderungen an Genauigkeit und Effizienz flexibel auszugleichen und Berechnungs- und Zeitkosten zu sparen. Klicken Sie auf https://jina.ai, um es jetzt auszuprobieren und 1 Million Token gratis zu erhalten.