Pressemitteilungen
Modelle
Produkte
keyboard_arrow_down
Leser
Lesen Sie URLs und suchen Sie im Internet nach fundierteren LLMs.
Einbettungen
Multimodale und mehrsprachige Einbettungen von Weltklasse.
Reranker
Neural Retriever der Weltklasse zur Maximierung der Suchrelevanz.
DeepSearch
Suchen, lesen und überlegen, bis die beste Antwort gefunden ist.
Mehr
keyboard_arrow_down
Klassifikator
Zero-Shot- und Few-Shot-Klassifizierung für Bild und Text.
Segmentierer
Schneiden Sie langen Text in Abschnitte und führen Sie eine Tokenisierung durch.

API-Dokumente
Automatische Codegenerierung für Ihre Copilot-IDE oder LLM
open_in_new


Unternehmen
keyboard_arrow_down
Über uns
Kontaktieren Sie unseren Vertrieb
Praktikantenprogramm
Begleiten Sie uns
open_in_new
Logo herunterladen
open_in_new
Terms & amp; Bedingungen


Einloggen
login
Bilinguale Embedding-Modelle
Machen Sie mit auf Google Colab
Installation der Voraussetzungen
Zugang zu Hugging Face
Jina Embeddings v2 für Deutsch und Englisch herunterladen
Englischsprachige Daten herunterladen
Verarbeitung der Daten
Generierung und Indexierung von Embeddings mit Jina Embeddings v2 und FAISS
Auf Deutsch abfragen für englische Ergebnisse
Die Rollen umkehren: Deutsche Dokumente mit Englisch abfragen
Abfragen auf Chinesisch
Die Zukunft: Mehr Sprachen, einschließlich Programmierung
Tech-Blog
Januar 26, 2024

Jina Embeddings v2 zweisprachige Modelle sind jetzt Open Source auf Hugging Face

Jina AIs Open-Source bilinguale Embedding-Modelle für Deutsch-Englisch und Chinesisch-Englisch sind jetzt auf Hugging Face verfügbar. Wir zeigen die Installation und sprachübergreifende Suche.
Colorful "EMBEDDINGS" text above a pile of yellow smileys on a black background with decorative lines at the top.
Scott Martens
Scott Martens • 13 Minuten gelesen

Jina AI hat seine hochmodernen Open-Source bilingualen Embedding-Modelle für Deutsch-Englisch und Chinesisch-Englisch Sprachpaare über Hugging Face veröffentlicht.

Ich bin ein Berliner: German-English Bilingual Embeddings with 8K Token Length
Jina AI introduces a German/English bilingual embedding model, featuring an extensive 8,192-token length, specifically designed to support German businesses thriving in the U.S. market.
GitHub
8K Token-Length Bilingual Embeddings Break Language Barriers in Chinese and English
The first bilingual Chinese-English embedding model with 8192 token-length.
Discord

In diesem Tutorial werden wir durch eine minimale Installation und einen Anwendungsfall gehen, der Folgendes umfasst:

  1. Herunterladen von Jina Embedding-Modellen von Hugging Face.
  2. Verwendung der Modelle zur Erstellung von Encodierungen aus Texten in Deutsch und Englisch.
  3. Aufbau einer sehr rudimentären Embedding-basierten neuralen Suchmaschine für sprachübergreifende Abfragen.

Wir zeigen Ihnen, wie Sie Jina Embeddings verwenden können, um englische Abfragen zu schreiben, die passende Texte auf Deutsch finden und umgekehrt.

Dieses Tutorial funktioniert genauso für das chinesische Modell. Folgen Sie einfach den Anweisungen im Abschnitt (gegen Ende) mit dem Titel Querying in Chinese, um das Chinesisch-Englisch bilinguale Modell und ein Beispieldokument auf Chinesisch zu erhalten.

jinaai/jina-embeddings-v2-base-de · Hugging Face
We're on a journey to advance and democratize artificial intelligence through open source and open science.
jinaai/jina-embeddings-v2-base-zh · Hugging Face
We're on a journey to advance and democratize artificial intelligence through open source and open science.

tagBilinguale Embedding-Modelle

