Abschneiden von Dimensionen mithilfe der MRL-Komprimierung (Vorschau)
Wichtig
Dieses Feature befindet sich in der öffentlichen Vorschau und unterliegt den zusätzlichen Nutzungsbedingungen. Die Vorschau-REST-API unterstützt dieses Feature.
Nutzen Sie die Möglichkeit, bei text-embedding-3-Modellen weniger Dimensionen zu verwenden. In Azure OpenAI wurden die text-embedding-3-Modelle mit der Methode Matryoshka Representation Learning (MRL) neu trainiert, die mehrere Vektordarstellungen in unterschiedlichen Komprimierungsgraden erzeugt. Dieser Ansatz beschleunigt Suchvorgänge und reduziert die Speicherkosten bei minimalem Verlust semantischer Informationen.
In Azure KI-Suche ergänzt die MRL-Unterstützung die Skalar- und Binärquantisierung. Wenn Sie eine dieser Quantisierungsmethoden verwenden, können Sie auch eine truncationDimension
-Eigenschaft für Ihre Vektorfelder angeben, um die Dimensionalität von Texteinbettungen zu verringern.
Die mehrstufige MRL-Komprimierung reduziert den Bedarf an Vektorspeicher und verbessert die Antwortzeiten für Vektorabfragen auf der Grundlage von Texteinbettungen. In Azure KI-Suche wird die MRL-Unterstützung nur in Verbindung mit einer anderen Quantisierungsmethode angeboten. Die Verwendung der binären Quantisierung mit MRL ermöglicht eine maximale Reduzierung der Vektorindexgröße. Um eine maximale Speicherreduzierung zu erzielen, verwenden Sie die binäre Quantisierung mit MRL, und legen Sie stored
auf „false“ fest.
Dieses Feature befindet sich in Vorschau. Es ist in 2024-09-01-preview
und in SDK-Betapaketen für diese API-Vorschauversion verfügbar.
Voraussetzungen
Text-embedding-3-Modelle wie Text-embedding-3-small oder Text-embedding-3-large (nur Textinhalte).
Neue Vektorfelder vom Typ
Edm.Half
oderEdm.Single
(vorhandenen Feldern kann keine MRL-Komprimierung hinzugefügt werden).HNSW-Algorithmus (Hierarchical Navigable Small World) (ein vollständiger KNN-Algorithmus wird in dieser Vorschauversion nicht unterstützt).
Skalar- oder Binärquantisierung. Abgeschnittene Dimensionen können nur festgelegt werden, wenn eine Skalar- oder Binärquantisierung konfiguriert ist. Wir empfehlen die Binärquantisierung für die MRL-Komprimierung.
Unterstützte Clients
Sie können die REST-APIs oder Azure SDK-Betapakete verwenden, um die MRL-Komprimierung zu implementieren.
REST-API 2024-09-01-preview oder Rest-API 2024-11-01-preview
Überprüfen Sie die Änderungsprotokolle für jedes Azure SDK-Betapaket: Python, .NET, Java und JavaScript.
Für das Azure-Portal oder Azure KI Studio ist derzeit keine Unterstützung verfügbar.
Verwenden von Texteinbettungen mit MRL-Erweiterung
MRL ist eine Funktion, die in das bereits verwendete Texteinbettungsmodell integriert ist. Führen Sie die folgenden Schritte aus, um diese Funktionen in Azure KI-Suche nutzen zu können.
Verwenden Sie Erstellen oder Aktualisieren eines Index (Vorschau) oder eine entsprechende API, um das Indexschema anzugeben.
Fügen Sie Vektorfelder zur Indexdefinition hinzu.
Geben Sie in Ihrer Indexdefinition ein
vectorSearch.compressions
-Objekt an.Schließen Sie eine Quantisierungsmethode ein, entweder skalar oder binär (empfohlen).
Fügen Sie den Parameter
truncationDimension
mit dem Wert 512 hinzu, oder verringern Sie den Wert auf bis zu 256, wenn Sie das Modell „text-embedding-3-large“ verwenden.Geben Sie ein Vektorprofil an, das den HNSW-Algorithmus und das Vektorkomprimierungsobjekt angibt.
Weisen Sie das Vektorprofil einem Vektorfeld vom Typ
Edm.Half
oderEdm.Single
in der Feldsammlung zu.
Für die Verwendung eines MRL-fähigen Texteinbettungsmodells sind keine Änderungen der Abfrage erforderlich. Integrierte Vektorisierung, Text-in-Abfrage-Konvertierungen zur Abfragezeit, semantische Rangfolge und andere Features zum Verbessern der Relevanz wie die Neusortierung mit ursprünglichen Vektoren und die Überquotierung sind von der MRL-Unterstützung nicht betroffen.
Die Indizierung nimmt aufgrund der zusätzlichen Schritte mehr Zeit in Anspruch, Abfragen werden jedoch schneller ausgeführt.
Beispiel für eine Vektorsuchkonfiguration, die MRL unterstützt
Das folgende Beispiel zeigt eine Vektorsuchkonfiguration, die die Anforderungen und Empfehlungen von MRL erfüllt.
truncationDimension
ist eine Komprimierungseigenschaft. Sie gibt an, wie stark der Vektorgraph im Speicher mit einer Komprimierungsmethode wie der Skalar- oder Binärkomprimierung verkleinert werden soll. Wir empfehlen einen Wert von mindestens 1.024 für truncationDimension
mit binärer Quantisierung. Eine Dimensionalität von weniger als 1.000 verschlechtert die Qualität der Suchergebnisse, wenn MRL und die binäre Komprimierung verwendet werden.
{
"vectorSearch": {
"profiles": [
{
"name": "use-bq-with-mrl",
"compression": "use-mrl,use-bq",
"algorithm": "use-hnsw"
}
],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": {
"m": 4,
"efConstruction": 400,
"efSearch": 500,
"metric": "cosine"
}
}
],
"compressions": [
{
"name": "use-mrl",
"kind": "truncation",
"rerankWithOriginalVectors": true,
"defaultOversampling": 10,
"truncationDimension": 1024
},
{
"name": "use-bq",
"kind": "binaryQuantization",
"rerankWithOriginalVectors": true,
"defaultOversampling": 10
}
]
}
}
Im Folgenden sehen Sie ein Beispiel für eine vollständig angegebene Vektorfelddefinition, die die Anforderungen für MRL erfüllt.
Denken Sie daran, dass Vektorfelder vom Typ Edm.Half
oder Edm.Single
sein müssen. Vektorfelder müssen über eine vectorSearchProfile
-Eigenschaft verfügen, die die Algorithmus- und Komprimierungseinstellungen bestimmt. Vektorfelder verfügen über eine dimensions
-Eigenschaft, mit der die Anzahl von Dimensionen für die Bewertung und Sortierung von Ergebnissen angegeben wird. Der Wert sollte auf die maximale Anzahl von Dimensionen des verwendeten Modells festgelegt werden (1.536 für „text-embedding-3-small“).
{
"name": "text_vector",
"type": "Collection(Edm.Single)",
"searchable": true,
"filterable": false,
"retrievable": false,
"stored": false,
"sortable": false,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"normalizer": null,
"dimensions": 1536,
"vectorSearchProfile": "use-bq-with-mrl",
"vectorEncoding": null,
"synonymMaps": []
}