AI Personal Learning
und praktische Anleitung
CyberKnife-Zeichenspiegel

Der erste mehrsprachige ColBERT der Welt: Jina ColBERT V2 und seine "russische Schachtelpuppen"-Technologie

-1

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 Generierung unabhängiger Vektoren bringt eine 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 des mehrsprachigen Abrufs verbessert.

Die wichtigsten Highlights der neuen Version

  1. 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.
  2. Unterstützung mehrerer SprachenDie neue Version unterstützt bis zu 89 Sprachen, darunter Arabisch, Chinesisch, Englisch, Japanisch, Russisch und andere Sprachen, sowie Programmiersprachen.
  3. Abmessungen der Ausgabe können individuell angepasst werdenDie neue Version verwendet Matryoshka Representation Learning (MRL) mit 128, 96 und 64 dimensionalen 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-en Original ColBERTv2
Durchschnitt der englischen BEIR-Aufgaben 0.521 0.494 0.489
Unterstützung mehrerer Sprachen 89 Sprachen Nur Englisch Nur Englisch
Ausgangsmaß 128, 96 oder 64 Festgelegt 128 Festgelegt 128
Maximale Abfragelänge 32 Token 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 Leistungsverbesserung

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 Unterstützung mehrerer Sprachen
jina-colbert-v2 0.521 Unterstützung mehrerer Sprachen
jina-colbert-v1-en 0.494 Nur Englisch
ColBERT v2.0 0.489 Nur Englisch
AntwortAI-ColBERT-klein 0.549 Nur Englisch
-1Leistung von Jina ColBERT v2 auf dem englischsprachigen BEIR-Datensatz

2. mehrsprachige Unterstützung

Jina-ColBERT-v2 ist das einzige ColBERT-Modell, das mehrere Sprachen unterstützt.Das Ergebnis ist ein sehr kompakter Einbettungsvektor, der deutlich besser ist als der 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.

-1Sprachverteilung des Pre-Training-Datensatzes

Die folgende Abbildung zeigt die Ergebnisse des Leistungsvergleichs zwischen Jina-ColBERT-v2 und BM25 auf 16 Sprachen im MIRACL-Benchmark.

-1

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.

-1Die 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 Vektorabrufsystemen.

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:

dimensionsGibt die Ausgabedimension der Einbettung an. Die Standardeinstellung ist 128, Sie können auch 64 wählen.

input_type: bestimmt die Art der Eingabe.query ist auf 32 Token begrenzt, die automatisch abgeschnitten werden, und die document 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 <YOUR JINA API KEY>" \\
     -d '{
     "model": "jina-colbert-v2",
     "dimensions": 128, # 或 64
     "input_type": "document", # 这里需要注意input_type 是 document 还是 query
     "embedding_type": "float",
     "input": [
         "在此输入你的文档文本",
         "你可以发送多个文本",
         "每个文本最长可达 8192 个标记"
    ]}'

Für Reranker

So verwenden Sie die Jina Reranker API über die jina-colbert-v2Um 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 <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年在德国第一电视台的晚间节目中播出。导演包括弗朗茨斯卡·迈耶·普莱斯、克里斯托夫·施内、斯文·温特瓦尔特和蒂图斯·塞尔格。"
        ]
    }'

Beachten Sie auch. top_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 top_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.modeling.checkpoint import Checkpoint

ckpt = Checkpoint("jinaai/jina-colbert-v2", colbert_config=ColBERTConfig())
docs = ["你的文本列表"]
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 = ["你的文本列表"]
RAG.index(docs, index_name="your_index_name")
query = "你的查询"
results = RAG.search(query)

ü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(
    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
            ),
        )
    }
)

⚠️ Richtige Einstellung multivector_config Die Parameter sind der Schlüssel zur Verwendung des ColBERT-Modells in Qdrant.

Einfügen eines Dokuments in einen Multivektorsatz

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

(Berechnungs-)Abfragemenge

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)

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.

Darf nicht ohne Genehmigung vervielfältigt werden:Leiter des AI-Austauschkreises " Der erste mehrsprachige ColBERT der Welt: Jina ColBERT V2 und seine "russische Schachtelpuppen"-Technologie
de_DEDeutsch