Freigeben über


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 oder Edm.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.

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.

  1. Verwenden Sie Erstellen oder Aktualisieren eines Index (Vorschau) oder eine entsprechende API, um das Indexschema anzugeben.

  2. Fügen Sie Vektorfelder zur Indexdefinition hinzu.

  3. Geben Sie in Ihrer Indexdefinition ein vectorSearch.compressions-Objekt an.

  4. Schließen Sie eine Quantisierungsmethode ein, entweder skalar oder binär (empfohlen).

  5. 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.

  6. Geben Sie ein Vektorprofil an, das den HNSW-Algorithmus und das Vektorkomprimierungsobjekt angibt.

  7. Weisen Sie das Vektorprofil einem Vektorfeld vom Typ Edm.Half oder Edm.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": []
}