Usar modelos de inserção do catálogo de modelos do Microsoft Foundry para vetorização integrada (versão prévia)

Nota

Pesquisa de IA do Azure  está disponível por meio do portal Azure, APIs REST e SDKs do Azure. Ele também sustenta o IQ do Foundry, a camada de conhecimento gerenciado que transforma o conteúdo da empresa em bases de conhecimento reutilizáveis e com reconhecimento de permissão para agentes no portal do Microsoft Foundry.

Importante

Recursos, funcionalidades ou propriedades marcados como (versão prévia) não são cobertos por um contrato de nível de serviço (SLA), não são recomendados para cargas de trabalho de produção e podem mudar ou ser restringidos antes da disponibilidade geral. Os termos de visualização do Pesquisa de IA do Azure  se aplicam a toda funcionalidade em visualização, seja autônoma ou parte de um recurso de disponibilidade geral.

Neste artigo, você aprenderá a usar modelos de catálogo de modelos do Microsoft Foundry para vetorização integrada (versão prévia) durante a indexação e a execução da consulta no Pesquisa de IA do Azure .

O fluxo de trabalho requer que você implante um modelo do catálogo, que inclui a inserção de modelos de Microsoft e outras empresas. A implantação de um modelo pode ser cobrada de acordo com a estrutura de cobrança de cada provedor.

Depois que o modelo for implantado, você poderá usá-lo com a habilidade AML para vetorização integrada durante a indexação ou com o Microsoft vetorizador do catálogo de modelos do Foundry para consultas.

Dica

Use o assistente de importação de dados para gerar um conjunto de habilidades que inclui uma habilidade de AML para modelos de inserção implantados no Foundry. A definição de habilidade AML para entradas, saídas e mapeamentos é gerada pelo assistente, o que oferece uma maneira fácil de testar um modelo antes de escrever qualquer código.

Pré-requisitos

Modelos de inserção com suporte

Os modelos de inserção com suporte do catálogo de modelos variam de acordo com o método de uso:

Implantar um modelo de incorporação a partir do catálogo de modelos

  1. Siga estas instruções do portal para implantar um modelo com suporte em seu projeto.

  2. Anote o URI de destino, a chave e o nome do modelo. Você precisa desses valores para a definição do vetorizador em um índice de pesquisa e para o conjunto de habilidades que chama os pontos de extremidade do modelo durante a indexação.

    Se preferir a autenticação de token à autenticação baseada em chave, você só precisará copiar o nome do modelo. No entanto, anote a região na qual o modelo é implantado.

  3. Configure um índice de pesquisa e um indexador para usar o modelo implantado.

Implantar um modelo de embedding como uma implantação sem servidor

A habilidade AML e o vetor do catálogo de modelos do Microsoft Foundry aceitam apenas implantações sem servidor de modelos de inserção Cohere. Não há suporte para implantações sem servidor por meio do portal do Microsoft Foundry para esses modelos, portanto, use o CLI do Azure para criar a implantação. Para obter mais informações, consulte Implantar modelos como implantações de API sem servidor.

Para criar uma implantação sem servidor do Cohere:

  1. Instale o CLI do Azure com a extensão ml.

    az extension add -n ml
    
  2. Entre no Azure e defina seus padrões.

    az login
    az account set --subscription <subscription-id>
    az configure --defaults workspace=<project-name> group=<resource-group>
    
  3. Crie um arquivo subscribe.yaml para se inscrever na assinatura do marketplace para o modelo.

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

    Para outros modelos com suporte, substitua a ID do modelo por um dos valores a seguir.

    Modelo ID do modelo
    Cohere-embed-v3-english azureml://registries/azureml-cohere/models/Cohere-embed-v3-english
    Cohere-embedar-v3-multilanguage azureml://registries/azureml-cohere/models/Cohere-embed-v3-multilingual
    Cohere-embed-v4 azureml://registries/azureml-cohere/models/Cohere-embed-v4
  4. Execute o comando a seguir para criar a assinatura.

    az ml marketplace-subscription create --file subscribe.yaml
    
  5. Crie um arquivo endpoint.yaml para criar o ponto de extremidade sem servidor.

    name: cohere-embed-v3-english-endpoint
    model_id: azureml://registries/azureml-cohere/models/Cohere-embed-v3-english
    
  6. Execute o seguinte comando para criar o endpoint.

    az ml serverless-endpoint create --file endpoint.yaml
    
  7. Para autenticação baseada em chave, obtenha o URI do ponto de extremidade e a chave para uso no skill ou vectorizer.

    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
    