Ein bilinguales Embedding-Modell ist ein Modell, das Texte in zwei Sprachen – in diesem Tutorial Deutsch und Englisch, für das chinesische Modell Chinesisch und Englisch – in denselben Embedding-Raum abbildet. Und zwar so, dass wenn ein deutscher Text und ein englischer Text dasselbe bedeuten, ihre entsprechenden Embedding-Vektoren nahe beieinander liegen.

Solche Modelle eignen sich sehr gut für sprachübergreifende Informationsabruf-Anwendungen, die wir in diesem Tutorial zeigen werden, können aber auch als Grundlage für RAG-basierte Chatbots, mehrsprachige Textkategorisierung, Zusammenfassung, Stimmungsanalyse und alle anderen Anwendungen dienen, die Embeddings verwenden. Mit solchen Modellen können Sie Texte in beiden Sprachen behandeln, als wären sie in derselben Sprache geschrieben.

Obwohl viele große Sprachmodelle behaupten, viele verschiedene Sprachen zu unterstützen, unterstützen sie nicht alle Sprachen gleichermaßen. Es gibt zunehmend Fragen zu Verzerrungen, die durch die Dominanz des Englischen im Internet und durch die weite Verbreitung maschinell übersetzter Texte verursacht werden. Durch die Konzentration auf zwei Sprachen können wir die Embedding-Qualität für beide besser kontrollieren und Verzerrungen minimieren, während wir viel kleinere Modelle mit ähnlicher oder höherer Leistung produzieren als riesige Modelle, die vorgeben, Dutzende von Sprachen zu beherrschen.

Die bilingualen Modelle von Jina Embeddings v2 unterstützen 8.192 Eingabe-Kontexttoken, wodurch sie nicht nur zwei Sprachen unterstützen können, sondern auch vergleichsweise große Textsegmente im Vergleich zu ähnlichen Modellen. Dies macht sie ideal für komplexere Anwendungsfälle, bei denen viel mehr Textinformationen in Embeddings verarbeitet werden müssen.

tagMachen Sie mit auf Google Colab

Dieses Tutorial hat ein begleitendes Notebook, das Sie auf Google Colab oder lokal auf Ihrem eigenen System ausführen können.

Google Colaboratory

tagInstallation der Voraussetzungen

Stellen Sie sicher, dass die aktuelle Umgebung die relevanten Bibliotheken installiert hat. Sie benötigen die neueste Version von transformers, führen Sie also selbst wenn es bereits installiert ist:

pip install -U transformers 

Dieses Tutorial wird die FAISS-Bibliothek von Meta für Vektorsuche und -vergleich verwenden. Zur Installation führen Sie aus:

pip install faiss-cpu

Wir werden auch Beautiful Soup verwenden, um die Eingabedaten in diesem Tutorial zu verarbeiten, stellen Sie also sicher, dass es installiert ist:

pip install bs4

tagZugang zu Hugging Face

Sie benötigen Zugang zu Hugging Face, insbesondere ein Konto und einen Zugriffstoken zum Herunterladen von Modellen.

Wenn Sie noch kein Konto bei Hugging Face haben:

Gehen Sie zu https://huggingface.co/ und Sie sollten oben rechts auf der Seite einen "Sign Up"-Button sehen. Klicken Sie darauf und folgen Sie den Anweisungen, um ein neues Konto zu erstellen.

Die Hugging Face Webseite mit hervorgehobenem "Sign Up"-Button.

Nachdem Sie sich in Ihr Konto eingeloggt haben:

Folgen Sie den Anweisungen auf der Hugging Face Website, um einen Zugriffstoken zu erhalten.

User access tokens
We're on a journey to advance and democratize artificial intelligence through open source and open science.

Sie müssen dieses Token in eine Umgebungsvariable namens HF_TOKEN kopieren. Wenn Sie in einem Notebook (zum Beispiel in Google Colab) arbeiten oder es intern in einem Python-Programm setzen, verwenden Sie folgenden Python-Code:

import os

os.environ['HF_TOKEN'] = "<your token here>"

In Ihrer Shell verwenden Sie die jeweilige Syntax zum Setzen einer Umgebungsvariable. In bash:

export HF_TOKEN="<your token here>"

tagJina Embeddings v2 für Deutsch und Englisch herunterladen

