Mittelstufe 11 Min.Embeddings

Sentence Transformers : die Embeddings in lokal

Direkte Antwort

Sentence Transformers ist eine Python-Bibliothek, die ein Embedding-Modell von Hugging Face lädt und Texte mit model.encode auf der CPU oder GPU in Vektoren umwandelt; model.similarity vergleicht anschließend diese Vektoren. Wählen Sie für Französisch ein mehrsprachiges Modell: Ein englischsprachiges Modell wie all-MiniLM-L6-v2 bewertet französische Texte schlecht. Halten Sie Ihre Textpassagen unter der maximalen Länge des Modells, da darüber hinausgehender Text ohne Warnung abgeschnitten wird.

Dieser Leitfaden zeigt, wie Sie die Bibliothek installieren, ein Korpus kodieren, ein Modell auswählen, das Französisch versteht, unbemerkte Fehler vermeiden (Längenbegrenzung, Anfragepräfixe, Vermischung zweier Modelle) und die Indexierung auf Ihrem Rechner beschleunigen. Er stellt außerdem Sentence Transformers der Embedding-API von Ollama gegenüber, um Ihnen bei der Entscheidung zu helfen, welche der beiden Lösungen Sie verwenden sollen.

Von Mohamed Meguedmi·Aktualisierung 2026-09-30·Unter Windows, macOS und Linux getestet

#Was ein Embedding ist und was die Bibliothek tut

Ein Embedding-Modell wandelt einen Text in eine Liste von Zahlen, einen Vektor, um, sodass zwei Texte mit ähnlicher Bedeutung nahe beieinanderliegende Vektoren haben. Die Dokumentation von Sentence Transformers beschreibt diese sogenannten Bi-Encoder als Modelle, die für einen Text eine Repräsentation fester Größe berechnen, wobei die Embedding-Berechnung oft effizient und die Ähnlichkeitsberechnung sehr schnell ist. Das ist der Ausgangsbaustein von RAG: Man kodiert die Frage, sucht die Textpassagen mit den nächstgelegenen Vektoren und gibt diese Passagen an das Sprachmodell weiter. Zwei Konsequenzen sollten Sie sich merken: Das Modell, das die Dokumente kodiert, muss auch die Fragen kodieren, und sein Verständnis von „Nähe“ stammt aus seinem Training. Ein Modell, das hauptsächlich auf Englisch trainiert wurde, beurteilt französische Texte wenig zuverlässig.

Das erste Beispiel aus der offiziellen Dokumentation
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
sentences = [
    "The weather is lovely today.",
    "It's so sunny outside!",
    "He drove to the stadium.",
]
embeddings = model.encode(sentences)
print(embeddings.shape)  # [3, 384]
similarities = model.similarity(embeddings, embeddings)

Dieses Modell erzeugt Vektoren mit 384 Dimensionen und dient als Einstiegsbeispiel, ist aber für Englisch ausgelegt: Ersetzen Sie es für ein französischsprachiges Korpus wie weiter unten beschrieben. Die Bibliothek lädt das Modell automatisch auf das beste verfügbare Gerät (cuda, mps oder cpu), und Sie können die Auswahl mit dem Parameter device erzwingen.

#Installieren und ein französisches Korpus kodieren

Das RAG-Local-Kit

