Freigeben über


Azure KI Vision – Skill „Multimodale-Einbettung“

Wichtig

Diese Fähigkeit befindet sich in der öffentlichen Vorschau unter ergänzenden Nutzungsbedingungen. Die REST-API 2024-05-01-Preview und neuere Vorschau-APIs unterstützen dieses Feature.

Die Skill „Multimodale-Einbettung“ von Azure KI Vision verwendet die multimodale Einbettungs-API von Azure KI Vision, um Einbettungen für Bild- oder Texteingaben zu generieren.

Diese Fähigkeit muss einer abrechnenden Azure AI Multi-Service-Ressource für Transaktionen zugeordnet werden, die 20 Dokumente pro Indexer pro Tag überschreiten. Die Ausführung integrierter Fähigkeiten wird zum Standardpreis für Azure AI-Dienste berechnet.

Darüber hinaus wird die Bildextraktion durch Azure KI Search abgerechnet.

Der Standort von Ressourcen ist ein wichtiger Aspekt. Da Sie eine Vorschau-API-Version verwenden, um ein Skillset zu erstellen, das Vorschaufähigkeiten enthält, haben Sie die Möglichkeit einer schlüssellosen Verbindung, die die Regionsanforderung entspannt. Wenn Sie jedoch eine Verbindung mit einem API-Schlüssel herstellen, muss sich Azure AI Search und Azure AI Multi-Service in derselben Region befinden.

Die Azure AI Multi-Service-Ressource wird nur für Abrechnungszwecke verwendet. Die Inhaltsverarbeitung erfolgt auf separaten Ressourcen, die von Azure AI Search innerhalb desselben geografischen Raums verwaltet und verwaltet werden. Ihre Daten werden im Geo verarbeitet, in dem Ihre Ressource bereitgestellt wird.

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

Datengrenzwerte

Die Eingabegrenzwerte für die Fähigkeiten finden Sie in der Azure AI Vision-Dokumentation für Bilder bzw. Text. Erwägen Sie, die Skill „Textaufteilung“ zu verwenden, wenn Sie Datenblöcke für Texteingaben benötigen.

Zu den anwendbaren Eingaben gehören:

  • Die Größe der Bildeingabedatei muss kleiner als 20 MB sein. Die Bildgröße muss größer als 10 x 10 Pixel und kleiner als 16.000 x 16.000 Pixel sein.
  • Die Texteingabezeichenfolge muss zwischen (einschließlich) einem Wort und 70 Wörtern liegen.

Skillparameter

Bei den Parametern wird zwischen Groß- und Kleinschreibung unterschieden.

Eingaben Beschreibung
modelVersion (Erforderlich) Die Modellversion () zur Generierung von Einbettungen an2023-04-15 die Azure AI Vision multimodale Einbettungs-API übergeben werden soll. Vektoreinbettungen können nur verglichen und abgeglichen werden, wenn sie vom gleichen Modelltyp stammen. Bilder, die von einem Modell vektorisiert werden, können nicht über ein anderes Modell durchsucht werden. Die neueste Bildanalyse-API bietet zwei Modelle, Version 2023-04-15 , die die Textsuche in vielen Sprachen unterstützt, und das Legacymodell 2022-04-11 , das nur Englisch unterstützt. Azure AI Search verwendet die neuere Version.

Skilleingaben

Eingaben für Qualifikationsdefinitionen umfassen Name, Quelle und Eingaben. Die folgende Tabelle enthält gültige Werte für den Namen der Eingabe. Sie können auch rekursive Eingaben angeben. Weitere Informationen finden Sie in der REST-API-Referenz und im Erstellen eines Skillsets.