Sobald Ihr Token gesetzt ist, können Sie das zweisprachige Deutsch-Englisch Jina Embeddings Modell mit der transformers Bibliothek herunterladen:

from transformers import AutoModel

model = AutoModel.from_pretrained('jinaai/jina-embeddings-v2-base-de', trust_remote_code=True)

Dies kann beim ersten Mal mehrere Minuten dauern, aber das Modell wird danach lokal zwischengespeichert, also keine Sorge, wenn Sie dieses Tutorial später neu starten.

tagEnglischsprachige Daten herunterladen

Für dieses Tutorial werden wir die englischsprachige Version des Buches Pro Git: Everything You Need to Know About Git verwenden. Dieses Buch ist auch auf Chinesisch und Deutsch verfügbar, was wir später in diesem Tutorial nutzen werden.

Um die EPUB-Version herunterzuladen, führen Sie folgenden Befehl aus:

wget -O progit-en.epub https://open.umn.edu/opentextbooks/formats/3437

Dies kopiert das Buch in eine Datei namens progit-en.epub im lokalen Verzeichnis.

Das Cover der Druckausgabe von "Pro Git" von Scott Chacon und Ben Straub.
Das Cover der Druckausgabe.

Alternativ können Sie auch einfach den Link https://open.umn.edu/opentextbooks/formats/3437 besuchen, um es auf ein lokales Laufwerk herunterzuladen. Es ist unter der Creative Commons Attribution Non Commercial Share Alike 3.0 Lizenz verfügbar.

tagVerarbeitung der Daten

Dieser spezielle Text hat eine interne Struktur aus hierarchischen Abschnitten, die wir leicht finden können, indem wir nach dem <section> Tag in den zugrundeliegenden XHTML-Daten suchen. Der folgende Code liest die EPUB-Datei und teilt sie anhand der internen Struktur einer EPUB-Datei und des <section> Tags auf, konvertiert dann jeden Abschnitt in Klartext ohne XHTML-Tags. Er erstellt ein Python-Dictionary, dessen Schlüssel eine Reihe von Zeichenketten sind, die den Standort jedes Abschnitts im Buch angeben, und dessen Werte der Klartext-Inhalt dieses Abschnitts sind.

from zipfile import ZipFile
from bs4 import BeautifulSoup
import copy

def decompose_epub(file_name):
    
    def to_top_text(section):
        selected = copy.copy(section)
				while next_section := selected.find("section"):
            next_section.decompose()
        return selected.get_text().strip()

    ret = {}
    with ZipFile(file_name, 'r') as zip:
        for name in zip.namelist():
            if name.endswith(".xhtml"):
                data = zip.read(name)
                doc = BeautifulSoup(data.decode('utf-8'), 'html.parser')
                ret[name + ":top"] = to_top_text(doc)
                for num, sect in enumerate(doc.find_all("section")):
                    ret[name + f"::{num}"] = to_top_text(sect)
    return ret

Führen Sie dann die Funktion decompose_epub für die zuvor heruntergeladene EPUB-Datei aus:

book_data = decompose_epub("progit-en.epub")

Die Variable book_data wird nun 583 Abschnitte enthalten. Zum Beispiel:

print(book_data['EPUB/ch01-getting-started.xhtml::12'])

Ergebnis:

The Command Line
There are a lot of different ways to use Git.
There are the original command-line tools, and there are many graphical user interfaces of varying capabilities.
For this book, we will be using Git on the command line.
For one, the command line is the only place you can run all Git commands — most of the GUIs implement only a partial subset of Git functionality for simplicity.
If you know how to run the command-line version, you can probably also figure out how to run the GUI version, while the opposite is not necessarily true.
Also, while your choice of graphical client is a matter of personal taste, all users will have the command-line tools installed and available.
So we will expect you to know how to open Terminal in macOS or Command Prompt or PowerShell in Windows.
If you don't know what we're talking about here, you may need to stop and research that quickly so that you can follow the rest of the examples and descriptions in this book.

tagGenerierung und Indexierung von Embeddings mit Jina Embeddings v2 und FAISS