Ihre Dokumente, Ihre KI: ein zuverlässiges lokales RAG für Ihre PDFs, Notizen und E-Mails – ohne Daten in die Cloud zu senden.

  • Lebenslanger Online-Zugang
  • PDF + Dateien
  • Erstattung binnen 30 Tagen
  1. 01
    Bibliothek installieren
    Verwenden Sie pip install -U sentence-transformers in einer Python-Umgebung. Die Version 6.1.0 ist am 18. September 2026 erschienen und erfordert laut PyPI Python 3.10 oder neuer.
  2. 02
    Ein mehrsprachiges Modell auswählen
    Wählen Sie ein Modell, das als mehrsprachig ausgewiesen ist (siehe Tabelle weiter unten), kein all-*-Modell, das für Englisch trainiert wurde.
  3. 03
    Dokumente stapelweise kodieren
    Übergeben Sie eine Liste von Texten an encode: Die Bibliothek verarbeitet sie in Batches, wodurch die Hardware deutlich besser genutzt wird als bei einem Aufruf pro Text.
  4. 04
    Die Frage mit dem gleichen Modell codieren
    Verwenden Sie dasselbe Modell und dieselben Präfixe wie für die Dokumente und vergleichen Sie anschließend mit similarity.
  5. 05
    Den Modellnamen zusammen mit dem Index speichern
    Notieren Sie den Namen in den Metadaten: Wenn Sie das Modell wechseln, müssen Sie das gesamte Korpus erneut kodieren.
Semantische Suche mit einem multilingualen Modell
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("intfloat/multilingual-e5-large")

docs = [
    "Le contrat peut être résilié avec un préavis de trois mois.",
    "La facture est payable à trente jours fin de mois.",
]
question = "Quel est le délai pour mettre fin au contrat ?"

doc_emb = model.encode(docs, prompt="passage: ", normalize_embeddings=True)
q_emb = model.encode(question, prompt="query: ", normalize_embeddings=True)
print(model.similarity(q_emb, doc_emb))

Die Dokumentation von Sentence Transformers nennt für dieses Modell das Präfix query: für Fragen und passage: für Dokumente. Ohne das jeweilige Präfix verschlechtert sich die Qualität des Retrievals, ohne dass eine Fehlermeldung erscheint. Der Parameter prompt von encode wendet das Präfix auf jeden Text an.

#Ein Modell auswählen, das Französisch versteht

Die Dokumentation schlägt ursprüngliche Modelle vor und empfiehlt, die MTEB-Rangliste als Inspirationsquelle heranzuziehen, mit zwei Vorbehalten: Modelle aussortieren, die für Ihre Hardware zu groß sind, und experimentieren, denn gut platzierte Modelle schneiden bei Ihren eigenen Aufgaben nicht unbedingt gut ab. Die folgende Tabelle gibt wieder, was die Dokumentation über die genannten Modelle sagt.

Modelle, die in der Dokumentation von Sentence Transformers genannt werden
ModellWas die Dokumentation sagtFür Französisch
all-MiniLM-L6-v2Etwa 5-mal schneller als all-mpnet-base-v2, gute Qualität; 384 Dimensionen, maximal 256 TokensNein: auf Englisch ausgerichtet
all-mpnet-base-v2Beste Qualität innerhalb der all-*-Familie, Allround-ModellNein: auf Englisch ausgerichtet
multi-qa-mpnet-base-cos-v1Für die semantische Suche anhand von 215 Millionen Frage-Antwort-Paaren trainiertNein: auf Englisch ausgerichtet
paraphrase-multilingual-MiniLM-L12-v2Trainiert auf parallelen Daten für mehr als 50 SprachenJa, konzipiert für die Satzähnlichkeit
paraphrase-multilingual-mpnet-base-v2Gleiche Familie, mehr als 50 SprachenJa, schwerer
distiluse-base-multilingual-cased-v1Unterstützt 15 Sprachen, darunter FranzösischJa, aber nur für eine begrenzte Auswahl an Sprachen
multilingual-e5-largeErwartet die Präfixe query: und passage: (wie in der Dokumentation beschrieben)Ja, mehrsprachiges Retrieval
i
Satzähnlichkeit und Dokumentensuche sind nicht dieselbe Aufgabe
Ein Modell, das darauf trainiert wurde, Paraphrasen zu erkennen, ist nicht unbedingt am besten geeignet, um eine Passage zu finden, die eine Frage beantwortet. Bevorzugen Sie für RAG ein Modell, das für die Suche trainiert wurde. Unsere Leitfäden zu französischen Embeddings und zu BGE-M3 vergleichen die Kandidaten.

