Como gerar embeddings de imagens com modelos Microsoft Foundry (clássico)

Aplica-se apenas a:Portal Foundry (clássico). Este artigo não está disponível para o novo portal da Foundry. Saiba mais sobre o novo portal.

Nota

Os links neste artigo podem abrir conteúdo na nova documentação do Microsoft Foundry em vez da documentação do Foundry (clássico) que está a ver agora.

Importante

Os itens marcados (pré-visualização) neste artigo encontram-se atualmente em pré-visualização pública. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para cargas de trabalho em produção. Certas funcionalidades podem não ser suportadas ou podem ter capacidades limitadas. Para mais informações, consulte Termos de Utilização Suplementares para Microsoft Azure Pré-visualizações.

Este artigo explica como usar a API de incorporações de imagens com os Microsoft Foundry Models.

Pré-requisitos

Para usar modelos de embedding na sua aplicação, precisa de:

  • Instale o pacote de inferência de IA Azure para Python com o seguinte comando:

    pip install -U azure-ai-inference
    
  • Uma implementação de modelos de embeddings de imagem. Se não tiveres um, lê Adicionar e configurar Foundry Models para adicionar um modelo de embeddings ao teu recurso.

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

Usar embeddings de imagem

Primeiro, crie o cliente para consumir o modelo. O código seguinte utiliza uma URL de endpoint e uma chave que são armazenadas nas variáveis de ambiente.

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

client = ImageEmbeddingsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
    model="Cohere-embed-v3-english"
)

Se configurou o recurso com suporte Microsoft Entra ID, pode usar o seguinte excerto de código para criar um cliente.

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

client = ImageEmbeddingsClient(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=DefaultAzureCredential(),
    model="Cohere-embed-v3-english"
)

Criar embeddings

Para criar embeddings de imagem, precisa de passar os dados da imagem como parte do seu pedido. Os dados da imagem devem estar em 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 = client.embed(
    input=[ image_input ],
)

Dica

Ao criar um pedido, tenha em conta o limite de entrada do token para o modelo. Se precisares de incorporar porções maiores de texto, precisarias de uma estratégia de fragmentação.

A resposta é a seguinte, onde pode ver as estatísticas de utilização do modelo:

import numpy as np

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

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

Importante

O cálculo de embeddings em lotes pode não ser suportado por todos os modelos. Por exemplo, para o modelo Cohere-embed-v3-english, precisa de enviar uma imagem de cada vez.

Incorporação de imagens e pares de texto

Alguns modelos podem gerar embeddings a partir de imagens e pares de texto. Neste caso, pode usar os image campos e text no pedido para passar a imagem e o texto ao modelo. O exemplo seguinte mostra como criar embeddings 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 = client.embed(
    input=[ text_image_input ],
)

Criar diferentes tipos de incorporações (embeddings)

Alguns modelos podem gerar múltiplos embeddings para a mesma entrada, dependendo de como planeias usá-los. Esta funcionalidade permite-lhe recuperar embeddings mais precisos para padrões RAG.

O exemplo seguinte mostra como criar embeddings que são usados para criar um embedding para um documento que será armazenado numa base de dados vetorial:

from azure.ai.inference.models import EmbeddingInputType

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

Quando trabalha numa consulta para recuperar tal documento, pode usar o seguinte excerto de código para criar os embeddings da consulta e maximizar o desempenho da recuperação.

from azure.ai.inference.models import EmbeddingInputType

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

Note que nem todos os modelos de embedding suportam indicar o tipo de entrada no pedido e, nesses casos, é devolvido um erro 422.

Importante

Os itens marcados (pré-visualização) neste artigo encontram-se atualmente em pré-visualização pública. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para cargas de trabalho em produção. Certas funcionalidades podem não ser suportadas ou podem ter capacidades limitadas. Para mais informações, consulte Termos de Utilização Suplementares para Microsoft Azure Pré-visualizações.

Este artigo explica como usar a API de incorporações de imagens com os Microsoft Foundry Models.

