Usare i modelli di embedding dal catalogo dei modelli di Microsoft Foundry per la vettorializzazione integrata (anteprima)

Nota

Azure AI Search è disponibile tramite il portale di Azure, le API REST e Azure SDK. È inoltre alla base di Foundry IQ, il livello di conoscenza gestito che trasforma il contenuto aziendale in knowledge base riutilizzabili e con riconoscimento delle autorizzazioni per gli agenti nel portale di Microsoft Foundry.

Importante

Le funzionalità, le funzionalità o le proprietà contrassegnate (anteprima) non sono coperte da un contratto di servizio, non sono consigliate per i carichi di lavoro di produzione e potrebbero cambiare o essere vincolate prima che diventino disponibili a livello generale. Le condizioni di anteprima Azure AI Search si applicano a tutte le funzionalità di anteprima, indipendente o parte di una funzionalità disponibile a livello generale.

Questo articolo illustra come utilizzare i modelli del catalogo dei modelli di Microsoft Foundry per la vettorializzazione integrata (anteprima) durante l'indicizzazione e l'esecuzione delle query in Azure AI Search.

Il flusso di lavoro richiede la distribuzione di un modello dal catalogo, che include l'incorporamento di modelli da Microsoft e altre aziende. La distribuzione di un modello è fatturabile in base alla struttura di fatturazione di ogni provider.

Dopo la distribuzione del modello, è possibile usarlo con la skill AML per la vettorizzazione integrata durante l'indicizzazione o con il vettorizzatore del catalogo modelli di Microsoft Foundry per le query.

Suggerimento

Usare la procedura guidata Importa dati per generare un set di competenze che include una competenza AML per i modelli di incorporamento distribuiti in Foundry. La definizione di competenza AML per input, output e mapping viene generata dalla procedura guidata, che consente di testare facilmente un modello prima di scrivere codice.

Prerequisiti

Modelli di incorporamento supportati

I modelli di incorporamento supportati dal catalogo dei modelli variano in base al metodo di utilizzo:

Distribuire un modello di incorporamento dal catalogo dei modelli

  1. Seguire queste istruzioni del portale per distribuire un modello supportato nel progetto.

  2. Prendere nota dell'URI, della chiave e del nome del modello di destinazione. Questi valori sono necessari per la definizione del vettore in un indice di ricerca e per il set di competenze che chiama gli endpoint del modello durante l'indicizzazione.

    Se si preferisce l'autenticazione basata su token all'autenticazione basata su chiave, è sufficiente copiare il nome del modello. Prendere tuttavia nota dell'area in cui viene distribuito il modello.

  3. Configurare un indice di ricerca e un indicizzatore per l'uso del modello distribuito.

Distribuire un modello di incorporamento come distribuzione serverless

La funzionalità AML e il vettorializzatore del catalogo dei modelli di Foundry di Microsoft accetta solo distribuzioni serverless dei modelli di embedding di Cohere. Le distribuzioni serverless tramite il portale di Microsoft Foundry non sono supportate per questi modelli, quindi usare il interfaccia della riga di comando di Azure per creare la distribuzione. Per ulteriori informazioni, consultare Implementare i modelli come distribuzioni di API serverless.

Per creare una distribuzione senza server Cohere:

  1. Installare il interfaccia della riga di comando di Azure con l'estensione ml.

    az extension add -n ml
    
  2. Accedere a Azure e impostare le impostazioni predefinite.

    az login
    az account set --subscription <subscription-id>
    az configure --defaults workspace=<project-name> group=<resource-group>
    
  3. Creare un file subscribe.yaml per abbonarsi al Marketplace per il modello.

    name: cohere-embed-v3-english-subscription
    model_id: azureml://registries/azureml-cohere/models/Cohere-embed-v3-english
    

    Per altri modelli supportati, sostituire l'ID modello con uno dei valori seguenti.

    Modello ID modello
    Cohere-embed-v3-english azureml://registries/azureml-cohere/models/Cohere-embed-v3-english
    Cohere-embed-v3-multilingual azureml://registries/azureml-cohere/models/Cohere-embed-v3-multilingual
    Cohere-embed-v4 azureml://registries/azureml-cohere/models/Cohere-embed-v4
  4. Eseguire il comando seguente per creare la sottoscrizione.

    az ml marketplace-subscription create --file subscribe.yaml
    
  5. Creare un file endpoint.yaml per creare l'endpoint serverless.

    name: cohere-embed-v3-english-endpoint
    model_id: azureml://registries/azureml-cohere/models/Cohere-embed-v3-english
    
  6. Eseguire il comando seguente per creare l'endpoint.

    az ml serverless-endpoint create --file endpoint.yaml
    
  7. Per l'autenticazione basata su chiave, ottenere l'URI dell'endpoint e la chiave da usare nella skill o nella vettorizzazione.

    az ml serverless-endpoint show --name cohere-embed-v3-english-endpoint --query "scoring_uri"
    az ml serverless-endpoint get-credentials --name cohere-embed-v3-english-endpoint
    

Payload della competenza di Azure Machine Learning di esempio

Quando si distribuiscono modelli di incorporamento dal catalogo dei modelli, ci si connette usando la competenza di Azure Machine Learning in Azure AI Search per l'indicizzazione dei carichi di lavoro.