Exemplo de payload de habilidade AML

Ao implantar modelos de inserção do catálogo de modelos, você se conectará a eles usando a habilidade AML na Pesquisa de IA do Azure para cargas de trabalho de indexação.

Esta seção descreve a definição de habilidade de AML e os mapeamentos de índice. Inclui um exemplo de payload já configurado para funcionar com o ponto de extremidade implantado correspondente. Para obter mais informações, consulte o contexto de habilidade e a linguagem de anotação de entrada.

Modelos de incorporação Cohere

Esse payload de habilidade AML funciona com os seguintes modelos de incorporação:

  • Cohere-embed-v3-english
  • Cohere-embedar-v3-multilanguage
  • Cohere-embed-v4

Ele pressupõe que você esteja agrupando seu conteúdo usando a habilidade Text Split e, portanto, seu texto a ser vetorizado está no /document/pages/* path. Se o texto for proveniente de um caminho diferente, atualize todas as referências para o /document/pages/* caminho adequadamente.

Você deve adicionar o caminho /v1/embed ao final da URL copiada de sua implantação da Fábrica. Você também pode alterar os valores das entradas `input_type`, `truncate` e `embedding_types` para melhor se ajustar ao seu caso de uso. Para obter mais informações sobre as opções disponíveis, examine a referência da API de Inserção coerente.

O URI e a chave são gerados quando você implanta o modelo do catálogo. Para obter mais informações sobre esses valores, consulte Como implantar modelos de inserção cohere com o 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"
    }
  ]
}

Além disso, a saída do modelo Cohere não é a matriz de inserções diretamente, mas sim um objeto JSON que o contém. Você precisa selecioná-lo adequadamente ao mapeá-lo para a definição do índice por meio de indexProjections ou outputFieldMappings. Aqui está um exemplo de carga indexProjections que permitiria que você implementasse esse mapeamento.

Se você selecionou um embedding_types diferente na definição da habilidade, altere float no caminho source para o tipo selecionado.

"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": {}
}

Exemplo de payload do vetorizador

O vetorizador do catálogo de modelos Microsoft Foundry, diferentemente da habilidade de AML, é adaptado para funcionar apenas com modelos de embedding que são implantáveis por meio do catálogo de modelos. A principal diferença é que você não precisa se preocupar com a solicitação e o conteúdo da resposta. No entanto, você deve fornecer o modelName, que corresponde à "ID do Modelo" copiada após a implantação do modelo.

Aqui está um conteúdo de exemplo de como você configuraria o vetorizador em sua definição de índice, considerando as propriedades copiadas da Fábrica.

Para os modelos Cohere, você NÃO deve adicionar o caminho /v1/embed ao final da URL, como fez com a habilidade.

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

Conectar-se usando a autenticação de token

Se você não puder usar a autenticação baseada em chave, poderá configurar a habilidade AML e a conexão do vetorizador do catálogo de modelos do Microsoft Foundry para autenticação de token por meio do controle de acesso baseado em função no Azure.

Seu serviço de pesquisa deve ter uma identidade gerenciada atribuída pelo sistema ou pelo usuário e a identidade deve ter permissões de Proprietário ou Colaborador para seu projeto. Você pode então remover o campo key da sua definição de habilidade e vetorizador, substituindo-o por resourceId. Se o projeto e o serviço de pesquisa estiverem em regiões diferentes, forneça também o 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

No momento, essa integração não dá suporte à autenticação de token para modelos do Cohere. Você deve usar a autenticação baseada em chave.