compétence d’incorporations Azure Vision modales (préversion)

Note

Recherche Azure AI est disponible via le portail Azure, les API REST et les SDK Azure. Il sous-tend également Foundry IQ, la couche de connaissances managée qui transforme le contenu d’entreprise en bases de connaissances réutilisables et prenant en charge les autorisations pour les agents dans le portail Microsoft Foundry.

Important

Les fonctionnalités, fonctionnalités ou propriétés marquées (préversion) ne sont pas couvertes par un contrat de niveau de service, ne sont pas recommandées pour les charges de travail de production et peuvent changer ou être limitées avant qu’elles ne soient généralement disponibles. Les Recherche Azure AI termes de la préversion s'appliquent à toutes les fonctionnalités d'aperçu, qu'il s'agisse d'une fonctionnalité autonome ou d'une partie d'une fonctionnalité généralement disponible.

La compétence d’incorporations Azure Vision modale (préversion) utilise l’API d’incorporations modales de Azure Vision dans Foundry Tools pour générer des incorporations pour l’entrée de texte ou d’image.

Pour les transactions qui dépassent 20 documents par indexeur par jour, cette compétence exige que vous associer une ressource facturable Microsoft Foundry à votre ensemble de compétences. L’exécution des compétences intégrées est facturée au prix standard actuel de Foundry Tools. L’extraction d’image est également facturable par Recherche Azure AI.

La ressource Microsoft Foundry est utilisée uniquement à des fins de facturation. Le traitement du contenu se fait sur des ressources distinctes gérées et maintenues par Recherche Azure AI. Vos données sont traitées dans la géo où votre ressource est déployée.

Régions prises en charge

Les régions prises en charge varient selon la modalité et la façon dont la compétence se connecte à l’API d’intégration multimodale d’Azure Vision.

Approche Prérequis
Assistant d’importation de données
  1. Trouvez une région qui supporte les embeddings multimodaux dans Azure Vision.
  2. Vérifiez que la région prend en charge l’enrichissement IA dans Recherche Azure AI.
  3. Créez un service Recherche Azure AI et Azure compte multi-service IA dans la même région.
Programmatique, utilisant une connexion basée sur des clés pour la facturation
  1. Trouvez une région qui supporte les embeddings multimodaux dans Azure Vision.
  2. Vérifiez que la région prend en charge l’enrichissement IA dans Recherche Azure AI.
  3. Créez un service Recherche Azure AI et une ressource Microsoft Foundry dans la même région.
Programmatique, utilisant une connexion sans clé pour la facturation Aucune exigence de même région. Créez un service Recherche Azure AI et Microsoft ressource Foundry dans toute région où chaque service est disponible.

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

Limites des données

Les limites d’entrée pour la compétence se trouvent dans la documentation Azure Vision pour les images et le texte. Envisagez d’utiliser la compétence Text Split si vous avez besoin de fragmentation de données pour les entrées textuelles.

Les entrées applicables incluent :

  • La taille du fichier d’entrée d’image doit être inférieure à 20 mégaoctets (Mo). La taille de l’image doit être supérieure à 10 x 10 pixels et inférieure à 16 000 x 16 000 pixels.
  • La chaîne de texte doit être comprise entre un mot (inclus) et 70 mots.

Paramètres de compétence

Les paramètres sont sensibles à la casse.

Entrées Description
modelVersion (Obligatoire) La version du modèle (2023-04-15) doit être transmise à l’API d’embeddings multimodaux Azure Vision pour générer des embeddings. Les embeddings vectoriels ne peuvent être comparés et appariés que s’ils proviennent du même type de modèle. Les images vectorisées par un modèle ne seront pas consultables via un autre modèle. La dernière API d’analyse d’images propose deux modèles :
  • La 2023-04-15 version qui prend en charge la recherche de texte dans de nombreuses langues. Recherche Azure AI utilise cette version.
  • Le modèle hérité 2022-04-11 , qui ne supporte que l’anglais.

Données de compétences

Les entrées de définition de compétences incluent le nom, la source et les entrées. Le tableau suivant fournit des valeurs valides pour le nom de l’entrée. Vous pouvez aussi spécifier des entrées récursives. Pour plus d’informations, consultez la référence de l’API REST et Créer un ensemble de compétences.

Input Description
text Le texte d’entrée à vectoriser. Si vous utilisez le segment de données, la source pourrait être /document/pages/*.
image Type complexe. Actuellement, il ne fonctionne qu’avec le champ « /document/normalized_images », produit par l’indexeur de blob Azure lorsque imageAction est défini à une valeur autre que none.
url L’URL pour télécharger l’image à vectoriser.
queryString La chaîne de requête de l’URL pour télécharger l’image à vectoriser. Utile si vous stockez l’URL et le jeton SAS sur des chemins séparés.

Un seul de text, image ou url/queryString peut être configuré pour une seule instance de la compétence. Si vous souhaitez vectoriser à la fois les images et le texte au sein du même ensemble de compétences, incluez deux instances de cette compétence dans la définition de l’ensemble de compétences, une pour chaque type d’entrée que vous souhaitez utiliser.

Résultats des compétences

Sortie Description
vector Tableau d’intégration de sortie de floats pour le texte d’entrée ou l’image.

Exemple de définition

Pour la saisie de texte, considérez un blob contenant le contenu suivant :

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

Pour les entrées textuelles, votre définition de compétence pourrait ressembler à ceci :

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

Pour l’entrée d’images, une seconde définition de compétence dans le même ensemble pourrait ressembler à ceci :

{
    "@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"
        }
    ]
}

Si vous souhaitez vectoriser les images directement à partir de votre source de données de stockage blob plutôt que d’extraire des images lors de l’indexation, votre définition de compétence devrait spécifier une URL, et peut-être un jeton SAS selon la sécurité du stockage. Dans ce scénario, votre définition de compétence pourrait ressembler à ceci :

{
    "@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"
        }
    ]
}

Exemple de résultat

Pour l’entrée donnée, une sortie d’intégration vectorisée est produite. La sortie est de 1 024 dimensions, ce qui correspond au nombre de dimensions prises en charge par l’API multimodale Azure Vision.

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

La sortie réside en mémoire. Pour envoyer cette sortie à un champ dans l’index de recherche, vous devez définir une sortieFieldMapping qui mappe la sortie d’embedding vectorisée (qui est un tableau) sur un champ vectoriel. En supposant que la sortie de compétence réside dans le nœud vectoriel du document, et que content_vector soit le champ dans l’index de recherche, le outputFieldMapping dans l’indexeur devrait ressembler à :

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

Pour mapper les inclusions d’images à l’index, vous utilisez des projections d’index. La charge utile pour indexProjections pourrait ressembler à l’exemple suivant. image_content_vector est un champ dans l’index, et il est rempli du contenu trouvé dans le vecteur du tableau de normalized_images .

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

Voir aussi