Was verursacht eine Verschiebung der Embeddings nach der Neuindizierung derselben Dokumentbibliothek?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Embedding-Drift tritt auf, wenn die beim Darstellen der Bibliothek verwendeten Modelle, Texte, Encoder-Einstellungen, numerischen Verarbeitungspfade oder Vergleichsregeln beim erneuten Indexieren geändert werden.

Eine persönliche Wissensdatenbank kann vor und nach einer erneuten Erstellung dieselben PDFs, Notizen, Handbücher und Familienunterlagen enthalten und dennoch andere nächsten Nachbarn oder Ähnlichkeitswerte liefern. Einige Änderungen sind echter Embedding-Drift: Der für eine identische Eingabe erzeugte Vektor hat sich verändert. Andere sind Ingestion-Drift, bei der sich der an den Encoder gesendete Text geändert hat, oder Retrieval-Drift, bei der identische Vektoren mit anderen Metriken oder Indexeinstellungen durchsucht werden. Die erste diagnostische Grenze besteht daher darin, Quelldateien, extrahierten Text, Chunk-Identität, Rohvektoren und Ranglistenergebnisse als separate Artefakte zu vergleichen.

Tatsächlicher Vektor-Drift und scheinbarer Retrieval-Drift sind unterschiedlich

Tatsächlicher Drift bedeutet, dass derselbe normalisierte Text einen anderen Vektor erzeugt. Scheinbarer Drift bedeutet, dass der Vektor stabil ist, sich aber Chunk-Zugehörigkeit, Ähnlichkeitsmetrik, Filterung, Quantisierung oder die Suche nach ungefähren Nachbarn ändern und dadurch andere Ranglistenergebnisse entstehen.

Qdrant-Sammlungen definieren die Vektorgröße und die Distanzmetrik als Parameter auf Sammlungsebene. Das erneute Erstellen in einer Sammlung mit einer anderen Metrik kann Werte und Reihenfolge ändern, ohne die Embedding-Werte selbst zu verändern.

Wer nur die jeweils besten Suchergebnisse vergleicht, vermischt diese Ursachen. Eine Prüfsumme der Rohvektoren für festgelegte Testzeichenfolgen trennt Encoder-Drift von Index- oder Ranking-Drift.

Eine nicht festgelegte Modellrevision kann den Encoder ersetzen

Ein Modellname steht nicht immer dauerhaft für einen bestimmten Satz aus Gewichten und Konfigurationsdateien. Der Betreiber eines Repositorys kann Gewichte, Tokenizer-Dateien, Pooling-Konfigurationen oder Modellcode aktualisieren und dabei den öffentlichen Repository-Namen beibehalten.

Hugging-Face-Repositorys sind versionskontrolliert, und Downloads können eine bestimmte Revision statt des neuesten Branch-Standes verwenden.

Diese Ursache führt bei einem festen Testsatz zu umfassenden Veränderungen, häufig zusammen mit einem geänderten Modell-Commit, Cache-Pfad, Konfigurations-Hash oder Tokenizer-Asset. Sie unterscheidet sich vom dateispezifischen Drift, der nur Dateien betrifft, deren Extraktion oder Chunking geändert wurde.

Encoder-Optionen können Vektorlänge, Skalierung und Geometrie verändern

Dieselben Gewichte können unterschiedliche Repräsentationen erzeugen, wenn sich Pooling, Normalisierung, Genauigkeit, Prompt-Präfixe, maximale Sequenzlänge oder Ausgabedimensionen ändern.

Sentence Transformers stellt Encoder-Steuerungen für Genauigkeit, Normalisierung, Prompts und gekürzte Dimensionen bereit.

Eine Änderung der Normalisierung kann die Richtung beibehalten, während sich der Betrag des Vektors ändert; ein Prompt-Präfix kann jedes Dokument in einen anderen aufgabenspezifischen Raum verschieben; durch Kürzung können Dimensionen verloren gehen. Dies sind Konfigurationsänderungen und keine zufällige Instabilität.

Der an den Encoder übergebene Text ist möglicherweise nicht derselbe

Beim erneuten Indexieren können eine andere Parser-Version, ein anderer OCR-Pfad, eine andere Leerzeichen-Normalisierung, eine andere Seitenreihenfolge oder eine andere Chunking-Strategie verwendet werden, selbst wenn die Originaldateien Byte für Byte identisch sind.

