Matroschka-Einbettungen: Details in verschiedenen Maßstäben
Was sind Matryoshka-Embeddings?
Bei der Entwicklung effizienter Vektorsuchsysteme besteht eine der größten Herausforderungen darin, die Speicherkosten zu verwalten und gleichzeitig eine akzeptable Latenzzeit und Wiederauffindbarkeit zu gewährleisten. Moderne Einbettungsmodelle geben Vektoren mit Hunderten oder Tausenden von Dimensionen aus, was zu einem erheblichen Speicher- und Rechenaufwand für den Rohvektor und den Index führt.
Traditionell wird der Speicherbedarf durch die Anwendung einer Quantisierungs- oder Dimensionalitätsreduzierungsmethode unmittelbar vor dem Aufbau des Index reduziert. Wir können beispielsweise Speicherplatz einsparen, indem wir die Genauigkeit mithilfe der Produktquantisierung (PQ) oder die Anzahl der Dimensionen mithilfe der Hauptkomponentenanalyse (PCA) verringern. Diese Methoden analysieren die gesamte Vektormenge, um eine kompaktere Menge zu finden, die die semantischen Beziehungen zwischen den Vektoren beibehält.
Diese Standardansätze sind zwar effektiv, aber sie reduzieren die Präzision oder Dimensionalität nur einmal und auf einer einzigen Ebene. Aber was wäre, wenn wir mehrere Detailschichten gleichzeitig beibehalten könnten, wie eine Pyramide von immer präziseren Darstellungen?
Das ist die Matrjoschka-Einbettung. Diese cleveren Konstrukte, die nach den russischen Schachtelpuppen benannt sind (siehe Abbildung), betten mehrere Darstellungsebenen in einen einzigen Vektor ein. Im Gegensatz zu herkömmlichen Nachbearbeitungsmethoden erlernen Matryoshka-Einbettungen diese Multiskalenstruktur während des anfänglichen Trainingsprozesses. Das Ergebnis ist bemerkenswert: Die vollständige Einbettung erfasst nicht nur die Semantik der Eingabe, sondern jedes verschachtelte Untergruppenpräfix (erste Hälfte, erstes Viertel usw.) liefert eine kohärente, wenn auch weniger detaillierte Darstellung.
Abbildung: Visualisierung von Matrjoschka-Einbettungen mit mehreren Detailschichten
Abbildung: Visualisierung von Matrjoschka-Einbettungen mit mehreren Detailschichten
Dieser Ansatz steht in scharfem Kontrast zu herkömmlichen Einbettungen, bei denen die Verwendung beliebiger Teilmengen der Vektordimensionen in der Regel die semantische Bedeutung zerstört. Mit Matryoshka-Einbettungen können Sie die Granularität wählen, die ein optimales Gleichgewicht zwischen der Präzision Ihrer spezifischen Aufgabe und den Rechenkosten herstellt.
Sie brauchen eine schnelle, ungefähre Suche? Verwenden Sie die kleinste "Puppe". Benötigen Sie maximale Genauigkeit? Verwenden Sie die vollständige Einbettung. Diese Flexibilität macht sie besonders wertvoll für Systeme, die sich an unterschiedliche Leistungsanforderungen oder Ressourcenbeschränkungen anpassen müssen.
Inferenz
Eine wertvolle Anwendung von Matryoshka-Einbettungen ist die Beschleunigung von Ähnlichkeitssuchen ohne Einbußen bei der Wiedererkennung. Durch die Nutzung kleinerer Teilmengen von Abfrage- und Datenbankeinbettungen - wie z. B. die ersten 1/32 ihrer Dimensionen - können wir einen Index über diesen reduzierten Raum erstellen, der immer noch einen Großteil der Ähnlichkeitsinformationen beibehält. Die ersten Ergebnisse aus diesem kleineren Einbettungsraum können direkt verwendet werden. Es gibt jedoch auch eine Technik, mit der die Wiederauffindbarkeit erhöht und jede geringfügige Verringerung durch die Dimensionsreduzierung berücksichtigt werden kann, wodurch dieser Ansatz sowohl effizient als auch effektiv für Ähnlichkeitssuchaufgaben ist.
Abbildung: Wie die Trichtersuche mit Matryoshka-Einbettungen funktioniert
Abbildung: Funktionsweise der Trichtersuche mit Matryoshka-Einbettungen
Um die Ähnlichkeitssuche effizient zu beschleunigen und gleichzeitig die Genauigkeit beizubehalten, können wir einen "Trichtersuchansatz" verwenden. Zunächst führen wir eine anfängliche Ähnlichkeitssuche durch, bei der nur die ersten 1/32 der Einbettungsdimensionen verwendet werden, wodurch ein breiter Pool von Kandidaten entsteht. Anschließend werden diese Kandidaten auf der Grundlage ihrer Ähnlichkeit mit der Abfrage unter Verwendung der ersten 1/16 der Dimensionen neu eingestuft, wodurch ein Teil der Liste beschnitten wird. Dieser Prozess wird iterativ fortgesetzt, wobei das Reranking und Pruning mit immer größeren Teilmengen der Einbettungsdimensionen durchgeführt wird - 1/8, 1/4 und so weiter. Wichtig ist, dass wir nur eine anfängliche Ähnlichkeitssuche in diesem niedrigdimensionalen Raum durchführen und die Einbettung der Suchanfrage in einem einzigen Durchlauf des Einbettungsmodells berechnet wird. Dieser Trichterprozess grenzt die Kandidaten bei jedem Schritt ein und ist schneller und effizienter als die direkte Suche im volldimensionalen Raum. Das Ziehen vieler Übereinstimmungen aus dem 1/32-dimensionalen Raum und deren Verfeinerung durch die Trichtersuche kann die Ähnlichkeitssuche erheblich beschleunigen und gleichzeitig eine hohe Trefferquote beibehalten.
Ausbildung
Gehen wir nun auf einige technische Details ein. Die Methode ist sehr einfach zu handhaben. Betrachten wir den Kontext der Feinabstimmung eines BERT-Modells für die Satzeinbettung. Um ein BERT-Modell, das zuvor auf den Verlust von maskierten Token trainiert wurde, in ein Satzeinbettungsmodell umzuwandeln, bilden wir die Satzeinbettung als Durchschnitt der letzten Schicht, d. h. den Durchschnitt der kontextualisierten Einbettungen pro Token.
Eine Wahl des Trainingsziels ist der Cosinus-Satz-Verlust (CoSENT), L v s . Es gibt ein Paar von Satzeinbettungen ein, u v, und ihren gewünschten Ähnlichkeitswert, s (siehe den Link oben für die Formel). Um nun Matryoshka-Einbettungen zu lernen, nehmen wir eine kleine Änderung am Trainingsziel vor:
d L v = w L1, v 1) + w L1, v 1) + w L1, v
wobei die Summe fortgesetzt wird, indem der Verlust auf der Hälfte der Eingabe des vorherigen Terms berechnet wird, bis ein Informationsengpass erreicht wird. Die Autoren schlagen vor, Folgendes festzulegen
w=
Einfach ausgedrückt, ist der Matryoshka-Verlust eine gewichtete Summe des ursprünglichen Verlusts über rekursive Teilmengen der Eingabe.
Eine wichtige Erkenntnis aus der obigen Gleichung ist, dass der Matryoshka-Verlust ein effizientes Lernen von Repräsentationen auf mehreren Skalen ermöglicht, indem Gewichte über die Einbettungsmodelle hinweg geteilt werden (dasselbe Modell wird z. B. für die Kodierung von verwendet u und u ) und die gemeinsame Nutzung von Dimensionen über Skalen hinweg u ist eine Teilmenge von u).
Matrjoschka-Einbettungen und Milvus
Milvus unterstützt nahtlos jedes Matryoshka-Einbettungsmodell, das über Standardbibliotheken wie pymilvus.model, sentence-transformers oder andere ähnliche Werkzeuge geladen werden kann. Aus Sicht des Systems gibt es keinen funktionalen Unterschied zwischen einem normalen Einbettungsmodell und einem speziell für die Erzeugung von Matryoshka-Einbettungen trainierten Modell.
Beliebte Matryoshka-Einbettungsmodelle sind unter anderem:
OpenAI's
text-embedding-3-large
Nomic's
nomic-embed-text-v1
Alibaba's
gte-multilingual-base
Eine vollständige Anleitung zur Verwendung von Matryoshka-Einbettungen mit Milvus finden Sie im Notizbuch Funnel Search with Matryoshka Embeddings.
Zusammenfassung
Mit Matryoshka-Embedding können Entwickler verkürzte Embeddings erstellen, ohne die semantische Integrität zu opfern, was sie ideal für eine effizientere Suche und Speicherung macht. Sie können ein bestehendes Modell modifizieren, aber es stehen auch bereits trainierte Optionen zur Verfügung, z. B. die von OpenAI und Hugging Face.
Eine aktuelle Einschränkung ist jedoch die Knappheit an quelloffenen Matryoshka-Einbettungen, von denen nur wenige auf dem Hugging Face Hub verfügbar sind. Außerdem sind diese Modelle oft nicht explizit als "Matryoshka" gekennzeichnet, was ihre Auffindbarkeit erschwert. Es bleibt zu hoffen, dass mit wachsendem Interesse bald eine breitere Verfügbarkeit und eine klarere Kennzeichnung folgen werden.
Sind Sie bereit, Ihre Suchfunktionen zu optimieren? Starten Sie noch heute mit Milvus + Matrjoschka-Einbettungen!
Ressourcen
Notizbuch: Trichtersuche mit Matryoshka-Einbettungen
Papier: Matryoshka Repräsentationslernen
Einführung in die PyMilvus-Integration mit Einbettungsmodellen
BGE-M3 erforschen: Die Zukunft des Information Retrieval mit Milvus
Nomic Embed: Training eines reproduzierbaren Long Context Text Embedders
Training von Matryoshka-Embeddings mit der Sentence Transformers Library
- Was sind Matryoshka-Embeddings?
- Inferenz
- Ausbildung
- Matrjoschka-Einbettungen und Milvus
- Zusammenfassung
- Ressourcen
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word