#Fehler, die ein Korpus ruinieren, ohne eine Fehlermeldung auszulösen

Ein englischsprachiges Modell für französische Texte
Alles funktioniert, und trotzdem liefert die Informationssuche verfälschte Ergebnisse. Das ist der häufigste Fehler.
Abschnitte, die länger als das Modelllimit sind
Die Dokumentation stellt klar, dass längere Texte auf die ersten max_seq_length Tokens gekürzt werden: Das Ende jedes langen Abschnitts bleibt unsichtbar.
Unterschiedliche Modelle für Dokumente und Fragen
Die Vektoren bilden nicht mehr dasselbe ab: Es entstehen unsinnige Ergebnisse, meist weil nur ein Teil der Verarbeitungskette aktualisiert wurde.
Vergessene Präfixe
Einige Modelle benötigen unterschiedliche Präfixe für Fragen und Dokumente; lässt man sie weg, verschlechtert sich die Qualität des Retrievals.
Nicht normalisierte Vektoren mit einer ungeeigneten Bewertungsfunktion
Wenn das Modell Kosinusähnlichkeit erwartet, normalisieren Sie die Vektoren oder verwenden Sie das passende Ähnlichkeitsmaß; andernfalls verschlechtert sich die Rangfolge.

#Ähnlichkeit messen: Normalisierung und Kosinus

Zwei Vektoren werden mithilfe eines Ähnlichkeitsmaßes verglichen, meist der Kosinusähnlichkeit. Die Dokumentation von Ollama gibt an, dass dessen Endpunkt normalisierte Vektoren zurückgibt, und empfiehlt die Kosinusähnlichkeit für die meisten semantischen Suchen. Bei normalisierten Vektoren liefern Kosinusähnlichkeit und Skalarprodukt dieselbe Rangfolge, sodass ein für das Skalarprodukt optimierter Index verwendet werden kann. Achten Sie auf Konsistenz: Das Ähnlichkeitsmaß der Vektordatenbank muss dem vom Modell erwarteten Maß entsprechen, das in seiner Modellbeschreibung angegeben ist.

Zur Textlänge nennt die Dokumentation eine Größenordnung: 512 Tokens für viele Modelle vom Typ BERT, also 300 bis 400 Wörter im Englischen, und 256 Tokens für all-MiniLM-L6-v2. Französisch benötigt mehr Tokens pro Wort: Teilen Sie Ihre Textpassagen so auf, dass sie mit ausreichend Spielraum unter der Grenze bleiben, und prüfen Sie model.max_seq_length. Sie können diesen Wert verringern, aber nicht über das hinaus erhöhen, was das Modell unterstützt. Die Dokumentation ergänzt, dass ein auf kurzen Texten trainiertes Modell lange Texte weniger gut repräsentiert.

#Auf dem eigenen Rechner schnell indexieren

Prozessor oder GPU
Das Modell läuft auf dem besten verfügbaren Gerät. Eine GPU beschleunigt die Indexierung großer Datenmengen, macht bei einer einzelnen Abfrage aber kaum einen Unterschied.
Reduzierte numerische Präzision
Auf einer GPU beschleunigt der Wechsel zu float16 oder bfloat16 laut Dokumentation die Inferenz bei einem minimalen Genauigkeitsverlust.
ONNX- und OpenVINO-Backends
Die Dokumentation nennt mögliche Beschleunigungen um den Faktor 2 bis 3, je nach Hardware und Backend; testen Sie diese auf Ihrem Rechner.
Mehrere GPU oder Prozesse
encode akzeptiert eine Liste von Geräten: nützlich bei großen Korpora, weniger bei kleinen wegen des Startaufwands.
Kompaktere Vektoren
Die binäre oder ganzzahlige Quantisierung von Vektoren und Modelle mit reduzierbarer Vektordimensionalität verringern den Speicherbedarf und die Suchkosten.
Caching und Indexierung
Kodieren Sie unveränderte Dokumente nicht erneut: Der Cache-Schlüssel richtet sich nach dem Inhalt, nicht nach dem Dateinamen. Auf einem Rechner, der auch ein Sprachmodell bereitstellt, sollten Sie dann indexieren, wenn niemand es nutzt.

