Partilhar via


Como gerar incorporações de imagem com a inferência de modelo de IA do Azure

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Este artigo explica como usar a API de incorporação de imagens com modelos implantados na inferência de modelo de IA do Azure no Azure AI Foundry.

Pré-requisitos

Para usar modelos de incorporação em seu aplicativo, você precisa:

  • Uma subscrição do Azure. Se você estiver usando Modelos do GitHub, poderá atualizar sua experiência e criar uma assinatura do Azure no processo. Leia Atualização de modelos do GitHub para inferência de modelo de IA do Azure, se esse for o seu caso.

  • Um recurso de serviços de IA do Azure. Para obter mais informações, consulte Criar um recurso dos Serviços de IA do Azure.

  • A URL e a chave do ponto de extremidade.

    Captura de ecrã a mostrar como obter o URL e a chave associados ao recurso.

  • Uma imagem incorpora a implantação do modelo. Se você não tiver um, leia Adicionar e configurar modelos aos serviços de IA do Azure para adicionar um modelo de incorporação ao seu recurso.

    • Este exemplo usa Cohere-embed-v3-english Cohere.
  • Instale o pacote de inferência do Azure AI com o seguinte comando:

    pip install -U azure-ai-inference
    

    Gorjeta

    Leia mais sobre o pacote de inferência e a referência da IA do Azure.

Usar incorporações

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.core.credentials import AzureKeyCredential

model = ImageEmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
    model="Cohere-embed-v3-english"
)

Se você configurou o recurso com suporte ao Microsoft Entra ID , poderá usar o trecho de código a seguir para criar um cliente.

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.identity import DefaultAzureCredential

model = ImageEmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
    model="Cohere-embed-v3-english"
)

Criar incorporações

Para criar incorporações de imagem, você precisa passar os dados da imagem como parte de sua solicitação. Os dados de imagem devem estar no formato PNG e codificados como base64.

from azure.ai.inference.models import ImageEmbeddingInput

image_input= ImageEmbeddingInput.load(image_file="sample1.png", image_format="png")
response = model.embed(
    input=[ image_input ],
)

Gorjeta

Ao criar uma solicitação, leve em consideração o limite de entrada do token para o modelo. Se você precisar incorporar partes maiores de texto, precisará de uma estratégia de fragmentação.

A resposta é a seguinte, onde você pode ver as estatísticas de uso do modelo:

import numpy as np

for embed in response.data:
    print("Embeding of size:", np.asarray(embed.embedding).shape)

print("Model:", response.model)
print("Usage:", response.usage)

Importante

A computação de incorporações em lotes pode não ser suportada para todos os modelos. Por exemplo, para cohere-embed-v3 o modelo, você precisa enviar uma imagem de cada vez.

Incorporação de imagens e pares de texto

Alguns modelos podem gerar incorporações a partir de imagens e pares de texto. Nesse caso, você pode usar os image campos e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar incorporações para imagens e pares de texto:

text_image_input= ImageEmbeddingInput.load(image_file="sample1.png", image_format="png")
text_image_input.text = "A cute baby sea otter"
response = model.embed(
    input=[ text_image_input ],
)

Crie diferentes tipos de incorporações

Alguns modelos podem gerar várias incorporações para a mesma entrada, dependendo de como você planeja usá-las. Esse recurso permite que você recupere incorporações mais precisas para padrões RAG.

O exemplo a seguir mostra como criar incorporações que são usadas para criar uma incorporação para um documento que será armazenado em um banco de dados vetorial:

from azure.ai.inference.models import EmbeddingInputType

response = model.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.DOCUMENT,
)

Ao trabalhar em uma consulta para recuperar esse documento, você pode usar o trecho de código a seguir para criar as incorporações para a consulta e maximizar o desempenho de recuperação.

from azure.ai.inference.models import EmbeddingInputType

response = model.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.QUERY,
)