Questa sezione descrive la definizione della competenza AML e i mapping degli indici. Include un payload di esempio già configurato per l'uso con l'endpoint distribuito corrispondente. Per altre informazioni, vedere Contesto delle competenze e linguaggio di annotazione di input.

Modelli di incorporamento Cohere

Questo payload della competenza AML funziona con i modelli di incorporamento seguenti:

  • Cohere-embed-v3-english
  • Cohere-embed-v3-multilingual
  • Cohere-embed-v4

Si presume che il tuo contenuto venga suddiviso in blocchi usando l'abilità Text Split e che quindi il testo da vettorizzare si trovi nel percorso /document/pages/*. Se il testo proviene da un percorso diverso, aggiornare di conseguenza tutti i riferimenti al /document/pages/* percorso.

È necessario aggiungere il percorso /v1/embed alla fine dell'URL copiato dalla distribuzione Foundry. È anche possibile modificare i valori per gli input_type input, truncate, e embedding_types in base al caso d'uso. Per ulteriori informazioni sulle opzioni disponibili, consultare il riferimento all'API di incorporamento di Cohere.

L'URI e la chiave vengono generati quando si distribuisce il modello dal catalogo. Per ulteriori informazioni su questi valori, vedere Come distribuire i modelli Cohere Embed con Foundry.

{
  "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
  "context": "/document/pages/*",
  "uri": "https://cohere-embed-v3-multilingual-hin.eastus.models.ai.azure.com/v1/embed",
  "key": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333",
  "inputs": [
    {
      "name": "texts",
      "source": "=[$(/document/pages/*)]"
    },
    {
      "name": "input_type",
      "source": "='search_document'"
    },
    {
      "name": "truncate",
      "source": "='NONE'"
    },
    {
      "name": "embedding_types",
      "source": "=['float']"
    }
  ],
  "outputs": [
    {
      "name": "embeddings",
      "targetName": "aml_vector_data"
    }
  ]
}

Inoltre, l'output del modello Cohere non è direttamente la matrice di incorporamenti, ma piuttosto un oggetto JSON che lo contiene. È necessario selezionarlo in modo appropriato quando si esegue il mapping alla definizione dell'indice tramite indexProjections o outputFieldMappings. Ecco un payload di esempio indexProjections che consente di implementare questo mapping.

Se è stato selezionato un embedding_types diverso nella definizione della competenza, cambiare float nel percorso source al tipo selezionato.

"indexProjections": {
  "selectors": [
    {
      "targetIndexName": "<YOUR_TARGET_INDEX_NAME_HERE>",
      "parentKeyFieldName": "ParentKey", // Change this to the name of the field in your index definition where the parent key will be stored
      "sourceContext": "/document/pages/*",
      "mappings": [
        {
          "name": "aml_vector", // Change this to the name of the field in your index definition where the Cohere embedding will be stored
          "source": "/document/pages/*/aml_vector_data/float/0"
        }
      ]
    }
  ],
  "parameters": {}
}

Payload vettorializzatore di esempio

Il vettorizzatore del catalogo modelli Microsoft Foundry, a differenza della capacità AML, è progettato per funzionare esclusivamente con modelli di embedding che possono essere distribuiti tramite il catalogo dei modelli. La differenza principale è che non è necessario preoccuparsi del payload della richiesta e della risposta. È tuttavia necessario specificare modelName, che corrisponde all'"ID modello" copiato dopo la distribuzione del modello.

Di seguito è riportato un payload di esempio che mostra come configurare il vettorizzatore nella tua definizione dell'indice usando le proprietà copiate da Foundry.

Per i modelli Cohere, non dovresti aggiungere il percorso /v1/embed alla fine dell'URL come hai fatto con la funzionalità.

"vectorizers": [
    {
        "name": "<YOUR_VECTORIZER_NAME_HERE>",
        "kind": "aml",
        "amlParameters": {
            "uri": "<YOUR_URL_HERE>",
            "key": "<YOUR_PRIMARY_KEY_HERE>",
            "modelName": "<YOUR_MODEL_ID_HERE>"
        },
    }
]

Connettersi con l'autenticazione basata su token

Se non è possibile usare l'autenticazione basata su chiave, è possibile configurare l'abilità AML e la connessione del vettorizzatore del catalogo dei modelli Microsoft Foundry per l'autenticazione tramite token tramite il controllo degli accessi in base al ruolo in Azure.

Il servizio di ricerca deve avere un'identità gestita assegnata dal sistema o dall'utente e l'identità deve disporre delle autorizzazioni proprietario o collaboratore per il progetto. È quindi possibile rimuovere il campo key dalla definizione della skill e del vettore, sostituendolo con resourceId. Se il progetto e il servizio di ricerca si trovano in aree diverse, specificare anche il region campo .

"uri": "<YOUR_URL_HERE>",
"resourceId": "subscriptions/<YOUR_SUBSCRIPTION_ID_HERE>/resourceGroups/<YOUR_RESOURCE_GROUP_NAME_HERE>/providers/Microsoft.MachineLearningServices/workspaces/<YOUR_AML_WORKSPACE_NAME_HERE>/onlineendpoints/<YOUR_AML_ENDPOINT_NAME_HERE>",
"region": "westus", // Only needed if project is in different region from search service

Nota

Questa integrazione attualmente non supporta l'autenticazione token per i modelli Cohere. È necessario usare l'autenticazione basata su chiave.