#Wie viel Speicher ein Vektorindex benötigt

Die Größe eines Index berechnet sich, indem man die Anzahl der Vektoren mit ihrer Dimension und mit vier Bytes multipliziert, sofern die Zahlen als float32 vorliegen. Ein Vektor mit 384 Dimensionen belegt 1.536 Bytes: Eine Million Textpassagen entspricht etwa 1,5 GB. Bei 1.024 Dimensionen belegt dieselbe Million etwa 4 GB. Diese Werte schließen Metadaten und die Indexstrukturen der Vektordatenbank aus. Die Wahl des Modells wirkt sich daher direkt auf den für die Suche benötigten Arbeitsspeicher aus, und die oben erwähnte Quantisierung der Vektoren kann diesen Speicherbedarf verringern.

#Sentence Transformers oder die Embedding-API von Ollama

Ollama bietet ebenfalls Embeddings an: Die Dokumentation stellt fest, dass der Befehl ollama run peut Vektoren erzeugt und dass der API-Zugriff api/embed normalisierte Vektoren nach L2 zurückgibt. Sie empfiehlt die Modelle embeddinggemma, qwen3-embedding und all-minilm mit typischen Vektordimensionen von 384 bis 1.024 und erinnert an zwei Regeln: Cosinus für die meisten Suchvorgänge und identisches Modell für Indexierung und Abfrage.

Welches Tool für Ihre Embeddings?
KriteriumSentence TransformersAPI für Embeddings von Ollama
InstallationPython-Bibliothek zum InstallierenIst bereits vorhanden, wenn Sie Ollama verwenden
ModellauswahlJedes kompatible Modell von Hugging FaceModelle aus der Ollama-Bibliothek
Kontrolle über Präfixe und LängeFeine Steuerung: prompt, max_seq_length, benannte PromptsJe nach Modell und Aufruf
Training oder Fine-TuningJa, die Bibliothek unterstützt diesNein
Typischer EinsatzMassenindexierung, Experimente, RerankingEinfache Integration in eine bereits auf Ollama aufgebaute Verarbeitungskette

#Das Embedding dient nur als erster Filter

Die Dokumentation von Sentence Transformers beschreibt den Bi-Encoder als erste Stufe einer zweistufigen Suche, bei der ein Cross-Encoder, auch Reranker genannt, die besten Ergebnisse neu ordnet. Der Cross-Encoder liest die Frage und jede Textpassage gemeinsam: Er ist langsamer, aber bei einer Handvoll Kandidaten präziser. Etwa zwanzig Textpassagen anhand ihrer Ähnlichkeit abzurufen und anschließend neu zu ordnen, um nur einige davon zu behalten, ist eine der kostengünstigsten Verbesserungen einer RAG-Pipeline. Der Leitfaden zum Reranker erläutert die Einrichtung im Detail; messen Sie den Zugewinn anhand Ihrer zwanzig Fragen, bevor Sie den Reranker beibehalten, denn er verursacht bei jeder Anfrage zusätzliche Latenz, erfordert die Pflege eines zweiten Modells und erhöht den Speicherverbrauch.

Bevor Sie überhaupt Modelle vergleichen, sollten Sie sich ansehen, was Ihr Korpus enthält: kurze, in sich geschlossene Sätze oder lange technische Absätze? Fragen, die als Stichwörter formuliert sind, oder vollständige Sätze? Die Antwort hilft Ihnen bei der Wahl der Längenbegrenzung, der Textaufteilung und des Modells. Ein Korpus mit dichten juristischen Texten erfordert andere Einstellungen als eine Sammlung kurzer Fragen und Antworten, und keine öffentliche Rangliste kann das für Sie beurteilen.