Pré-requisitos

Para usar modelos de embedding na sua aplicação, precisa de:

  • Instale a biblioteca de inferência Azure para JavaScript com o seguinte comando:

    npm install @azure-rest/ai-inference
    npm install @azure/core-auth
    npm install @azure/identity
    

    Se estiver a usar Node.js, pode configurar as dependências em package.json:

    package.json

    {
      "name": "main_app",
      "version": "1.0.0",
      "description": "",
      "main": "app.js",
      "type": "module",
      "dependencies": {
        "@azure-rest/ai-inference": "1.0.0-beta.6",
        "@azure/core-auth": "1.9.0",
        "@azure/core-sse": "2.2.0",
        "@azure/identity": "4.8.0"
      }
    }
    
  • Importa o seguinte:

    import ModelClient from "@azure-rest/ai-inference";
    import { isUnexpected } from "@azure-rest/ai-inference";
    import { createSseStream } from "@azure/core-sse";
    import { AzureKeyCredential } from "@azure/core-auth";
    import { DefaultAzureCredential } from "@azure/identity";
    
  • Uma implementação de modelos de embeddings de imagem. Se não tiveres um, lê Adicionar e configurar Foundry Models para adicionar um modelo de embeddings ao teu recurso.

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

Usar embeddings de imagem

Primeiro, crie o cliente para consumir o modelo. O código seguinte utiliza uma URL de endpoint e uma chave que são armazenadas nas variáveis de ambiente.

const client = ModelClient(
    "https://<resource>.services.ai.azure.com/models", 
    new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);

Se configurou o recurso com suporte Microsoft Entra ID, pode usar o seguinte excerto de código para criar um cliente.

const clientOptions = { credentials: { "https://cognitiveservices.azure.com" } };

const client = ModelClient(
    "https://<resource>.services.ai.azure.com/models", 
    new DefaultAzureCredential()
    clientOptions,
);

Criar embeddings

Para criar embeddings de imagem, precisa de passar os dados da imagem como parte do seu pedido. Os dados da imagem devem estar em 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 } ],
        model: "Cohere-embed-v3-english",
    }
});

Dica

Ao criar um pedido, tenha em conta o limite de entrada do token para o modelo. Se precisares de incorporar porções maiores de texto, precisarias de uma estratégia de fragmentação.

A resposta é a seguinte, onde pode ver as estatísticas de utilização do modelo:

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

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

Importante

O cálculo de embeddings em lotes pode não ser suportado por todos os modelos. Por exemplo, para o modelo Cohere-embed-v3-english, precisa de enviar uma imagem de cada vez.

Incorporação de imagens e pares de texto

Alguns modelos podem gerar embeddings a partir de imagens e pares de texto. Neste caso, pode usar os image campos e text no pedido para passar a imagem e o texto ao modelo. O exemplo seguinte mostra como criar embeddings 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
            }
        ],
        model: "Cohere-embed-v3-english",
    }
});

Criar diferentes tipos de incorporações (embeddings)

Alguns modelos podem gerar múltiplos embeddings para a mesma entrada, dependendo de como planeias usá-los. Esta funcionalidade permite-lhe recuperar embeddings mais precisos para padrões RAG.

O exemplo seguinte mostra como criar embeddings que são usados para criar um embedding para um documento que será armazenado numa base de dados vetorial:

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
        model: "Cohere-embed-v3-english",
    }
});

Quando trabalha numa consulta para recuperar tal documento, pode usar o seguinte excerto de código para criar os embeddings da consulta e maximizar o desempenho da recuperação.

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
        model: "Cohere-embed-v3-english",
    }
});

Note que nem todos os modelos de embedding suportam indicar o tipo de entrada no pedido e, nesses casos, é devolvido um erro 422.

Nota

O uso de embeddings de imagem só é suportado com pedidos em Python, JavaScript, C# ou REST.

Importante

