Azure Vision multimodal embeddings skill

Important

Questa abilità è in anteprima sotto i Termini Supplementari di Utilizzo. L'API REST 2024-05-01-Preview e le API di anteprima più recenti supportano questa funzionalità.

La competenza Azure Vision multimodal embeddings utilizza l'API multimodal embeddings di Azure Vision in Foundry Tools per generare embeddings per l'input di testo o immagini.

Per transazioni che superano i 20 documenti per indicizzatore al giorno, questa abilità richiede di allegare una risorsa fatturabile Microsoft Foundry al tuo set di competenze. L'esecuzione delle competenze integrate è addebitata al prezzo Standard esistente di Foundry Tools. L'estrazione dell'immagine è anche fatturabile per Azure AI Search.

La risorsa Microsoft Foundry è utilizzata solo a scopo di fatturazione. L'elaborazione dei contenuti avviene su risorse separate gestite e mantenute da Azure AI Search. I tuoi dati vengono elaborati nel Geo dove la tua risorsa è distribuita.

Supported regions

Le regioni supportate variano in base alla modalità e a come la competenza si collega all'API di embeddings multimodali di Azure Vision.

Approach Requirement
Assistente per importazione dati
  1. Trova una regione che supporti embedded multimodali in Azure Vision.
  2. Verifica che la regione supporti l'arricchimento AI in Azure AI Search.
  3. Crea un servizio Azure AI Search e Azure account multi-servizio AI nella stessa regione.
Programmatic, utilizzando una connessione basata su chiavi per la fatturazione
  1. Trova una regione che supporti embedded multimodali in Azure Vision.
  2. Verifica che la regione supporti l'arricchimento AI in Azure AI Search.
  3. Crea un servizio Azure AI Search e una risorsa Microsoft Foundry nella stessa regione.
Programmatic, utilizzando una connessione senza chiave per la fatturazione Nessun requisito di coire la stessa regione. Crea un servizio Azure AI Search e Microsoft risorsa Foundry in qualsiasi regione in cui è disponibile ogni servizio.

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

Data limits

I limiti di input per l'abilità si trovano nella documentazione Azure Vision per immagini e testo. Considera di usare la competenza Text Split se hai bisogno di sbloccare dati per input di testo.

Gli input applicabili includono:

  • La dimensione del file di input immagine deve essere inferiore a 20 megabyte (MB). La dimensione dell'immagine deve essere superiore a 10 x 10 pixel e inferiore a 16.000 x 16.000 pixel.
  • La stringa di input di testo deve essere compresa tra una parola (inclusiva) e 70 parole.

Skill parameters

I parametri sono distinti dalla mazzela e minuscola.

Inputs Description
modelVersion (Richiesto) La versione del modello (2023-04-15) da passare all'API di embeddings multimodali Azure Vision per generare embedding. Gli embedding vettoriali possono essere confrontati e abbinati solo se provengono dallo stesso tipo di modello. Le immagini vettorializzate da un modello non saranno ricercabili tramite un modello diverso. L'ultima API di Analisi delle Immagini offre due modelli:
  • La 2023-04-15 versione, che supporta la ricerca testuale in molte lingue. Azure AI Search utilizza questa versione.
  • Il modello legacy 2022-04-11 , che supporta solo l'inglese.

Skill inputs

Gli input per la definizione delle competenze includono nome, fonte e input. La tabella seguente fornisce valori validi per il nome dell'input. Puoi anche specificare input ricorsive. Per maggiori informazioni, consulta il riferimento REST API e Crea un set di competenze.

Input Description
text Il testo di input da vettorizzare. Se usi il chunking dei dati, la fonte potrebbe essere /document/pages/*.
image Complex Type. Attualmente funziona solo con il campo "/document/normalized_images", prodotto dal blob indexer Azure quando imageAction è impostato a un valore diverso da none.
url L'URL per scaricare l'immagine sarà vettorizzato.
queryString La stringa di query dell'URL per scaricare l'immagine da vettoriare. Utile se memorizzi URL e token SAS in percorsi separati.

Solo uno di text, image oppure url/queryString può essere configurato per un'unica istanza dell'abilità. Se vuoi vettorializzare sia immagini che testo all'interno dello stesso set di abilità, includi due istanze di questa abilità nella definizione del set di competenze, una per ogni tipo di input che vorresti usare.

Skill outputs

Output Description
vector Array di incorporamento in uscita di float per il testo o l'immagine in ingresso.

Sample definition

Per l'input di testo, consideriamo un blob che contiene il seguente contenuto:

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

Per gli input di testo, la tua definizione di abilità potrebbe essere questa:

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

Per l'input dell'immagine, una seconda definizione di abilità nello stesso set di competenze potrebbe essere questa:

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

Se vuoi vettorializzare le immagini direttamente dalla tua sorgente di memoria blob invece di estrarle durante l'indicizzazione, la definizione della tua abilità dovrebbe specificare un URL, e forse un token SAS a seconda della sicurezza dello storage. In questo scenario, la tua definizione di abilità potrebbe essere questa:

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

Sample output

Per l'input dato, viene prodotto un ingresso incorporato vettorializzato. L'output è di 1.024 dimensioni, che corrisponde al numero di dimensioni supportate dall'API multimodale di Azure Vision.

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

L'output risiede nella memoria. Per inviare questo output a un campo nell'indice di ricerca, devi definire un outputFieldMapping che mappa l'output di embedding vettorizato (che è un array) a un campo vettoriale. Assumendo che l'output delle skill risieda nel nodo vettoriale del documento, e content_vector sia il campo nell'indice di ricerca, il outputFieldMapping nell'indicizzatore dovrebbe apparire così:

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

Per mappare gli embeddings delle immagini nell'indice, si usano proiezioni indicizzate. Il payload per indexProjections potrebbe assomigliare al seguente esempio. image_content_vector è un campo nell'indice, e viene popolato con il contenuto presente nel vettoredell'array di normalized_images .

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

See also