Eingabe Beschreibung
text Der zu vektorisierende Eingabetext. Wenn Sie Datenblöcke verwenden, ist die Quelle möglicherweise /document/pages/*.
image Komplexer Typ. Arbeitet derzeit mit dem Feld „/document/normalized_images“, das vom Azure Blob-Indexer generiert wird, wenn imageAction auf einen anderen Wert als none gesetzt ist.
url Die URL zum Herunterladen des Bilds, das vektorisiert werden soll.
queryString Die Abfragezeichenfolge der URL zum Herunterladen des Bilds, das vektorisiert werden soll. Hilfreich, wenn das URL- und SAS-Token in separaten Pfaden gespeichert wird.

Nur einer von text, image oder url/queryString kann für eine einzelne Instanz der Skill konfiguriert werden. Wenn Sie sowohl Bilder als auch Text innerhalb desselben Skillsets vektorisieren möchten, schließen Sie zwei Instanzen dieser Skill in die Definition des Skillset ein – eines für jeden Eingabetyp, den Sie verwenden möchten.

Skillausgaben

Ausgabe Beschreibung
vector Ausgabe-Einbettungsarray von Floats für den Eingabetext oder das Eingabebild.

Beispieldefinition

Berücksichtigen Sie für die Texteingabe ein Blob mit folgendem Inhalt:

{
    "content": "Forests, grasslands, deserts, and mountains are all part of the Patagonian landscape that spans more than a million square  kilometers of South America."
}

Bei Texteingaben könnte Ihre Qualifikationsdefinition wie folgt aussehen:

{ 
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill", 
    "context": "/document", 
    "modelVersion": "2023-04-15", 
    "inputs": [ 
        { 
            "name": "text", 
            "source": "/document/content" 
        } 
    ], 
    "outputs": [ 
        { 
            "name": "vector",
            "targetName": "text_vector"
        } 
    ] 
} 

Bei der Bildeingabe kann eine zweite Qualifikationsdefinition im gleichen Skillset wie folgt aussehen:

{
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
    "context": "/document/normalized_images/*",
    "modelVersion": "2023-04-15", 
    "inputs": [
        {
            "name": "image",
            "source": "/document/normalized_images/*"
        }
    ],
    "outputs": [
        {
            "name": "vector",
            "targetName": "image_vector"
        }
    ]
}

Wenn Sie Bilder direkt aus Ihrer BLOB-Speicherdatenquelle vektorisieren möchten, anstatt Bilder während der Indizierung zu extrahieren, sollte Ihre Qualifikationsdefinition eine URL und vielleicht ein SAS-Token je nach Speichersicherheit angeben. In diesem Szenario könnte Ihre Qualifikationsdefinition wie folgt aussehen:

{
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
    "context": "/document",
    "modelVersion": "2023-04-15", 
    "inputs": [
        {
            "name": "url",
            "source": "/document/metadata_storage_path"
        },
        {
            "name": "queryString",
            "source": "/document/metadata_storage_sas_token"
        }
    ],
    "outputs": [
        {
            "name": "vector",
            "targetName": "image_vector"
        }
    ]
}

Beispielausgabe

Für die angegebene Eingabe wird eine vektorisierte Einbettungsausgabe erzeugt. Die Ausgabe beträgt 1.024 Dimensionen. Dies ist die Anzahl der Dimensionen, die von der multimodalen Azure AI Vision-API unterstützt werden.

{
  "text_vector": [
        0.018990106880664825,
        -0.0073809814639389515,
        .... 
        0.021276434883475304,
      ]
}

Die Ausgabe befindet sich im Speicher. Um diese Ausgabe an ein Feld im Suchindex zu senden, müssen Sie ein outputFieldMapping definieren, die die vektorisierte Einbettungsausgabe (ein Array) einem Vektorfeld zuordnet. Wenn sich die Qualifikationsausgabe im Vektorknoten des Dokuments befindet und content_vector das Feld im Suchindex ist, sollte das outputFieldMapping im Index wie folgt aussehen:

  "outputFieldMappings": [
    {
      "sourceFieldName": "/document/vector/*",
      "targetFieldName": "content_vector"
    }
  ]

Zum Zuordnen von Bildeinbettungen zum Index verwenden Sie Indexprojektionen. Die Nutzlast könnte indexProjections etwa wie im folgenden Beispiel aussehen. image_content_vector ist ein Feld im Index und wird mit dem Inhalt aufgefüllt, der im Vektor des normalized_images Arrays gefunden wurde.

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "myTargetIndex",
            "parentKeyFieldName": "ParentKey",
            "sourceContext": "/document/normalized_images/*",
            "mappings": [
                {
                    "name": "image_content_vector",
                    "source": "/document/normalized_images/*/vector"
                }
            ]
        }
    ]
}

Weitere Informationen