Os itens marcados (pré-visualização) neste artigo encontram-se atualmente em pré-visualização pública. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para cargas de trabalho em produção. Certas funcionalidades podem não ser suportadas ou podem ter capacidades limitadas. Para mais informações, consulte Termos de Utilização Suplementares para Microsoft Azure Pré-visualizações.

Este artigo explica como usar a API de incorporações de imagens com os Microsoft Foundry Models.

Pré-requisitos

Para usar modelos de embedding na sua aplicação, precisa de:

  • Instale o pacote de inferência de IA Azure com o seguinte comando:

    dotnet add package Azure.AI.Inference --prerelease
    
  • Se estiver a usar o Entra ID, também precisa do seguinte pacote:

    dotnet add package Azure.Identity
    
  • Uma implementação de modelos de embeddings de imagem. Se não tiveres um, lê Adicionar e configurar Foundry Models para adicionar um modelo de embeddings ao teu recurso.

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

Usar incorporações de imagem

Primeiro, crie o cliente para consumir o modelo. O código seguinte utiliza uma URL de endpoint e uma chave que são armazenadas nas variáveis de ambiente.

ImageEmbeddingsClient client = new ImageEmbeddingsClient(
    new Uri("https://<resource>.services.ai.azure.com/models"),
    new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);

Se configurou o recurso com suporte Microsoft Entra ID, pode usar o seguinte excerto de código para criar um cliente. Note que includeInteractiveCredentials está definido apenas true para fins de demonstração, para que a autenticação possa ser feita através do navegador web. Para cargas de trabalho em produção, deves remover o parâmetro.

TokenCredential credential = new DefaultAzureCredential(includeInteractiveCredentials: true);
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions();
BearerTokenAuthenticationPolicy tokenPolicy = new BearerTokenAuthenticationPolicy(credential, new string[] { "https://cognitiveservices.azure.com/.default" });

clientOptions.AddPolicy(tokenPolicy, HttpPipelinePosition.PerRetry);

ImageEmbeddingsClient client = new ImageEmbeddingsClient(
    new Uri("https://<resource>.services.ai.azure.com/models"),
    credential,
    clientOptions
);

Criar embeddings

Para criar embeddings de imagem, é necessário fornecer os dados da imagem como parte do seu pedido. Os dados da imagem devem estar em formato PNG e codificados como base64.

List<ImageEmbeddingInput> input = new List<ImageEmbeddingInput>
{
    ImageEmbeddingInput.Load(imageFilePath:"sampleImage.png", imageFormat:"png")
};