#Die Modellwahl vor dem Indexieren beurteilen

  1. 01
    Zwanzig echte Fragen formulieren
    Wählen Sie Fragen, die Ihre Nutzer stellen werden, formuliert mit deren Worten und nicht mit denen des Dokuments.
  2. 02
    Die erwartete Textstelle notieren
    Identifizieren Sie für jede Frage die Passage oder die Passagen, die die Antwort enthalten.
  3. 03
    Zwei oder drei Modelle vergleichen
    Codieren Sie dasselbe Korpus mit jedem Modell und überprüfen Sie, ob die richtige Textpassage unter den ersten fünf Ergebnissen erscheint.
  4. 04
    Bei jeder Änderung erneut ausführen
    Modell, Aufteilung in Textabschnitte oder Präfix geändert: Führen Sie diesen kleinen Test erneut aus, bevor Sie neu indexieren.

#FAQ

FAQ
Ist eine GPU für Sentence Transformers erforderlich?+
Nein. Embedding-Modelle sind klein genug, um auf einer CPU zu laufen, und die Bibliothek wählt automatisch das beste verfügbare Gerät aus. Eine GPU dient vor allem dazu, einen großen Korpus schneller zu indexieren; beim Encodieren einer einzigen Frage ist der Unterschied in den meisten Fällen gering.
Welches Sentence Transformers-Modell für Französisch wählen?+
Wählen Sie ein mehrsprachiges Modell: Die Dokumentation nennt paraphrase-multilingual-MiniLM-L12-v2 für über 50 Sprachen und multilingual-e5-large mit den Präfixen query: und passage:. Testen Sie zwei oder drei Kandidaten mit Ihren eigenen Fragen, statt sich ausschließlich auf die MTEB-Rangliste zu verlassen. Die Dokumentation weist darauf hin, dass diese Rangliste Ihre Ergebnisse nicht vorhersagt.
Kann man sein Gesprächsmodell zum Erstellen von Embeddings verwenden?+
Nein. Ein Embedding-Modell wird darauf trainiert, Texte mit ähnlicher Bedeutung nahe beieinander zu platzieren; ein Konversationsmodell hingegen nicht. Dadurch liefert die Suche schlechte Ergebnisse, obwohl der Code scheinbar fehlerfrei funktioniert. Verwenden Sie ein speziell dafür vorgesehenes Embedding-Modell, das vom Modell getrennt ist, das die Antworten formuliert.
Was passiert, wenn ich das Embedding-Modell wechsle?+
Das gesamte Korpus muss neu kodiert werden, da die Vektoren zweier Modelle nicht vergleichbar sind: Ihre Dimensionen und Koordinaten unterscheiden sich. Notieren Sie den Modellnamen zusammen mit dem Index und planen Sie vor dem Wechsel Rechenzeit für den Neuaufbau der Vektordatenbank ein. Lassen Sie den alten Index während des Vorgangs aktiv.
Was passiert, wenn mein Text die maximale Länge überschreitet?+
Der Text wird ohne Fehlermeldung auf die ersten max_seq_length Tokens gekürzt: Das Ende des Abschnitts wird bei der Suche ignoriert. Bei all-MiniLM-L6-v2 liegt die Grenze bei 256 Tokens. Teilen Sie Ihre Texte in Abschnitte auf, deren Länge mit ausreichend Abstand unter der Grenze des Modells liegt.
Sentence Transformers oder Ollama für die Embeddings?+
Sentence Transformers bietet mehr Kontrolle (Präfixe, Länge, Modelle von Hugging Face, Training). Die Ollama-API ist einfacher, wenn Ihre Verarbeitungskette bereits auf Ollama basiert. Verwenden Sie in beiden Fällen dasselbe Modell für die Indexierung und die Abfrage sowie das für dieses Modell empfohlene Ähnlichkeitsmaß.

#Weiterführende Informationen

Hat Ihnen dieser Guide geholfen?

Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.