Index-Binärvektoren für die Vektorsuche

Azure KI-Suche unterstützt den Collection(Edm.Byte) verpackten Binärtyp, um den Speicher- und Speicherbedarf von Vektordaten weiter zu reduzieren. Sie können diesen Datentyp für die Ausgabe von Modellen verwenden, z. B. die Embed v3-Binär-Einbettungsmodelle von Cohere oder ein anderes Einbettungsmodell oder Prozess, das Vektoren als binäre Bytes ausgibt.

Es gibt drei Schritte zum Konfigurieren eines Indexes für binäre Vektoren:

  • Hinzufügen eines Vektorsuchalgorithmus, der den Hamming-Abstand für den Binären Vektorvergleich angibt
  • Hinzufügen eines Vektorprofils, das auf den Algorithmus verweist
  • Hinzufügen eines Vektorfelds vom Typ Collection(Edm.Byte) und Zuweisen des Hamming-Abstands

In diesem Artikel werden die REST-APIs zur Veranschaulichung verwendet, Sie können aber auch ein Azure SDK oder das Azure Portal verwenden, um einem Index ein Binäres Feld hinzuzufügen. Sie weisen den binären Datentyp Feldern mithilfe der Indizes – Erstellen oder Indizes – Erstellen oder Aktualisieren von REST-APIs zu.

Tipp

Wenn Sie die Unterstützung des binären Vektors für den geringeren Speicherbedarf untersuchen, sollten Sie auch die Vektorquantisierungs- und Speicherreduzierungsfeatures in Azure KI-Suche berücksichtigen. Eingaben sind float32- oder float16-Einbettungen. Die Ausgabe wird in einem viel kleineren Format gespeichert. Weitere Informationen finden Sie unter Komprimieren mit binärer oder skalarer Quantisierung und Zuweisen schmaler Datentypen.

Voraussetzungen

  • Vertrautheit mit dem Erstellen eines Indexes und Hinzufügen von Vektorfeldern.

  • Binäre Vektoren mit einem Bit pro Dimension, verpackt in uint8-Werten mit acht Bit pro Wert. Sie können diese Vektoren mithilfe von Modellen abrufen, die direkt verpackte Binärvektoren generieren oder Vektoren in binäre Vektoren in Ihrer Clientanwendung während der Indizierung und des Abrufs quantisieren.

Einschränkungen

  • Keine Azure-Portalunterstützung im Assistenten Importieren von Daten.

  • Keine Unterstützung für binäre Felder im AML skill, die für die integrierte Vektorisierung von Modellen aus dem Microsoft Foundry-Modellkatalog verwendet wird.

Hinzufügen eines Vektorsuchalgorithmus und eines Vektorprofils

Vektorsuchalgorithmen erstellen die Abfragenavigationsstrukturen während der Indizierung. Bei binären Vektorfeldern verwendet das System die Hamming-Entfernungsmetrik, um Vektorvergleiche durchzuführen.

So konfigurieren Sie die Vektorsuche für binäre Vektoren:

  1. Richten Sie eine Indizes - Create or Update (REST API)-Anforderung ein.

  2. Fügen Sie im Indexschema einen vectorSearch Abschnitt hinzu, der Profile und Algorithmen angibt.

  3. Fügen Sie einen oder mehrere Vektorsuchalgorithmen hinzu, die eine Ähnlichkeitsmetrik verwenden.hamming Der hierarchische Navigable Small Worlds (HNSW)-Algorithmus ist üblich, aber Sie können auch Hamming-Entfernung mit erschöpfenden K-Nearest Neighbors (KNN) verwenden.

  4. Fügen Sie ein oder mehrere Vektorprofile hinzu, die den Algorithmus angeben.

Das folgende Beispiel zeigt eine grundlegende vectorSearch Konfiguration.

  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "myHnswProfile", 
        "algorithm": "myHnsw", 
        "compression": null, 
        "vectorizer": null 
      } 
    ], 
    "algorithms": [ 
      { 
        "name": "myHnsw", 
        "kind": "hnsw", 
        "hnswParameters": { 
          "metric": "hamming" 
        } 
      }, 
      { 
        "name": "myExhaustiveKnn", 
        "kind": "exhaustiveKnn", 
        "exhaustiveKnnParameters": { 
          "metric": "hamming" 
        } 
      } 
    ] 
  }

Hinzufügen eines Binärfelds zu einem Index

Die Feldauflistung eines Indexes muss ein Feld für den Dokumentschlüssel, Vektorfelder und alle anderen Felder enthalten, die Sie für Hybridsuchszenarien benötigen.

Binäre Felder verwenden den Collection(Edm.Byte) Typ und enthalten Einbettungen in verpackter Form. Wenn beispielsweise die ursprüngliche Einbettungsdimension 1024 beträgt, beträgt die gepackte binäre Vektorlänge ceiling(1024 / 8) = 128. Sie erhalten das gepackte Formular, indem Sie die vectorEncoding Eigenschaft für das Feld festlegen.

So fügen Sie einem Index ein binäres Vektorfeld hinzu:

  1. Fügen Sie der Feldauflistung ein Feld hinzu, und geben Sie ihm einen Namen.

  2. Legen Sie den Datentyp auf Collection(Edm.Byte).

  3. Setzen Sie vectorEncoding auf packedBit für binäre Codierung.

  4. Setze dimensions auf 1024. Geben Sie die ursprüngliche (entpackte) Vektordimension an.

  5. Legen Sie diese Einstellung vectorSearchProfile auf ein Profil fest, das Sie im vorherigen Schritt definiert haben.

  6. Setze searchable auf true.

Die folgende Felddefinition ist ein Beispiel für ein binäres Vektorfeld in einem Indexschema.

  "fields": [ 
    . . . 
    { 
      "name": "my-binary-vector-field", 
      "type": "Collection(Edm.Byte)", 
      "vectorEncoding": "packedBit", 
      "dimensions": 1024, 
      "vectorSearchProfile": "myHnswProfile",
      "searchable": true
    },
   . . . 
  ]
  • Überprüfen Sie das Repository azure-search-vector-samples für End-to-End-Workflows, die Schemadefinition, Vektorisierung, Indizierung und Abfragen enthalten.

  • Überprüfen Sie den Democode der Vektorsuche für C#, Python und JavaScript.