var requestOptions = new ImageEmbeddingsOptions()
{
    Input = input,
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Dica

Ao criar um pedido, tenha em conta o limite de entrada do token para o modelo. Se precisares de incorporar porções maiores de texto, precisarias de uma estratégia de fragmentação.

A resposta é a seguinte, onde pode ver as estatísticas de utilização do modelo:

foreach (EmbeddingItem item in response.Value.Data)
{
    List<float> embedding = item.Embedding.ToObjectFromJson<List<float>>();
    Console.WriteLine($"Index: {item.Index}, Embedding: <{string.Join(", ", embedding)}>");
}

Importante

O cálculo de embeddings em lotes pode não ser suportado para todos os modelos. Por exemplo, para o modelo Cohere-embed-v3-english, precisa de enviar uma imagem de cada vez.

Incorporação de imagens e pares de texto

Alguns modelos podem gerar embeddings a partir de imagens e pares de texto. Neste caso, pode usar os image campos e text no pedido para passar a imagem e o texto ao modelo. O exemplo seguinte mostra como criar embeddings para imagens e pares de texto:

var image_input = ImageEmbeddingInput.Load(imageFilePath:"sampleImage.png", imageFormat:"png")
image_input.text = "A cute baby sea otter"

var requestOptions = new ImageEmbeddingsOptions()
{
    Input = new List<ImageEmbeddingInput>
    {
        image_input
    },
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Criar diferentes tipos de incorporações (embeddings)

Alguns modelos podem gerar múltiplos embeddings para a mesma entrada, dependendo de como planeias usá-los. Esta funcionalidade permite-lhe recuperar embeddings mais precisos para padrões RAG.

O exemplo seguinte mostra como criar embeddings para um documento que será armazenado numa base de dados vetorial:

var requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.DOCUMENT, 
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Quando trabalha numa consulta para recuperar tal documento, pode usar o seguinte excerto de código para criar os embeddings da consulta e maximizar o desempenho da recuperação.

var requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.QUERY,
    Model = "Cohere-embed-v3-english"
};

Response<EmbeddingsResult> response = client.Embed(requestOptions);

Note que nem todos os modelos de embedding suportam indicar o tipo de entrada no pedido e, nesses casos, é devolvido um erro 422.

Importante

Os itens marcados (pré-visualização) neste artigo encontram-se atualmente em pré-visualização pública. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para cargas de trabalho em produção. Certas funcionalidades podem não ser suportadas ou podem ter capacidades limitadas. Para mais informações, consulte Termos de Utilização Suplementares para Microsoft Azure Pré-visualizações.

Este artigo explica como usar a API de incorporações de imagens com os Microsoft Foundry Models.

Pré-requisitos

Para usar modelos de embedding na sua aplicação, precisa de:

  • Uma implementação de modelos de embeddings de imagem. Se não tiveres um, lê Adicionar e configurar Foundry Models para adicionar um modelo de embeddings ao teu recurso.

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

Usar embeddings de imagem

Para usar os embeddings de texto, utilize a rota /images/embeddings anexada ao seu URL base juntamente com a credencial indicada em api-key. Authorization cabeçalho também é suportado no formato Bearer <key>.

POST https://<resource>.services.ai.azure.com/models/images/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
api-key: <key>

Se configurou o recurso com suporte a Microsoft Entra ID, passe o seu token no cabeçalho Authorization com o formato Bearer <token>. Use o âmbito https://ai.azure.com/.default.

POST https://<resource>.services.ai.azure.com/models/images/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
Authorization: Bearer <token>

Usar o Microsoft Entra ID pode exigir uma configuração adicional no seu recurso para conceder acesso. Aprenda a configurar autenticação sem chave com Microsoft Entra ID.

Criar embeddings

Para criar embeddings de imagem, precisa de passar os dados da imagem como parte do seu pedido. Os dados da imagem devem estar em formato PNG e codificados como base64.

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ]
}

Dica

Ao criar um pedido, tenha em conta o limite de entrada do token para o modelo. Se precisares de incorporar porções maiores de texto, precisarias de uma estratégia de fragmentação.

A resposta é a seguinte, onde pode ver as estatísticas de utilização 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

O cálculo de embeddings em lotes pode não ser suportado por todos os modelos. Por exemplo, para o modelo Cohere-embed-v3-english, precisa de enviar uma imagem de cada vez.

Incorporação de imagens e pares de texto

Alguns modelos podem gerar embeddings a partir de imagens e pares de texto. Neste caso, pode usar os image campos e text no pedido para passar a imagem e o texto ao modelo. O exemplo seguinte mostra como criar embeddings para imagens e pares de texto:

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh...",
            "text": "A photo of a cat"
        }
    ]
}

Criar diferentes tipos de incorporações (embeddings)

Alguns modelos podem gerar múltiplos embeddings para a mesma entrada, dependendo de como planeias usá-los. Esta funcionalidade permite-lhe recuperar embeddings mais precisos para padrões RAG.

O exemplo seguinte mostra como criar embeddings que são usados para criar um embedding para um documento que será armazenado numa base de dados vetorial:

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "document"
}

Quando trabalha numa consulta para recuperar tal documento, pode usar o seguinte excerto de código para criar os embeddings da consulta e maximizar o desempenho da recuperação.

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "input_type": "query"
}

Note que nem todos os modelos de embedding suportam indicar o tipo de entrada no pedido e, nesses casos, é devolvido um erro 422.