Für jeden der 583 Abschnitte werden wir ein Embedding generieren und in einem FAISS-Index speichern. Jina Embeddings v2 Modelle akzeptieren Eingaben von bis zu 8192 Tokens, was groß genug ist, dass wir für ein Buch wie dieses keine weitere Textsegmentierung durchführen oder überprüfen müssen, ob ein Abschnitt zu viele Tokens hat. Der längste Abschnitt im Buch hat ungefähr 12.000 Zeichen, was für normales Englisch weit unter der 8k Token-Grenze liegen sollte.

Um ein einzelnes Embedding zu generieren, verwenden Sie die encode Methode des heruntergeladenen Modells. Zum Beispiel:

model.encode([book_data['EPUB/ch01-getting-started.xhtml::12']])

Dies gibt ein Array mit einem einzelnen 768-dimensionalen Vektor zurück:

array([[ 6.11135997e-02,  1.67829826e-01, -1.94809273e-01,
         4.45595086e-02,  3.28837298e-02, -1.33441269e-01,
         1.35364473e-01, -1.23119736e-02,  7.51526654e-02,
        -4.25386652e-02, -6.91794455e-02,  1.03527725e-01,
        -2.90831417e-01, -6.21018047e-03, -2.16205455e-02,
        -2.20803712e-02,  1.50471330e-01, -3.31433356e-01,
        -1.48741454e-01, -2.10959971e-01,  8.80039856e-02,
				....

Das ist ein Embedding.

Jina Embeddings Modelle sind für die Batch-Verarbeitung eingerichtet. Die optimale Batch-Größe hängt von der Hardware ab, die Sie beim Ausführen verwenden. Eine große Batch-Größe riskiert, dass der Speicher ausgeht. Eine kleine Batch-Größe wird länger zur Verarbeitung brauchen.

⚠️
Das Setzen von batch_size=5 funktionierte auf Google Colab in der kostenlosen Version ohne GPU und brauchte etwa eine Stunde, um den gesamten Satz von Embeddings zu generieren.

In der Produktion empfehlen wir die Verwendung von leistungsfähigerer Hardware oder die Nutzung des Embedding API-Service von Jina AI. Folgen Sie dem Link unten, um herauszufinden, wie es funktioniert und wie Sie mit kostenlosem Zugang beginnen können.

Embedding API
Top-performing, 8192-token context length, $100 for 1.25B tokens, seamless OpenAI alternative, free trial

Der folgende Code generiert die Embeddings und speichert sie in einem FAISS-Index. Setzen Sie die Variable batch_size entsprechend Ihren Ressourcen.

import faiss

batch_size = 5

vector_data = []
faiss_index = faiss.IndexFlatIP(768)

data = [(key, txt) for key, txt in book_data.items()]
batches = [data[i:i + batch_size] for i in range(0, len(data), batch_size)]

for ind, batch in enumerate(batches):
    print(f"Processing batch {ind + 1} of {len(batches)}")
    batch_embeddings = model.encode([x[1] for x in batch], normalize_embeddings=True)
    vector_data.extend(batch)
    faiss_index.add(batch_embeddings)

Bei der Arbeit in einer Produktionsumgebung ist ein Python-Dictionary keine angemessene oder leistungsfähige Möglichkeit, Dokumente und Embeddings zu handhaben. Sie sollten eine speziell entwickelte Vektordatenbank verwenden, die ihre eigenen Anweisungen für die Dateneinfügung hat.

tagAuf Deutsch abfragen für englische Ergebnisse

Wenn wir etwas aus diesem Textset abfragen, passiert Folgendes:

  1. Das Jina Embeddings Deutsch-Englisch Modell erstellt ein Embedding für die Abfrage.
  2. Wir verwenden den FAISS-Index (faiss_index), um das gespeicherte Embedding mit dem höchsten Kosinus zur Abfrage-Embedding zu erhalten und seine Position im Index zurückzugeben.
  3. Wir schauen den entsprechenden Text im Vector-Data-Array (vector_data) nach und geben den Kosinus, den Standort des Textes und den Text selbst aus.

Das macht die folgende query Funktion.

def query(query_str):
    query = model.encode([query_str], normalize_embeddings=True)
    cosine, index = faiss_index.search(query, 1)
    print(f"Cosine: {cosine[0][0]}")
    loc, txt = vector_data[index[0][0]]
    print(f"Location: {loc}\\nText:\\n\\n{txt}")

Lassen Sie uns das ausprobieren.

# Translation: "How do I roll back to a previous version?"
query("Wie kann ich auf eine frühere Version zurücksetzen?")

Ergebnis:

Cosine: 0.5202275514602661
Location: EPUB/ch02-git-basics-chapter.xhtml::20
Text:

Undoing things with git restore
Git version 2.23.0 introduced a new command: git restore.
It's basically an alternative to git reset which we just covered.
From Git version 2.23.0 onwards, Git will use git restore instead of git reset for many undo operations.
Let's retrace our steps, and undo things with git restore instead of git reset.

Dies ist eine sehr gute Antwort auf die Frage. Versuchen wir eine weitere:

# Translation: "What does 'version control' mean?"
query("Was bedeutet 'Versionsverwaltung'?")

Ergebnis:

Cosine: 0.5001817941665649
Location: EPUB/ch01-getting-started.xhtml::1
Text:

About Version Control

What is "version control", and why should you care?
Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
For the examples in this book, you will use software source code as the files being version controlled, though in reality you can do this with nearly any type of file on a computer.
If you are a graphic or web designer and want to keep every version of an image or layout (which you would most certainly want to), a Version Control System (VCS) is a very wise thing to use.
It allows you to revert selected files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more.
Using a VCS also generally means that if you screw things up or lose files, you can easily recover.
In addition, you get all this for very little overhead.

Probieren Sie es mit Ihren eigenen deutschen Fragen aus, um zu sehen, wie gut es funktioniert. Als allgemeine Praxis sollten Sie bei der Textinformationssuche drei bis fünf Antworten anfordern statt nur einer. Die beste Antwort ist oft nicht die erste.

tagDie Rollen umkehren: Deutsche Dokumente mit Englisch abfragen

Das Buch Pro Git: Everything You Need to Know About Git ist auch auf Deutsch verfügbar. Wir können dasselbe Modell verwenden, um diese Demo mit umgekehrten Sprachen durchzuführen.

E-Book herunterladen:

wget -O progit-de.epub https://open.umn.edu/opentextbooks/formats/3454

Dies kopiert das Buch in eine Datei namens progit-de.epub. Dann verarbeiten wir es auf die gleiche Weise wie beim englischen Buch:

book_data = decompose_epub("progit-de.epub")

Und dann generieren wir die Embeddings auf die gleiche Weise wie zuvor:

batch_size = 5

vector_data = []
faiss_index = faiss.IndexFlatIP(768)

data = [(key, txt) for key, txt in book_data.items()]
batches = [data[i:i + batch_size] for i in range(0, len(data), batch_size)]

for ind, batch in enumerate(batches):
    print(f"Processing batch {ind + 1} of {len(batches)}")
    batch_embeddings = model.encode([x[1] for x in batch], normalize_embeddings=True)
    vector_data.extend(batch)
    faiss_index.add(batch_embeddings)

Wir können jetzt die gleiche query-Funktion verwenden, um auf Englisch nach Antworten auf Deutsch zu suchen:

query("What is version control?")

Ergebnis:

Cosine: 0.6719034910202026
Location: EPUB/ch01-getting-started.xhtml::1
Text:

Was ist Versionsverwaltung?

Was ist „Versionsverwaltung", und warum sollten Sie sich dafür interessieren?
Versionsverwaltung ist ein System, welches die Änderungen an einer oder einer Reihe von Dateien über die Zeit hinweg protokolliert, sodass man später auf eine bestimmte Version zurückgreifen kann.
Die Dateien, die in den Beispielen in diesem Buch unter Versionsverwaltung gestellt werden, enthalten Quelltext von Software, tatsächlich kann in der Praxis nahezu jede Art von Datei per Versionsverwaltung nachverfolgt werden.
Als Grafik- oder Webdesigner möchte man zum Beispiel in der Lage sein, jede Version eines Bildes oder Layouts nachverfolgen zu können. Als solcher wäre es deshalb ratsam, ein Versionsverwaltungssystem (engl. Version Control System, VCS) einzusetzen.
Ein solches System erlaubt es, einzelne Dateien oder auch ein ganzes Projekt in einen früheren Zustand zurückzuversetzen, nachzuvollziehen, wer zuletzt welche Änderungen vorgenommen hat, die möglicherweise Probleme verursachen, herauszufinden wer eine Änderung ursprünglich vorgenommen hat und viele weitere Dinge.
Ein Versionsverwaltungssystem bietet allgemein die Möglichkeit, jederzeit zu einem vorherigen, funktionierenden Zustand zurückzukehren, auch wenn man einmal Mist gebaut oder aus irgendeinem Grund Dateien verloren hat.
All diese Vorteile erhält man für einen nur sehr geringen, zusätzlichen Aufwand.

Dieser Abschnittstitel übersetzt sich als "What is version control?", also ist dies eine gute Antwort.

tagAbfragen auf Chinesisch

Diese Beispiele funktionieren auf genau die gleiche Weise mit Jina Embeddings v2 für Chinesisch und Englisch. Um stattdessen das chinesische Modell zu verwenden, führen Sie einfach Folgendes aus:

from transformers import AutoModel

model = AutoModel.from_pretrained('jinaai/jina-embeddings-v2-base-zh', trust_remote_code=True)

Und um die chinesische Ausgabe von Pro Git: Everything You Need to Know About Git zu erhalten:

wget -O progit-zh.epub https://open.umn.edu/opentextbooks/formats/3455

Dann verarbeiten Sie das chinesische Buch:

book_data = decompose_epub("progit-zh.epub")

Der gesamte andere Code in diesem Tutorial wird auf die gleiche Weise funktionieren.

tagDie Zukunft: Mehr Sprachen, einschließlich Programmierung

Wir werden in der unmittelbaren Zukunft weitere zweisprachige Modelle einführen, wobei Spanisch und Japanisch bereits in Arbeit sind, sowie ein Modell, das Englisch und mehrere wichtige Programmiersprachen unterstützt. Diese Modelle eignen sich ideal für internationale Unternehmen, die mehrsprachige Informationen verwalten, und können als Grundstein für KI-gestützte Informationsgewinnung und RAG-basierte generative Sprachmodelle dienen, die sich in verschiedene moderne KI-Anwendungsfälle einfügen.

Jina AIs Modelle sind kompakt und gehören zu den besten ihrer Klasse, was zeigt, dass man nicht das größte Modell braucht, um die beste Leistung zu erzielen. Durch den Fokus auf zweisprachige Leistung produzieren wir Modelle, die sowohl besser in diesen Sprachen sind, sich leichter anpassen lassen und kostengünstiger sind als große Modelle, die mit unkurierten Daten trainiert wurden.

Jina Embeddings sind verfügbar auf Hugging Face, im AWS Marketplace zur Verwendung in Sagemaker und über die Jina Embeddings Web API. Sie sind vollständig in viele KI-Prozess-Frameworks und Vektordatenbanken integriert.

Besuchen Sie die Jina Embeddings Website für weitere Informationen oder kontaktieren Sie uns, um zu besprechen, wie Jina AIs Angebote in Ihre Geschäftsprozesse passen können.

Embedding API
Top-performing, 8192-token context length, $100 for 1.25B tokens, seamless OpenAI alternative, free trial
Kategorien:
Tech-Blog
rss_feed
Büros
location_on
Sunnyvale, Kalifornien
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, USA
location_on
Berlin, Deutschland (Hauptsitz)
Prinzessinnenstraße 19-20, 10969 Berlin, Deutschland
location_on
Peking, China
Ebene 5, Gebäude 6, Nr. 48 Haidian West St. Peking, China
location_on
Shenzhen, China
402 Etage 4, Fu'an Technology Building, Shenzhen, China
Stiftung durchsuchen
Leser
Einbettungen
Reranker
DeepSearch
Klassifikator
Segmentierer
API-Dokumentation
Jina API-Schlüssel abrufen
Ratenbegrenzung
API-Status
Unternehmen
Über uns
Kontaktieren Sie unseren Vertrieb
Pressemitteilungen
Praktikantenprogramm
Begleiten Sie uns
open_in_new
Logo herunterladen
open_in_new
Bedingungen
Sicherheit
Terms & amp; Bedingungen
Privatsphäre
Cookie-Einstellungen
email
Jina AI © 2020-2025.