Unstructured führt das Chunking nach der Partitionierung durch und dokumentiert, wie Chunk-Größe, Überlappung und Abschnittsgrenzen bestimmen, welcher Text in jeden Chunk gelangt.

Wenn eine Überschrift neu erkannt wird oder eine Seite durch OCR anders verarbeitet wird, können sich alle nachfolgenden Chunk-Grenzen verschieben. Die resultierenden Vektoren sind keine Drift-Repräsentationen identischer Eingaben, sondern repräsentieren andere Textabschnitte.

Nichtdeterministische Ausführung kann kleine numerische Unterschiede erzeugen

Parallele Kernel, Hardwarebibliotheken, die Reihenfolge von Operationen und zufällige Komponenten können dazu führen, dass sich wiederholte Inferenzläufe trotz desselben Modells und derselben Eingabe geringfügig unterscheiden.

PyTorch weist darauf hin, dass vollständige Reproduzierbarkeit über verschiedene Versionen, Plattformen oder Geräte hinweg nicht garantiert ist, und stellt für unterstützte Operationen Steuerungen für deterministische Algorithmen bereit.

Diese Ursache erzeugt normalerweise kleine Unterschiede bei den Koordinaten und keinen vollständig neu geordneten semantischen Raum. Bleibt die Kosinusähnlichkeit zwischen alten und neuen Testsatzvektoren extrem hoch, kann es sich um numerisches Rauschen handeln, das nur bei nahezu gleichen Ranglistenwerten sichtbar wird.

Genauigkeit und Quantisierung können Nachbarn an der Grenze verschieben

Bei einer erneuten Erstellung kann von Float32 auf Float16, Int8 oder ein anderes optimiertes Laufzeitprofil gewechselt werden, um Speicher zu sparen und den Durchsatz zu erhöhen.

ONNX Runtime erklärt, dass die Umwandlung in Float16 Genauigkeitsunterschiede verursachen kann, die Toleranztests erfordern.

Die semantische Auswirkung ist oft gering, aber eine lokale Bibliothek kann viele ähnliche Chunks enthalten. Kleine Koordinatenverschiebungen können die Reihenfolge von Nachbarn vertauschen, deren ursprüngliche Werte nahezu gleich waren.

Beim erneuten Indexieren können alte und neue Vektorgenerationen vermischt werden

Eine teilweise neu erstellte Sammlung kann Vektoren enthalten, die mit unterschiedlichen Modell-Commits, Chunk-Einstellungen, Dimensionen oder Normalisierungsregeln erzeugt wurden.

Gemischte Generationen führen zu unregelmäßigem Verhalten: Unveränderte Dokumente können stabil bleiben, während sich nur erneut verarbeitete Dateien verschieben, und Abfragevektoren können mit einem Teil der gespeicherten Sammlung inkompatibel sein.

Der Leitfaden von ZimaSpace zur semantischen NAS-Indexierung zeigt die angrenzende Abgrenzung: Quellbibliothek, extrahierte Datensätze, Embeddings und Suchindex sind separate Ebenen und dürfen nicht als ein unveränderliches Objekt behandelt werden.

FAQ

Sollte identischer Text immer bitgenau identische Embeddings erzeugen?

Nur bei einem festgelegten Modell, identischer Konfiguration, einem deterministischen Ausführungspfad sowie übereinstimmender Hardware- und Softwareumgebung. Andernfalls können dennoch kleine Gleitkommaunterschiede auftreten.

Können unveränderte Suchergebnisse beweisen, dass sich die Embeddings nicht verändert haben?

Nein. Vektoren können sich verschieben, ohne Ranggrenzen zu überschreiten. Vergleichen Sie Rohvektoren oder deren Hashes und Ähnlichkeiten anhand eines festen Testsatzes.

Deutet ein geänderter nächster Nachbar immer auf Modell-Drift hin?

Nein. Chunking, Filter, Distanzmetriken, Quantisierung und die Erstellung eines ungefähren Index können das Retrieval verändern, während die Ausgabe des Encoders stabil bleibt.

Tech- & KI-Zentrum

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.