Observe que nem todos os modelos de incorporação suportam a indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Este artigo explica como usar a API de incorporação de imagens com modelos implantados na inferência de modelo de IA do Azure no Azure AI Foundry.

Pré-requisitos

Para usar modelos de incorporação em seu aplicativo, você precisa:

  • Uma subscrição do Azure. Se você estiver usando Modelos do GitHub, poderá atualizar sua experiência e criar uma assinatura do Azure no processo. Leia Atualização de modelos do GitHub para inferência de modelo de IA do Azure, se esse for o seu caso.

  • Um recurso de serviços de IA do Azure. Para obter mais informações, consulte Criar um recurso dos Serviços de IA do Azure.

  • A URL e a chave do ponto de extremidade.

    Captura de ecrã a mostrar como obter o URL e a chave associados ao recurso.

  • Uma imagem incorpora a implantação do modelo. Se você não tiver um, leia Adicionar e configurar modelos aos serviços de IA do Azure para adicionar um modelo de incorporação ao seu recurso.

    • Este exemplo usa Cohere-embed-v3-english Cohere.
  • Instale a biblioteca de inferência do Azure para JavaScript com o seguinte comando:

    npm install @azure-rest/ai-inference
    

    Gorjeta

    Leia mais sobre o pacote de inferência e a referência da IA do Azure.

Usar incorporações

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa uma URL de ponto de extremidade e uma chave que são armazenadas em variáveis de ambiente.

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT,
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL),
    "Cohere-embed-v3-english"
);

Se você configurou o recurso com suporte ao Microsoft Entra ID , poderá usar o trecho de código a seguir para criar um cliente.

import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { DefaultAzureCredential } from "@azure/identity";

const client = new ModelClient(
    process.env.AZURE_INFERENCE_ENDPOINT,
    new DefaultAzureCredential(),
    "Cohere-embed-v3-english"
);

Criar incorporações

Para criar incorporações de imagem, você precisa passar os dados da imagem como parte de sua solicitação. Os dados de imagem devem estar no formato PNG e codificados como base64.

var image_path = "sample1.png";
var image_data = fs.readFileSync(image_path);
var image_data_base64 = Buffer.from(image_data).toString("base64");

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
    }
});

Gorjeta

Ao criar uma solicitação, leve em consideração o limite de entrada do token para o modelo. Se você precisar incorporar partes maiores de texto, precisará de uma estratégia de fragmentação.

A resposta é a seguinte, onde você pode ver as estatísticas de uso do modelo:

if (isUnexpected(response)) {
    throw response.body.error;
}

console.log(response.embedding);
console.log(response.body.model);
console.log(response.body.usage);

Importante

A computação de incorporações em lotes pode não ser suportada para todos os modelos. Por exemplo, para cohere-embed-v3 o modelo, você precisa enviar uma imagem de cada vez.

Incorporação de imagens e pares de texto

Alguns modelos podem gerar incorporações a partir de imagens e pares de texto. Nesse caso, você pode usar os image campos e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar incorporações para imagens e pares de texto:

var image_path = "sample1.png";
var image_data = fs.readFileSync(image_path);
var image_data_base64 = Buffer.from(image_data).toString("base64");

var response = await client.path("images/embeddings").post({
    body: {
        input: [
            {
                text: "A cute baby sea otter",
                image: image_data_base64
            }
        ]
    }
});

Crie diferentes tipos de incorporações

Alguns modelos podem gerar várias incorporações para a mesma entrada, dependendo de como você planeja usá-las. Esse recurso permite que você recupere incorporações mais precisas para padrões RAG.

O exemplo a seguir mostra como criar incorporações que são usadas para criar uma incorporação para um documento que será armazenado em um banco de dados vetorial:

var response = await client.path("/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
    }
});

Ao trabalhar em uma consulta para recuperar esse documento, você pode usar o trecho de código a seguir para criar as incorporações para a consulta e maximizar o desempenho de recuperação.

var response = await client.path("/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
    }
});

Observe que nem todos os modelos de incorporação suportam a indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.

Nota

O uso de incorporações de imagem só é suportado usando solicitações Python, JavaScript ou REST.

Nota

O uso de incorporações de imagem só é suportado usando solicitações Python, JavaScript ou REST.

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Este artigo explica como usar a API de incorporação de imagens com modelos implantados na inferência de modelo de IA do Azure no Azure AI Foundry.

Pré-requisitos

Para usar modelos de incorporação em seu aplicativo, você precisa:

  • Uma subscrição do Azure. Se você estiver usando Modelos do GitHub, poderá atualizar sua experiência e criar uma assinatura do Azure no processo. Leia Atualização de modelos do GitHub para inferência de modelo de IA do Azure, se esse for o seu caso.

  • Um recurso de serviços de IA do Azure. Para obter mais informações, consulte Criar um recurso dos Serviços de IA do Azure.

  • A URL e a chave do ponto de extremidade.

    Captura de ecrã a mostrar como obter o URL e a chave associados ao recurso.

  • Uma imagem incorpora a implantação do modelo. Se você não tiver um, leia Adicionar e configurar modelos aos serviços de IA do Azure para adicionar um modelo de incorporação ao seu recurso.

    • Este exemplo usa Cohere-embed-v3-english Cohere.

Usar incorporações

Para usar as incorporações de texto, use a rota /images/embeddings anexada à URL base junto com sua credencial indicada em api-key. Authorization cabeçalho também é suportado com o formato Bearer <key>.

POST https://<resource>.services.ai.azure.com/models/images/embeddings
Content-Type: application/json
api-key: <key>

Se você configurou o recurso com suporte ao Microsoft Entra ID , passe o Authorization token no cabeçalho:

POST https://<resource>.services.ai.azure.com/models/images/embeddings
Content-Type: application/json
Authorization: Bearer <token>

Criar incorporações

Para criar incorporações de imagem, você precisa passar os dados da imagem como parte de sua solicitação. Os dados de imagem devem estar no formato PNG e codificados como base64.

{
    "model": "${varients-sample}",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ]
}

Gorjeta

Ao criar uma solicitação, leve em consideração o limite de entrada do token para o modelo. Se você precisar incorporar partes maiores de texto, precisará de uma estratégia de fragmentação.

A resposta é a seguinte, onde você pode ver as estatísticas de uso do modelo:

{
    "id": "0ab1234c-d5e6-7fgh-i890-j1234k123456",
    "object": "list",
    "data": [
        {
            "index": 0,
            "object": "embedding",
            "embedding": [
                0.017196655,
                // ...
                -0.000687122,
                -0.025054932,
                -0.015777588
            ]
        }
    ],
    "model": "Cohere-embed-v3-english",
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 0,
        "total_tokens": 9
    }
}

Importante

A computação de incorporações em lotes pode não ser suportada para todos os modelos. Por exemplo, para cohere-embed-v3 o modelo, você precisa enviar uma imagem de cada vez.

Incorporação de imagens e pares de texto

Alguns modelos podem gerar incorporações a partir de imagens e pares de texto. Nesse caso, você pode usar os image campos e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar incorporações para imagens e pares de texto:

{
    "model": "${varients-sample}",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh...",
            "text": "A photo of a cat"
        }
    ]
}

Crie diferentes tipos de incorporações

Alguns modelos podem gerar várias incorporações para a mesma entrada, dependendo de como você planeja usá-las. Esse recurso permite que você recupere incorporações mais precisas para padrões RAG.

O exemplo a seguir mostra como criar incorporações que são usadas para criar uma incorporação para um documento que será armazenado em um banco de dados vetorial:

{
    "model": "${varients-sample}",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "document"
}

Ao trabalhar em uma consulta para recuperar esse documento, você pode usar o trecho de código a seguir para criar as incorporações para a consulta e maximizar o desempenho de recuperação.

{
    "model": "${varients-sample}",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "query"
}

Observe que nem todos os modelos de incorporação suportam a indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.