Compartilhar via


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

Importante

Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Este artigo explica como usar a API de inserções de imagem com modelos implantados na inferência de modelo de IA do Azure na Fábrica de IA do Azure.

Pré-requisitos

Para usar modelos de inserção no aplicativo, é necessário:

Usa incorporações

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa um URL de ponto de extremidade e uma chave que são armazenados 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 snippet 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 inserções

Para criar inserções de imagem, é necessário passar os dados da imagem como parte da solicitação. Os dados da 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 ],
)

Dica

Ao criar uma solicitação, considere o limite de entrada do token para o modelo. Se você precisar inserir partes maiores de texto, será necessário ter uma estratégia de agrupamento.

A resposta é semelhante ao seguinte e é possível observar 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

Talvez não haja suporte para inserções de computação em lotes em todos os modelos. Por exemplo, para o modelo cohere-embed-v3, você precisa enviar uma imagem por vez.

Inserindo imagens e pares de texto

Alguns modelos podem gerar inserções a partir de imagens e pares de texto. Nesse caso, você pode usar os campos image e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar inserções de 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 ],
)

Criar diferentes tipos de inserções

Alguns modelos podem gerar várias inserções para a mesma entrada, dependendo de como você planeja usá-las. Essa funcionalidade permite recuperar inserções mais precisas para padrões de RAG.

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

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 inserçõ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 inserção dão suporte à indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.

Importante

Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Este artigo explica como usar a API de inserções de imagem com modelos implantados na inferência de modelo de IA do Azure na Fábrica de IA do Azure.

Pré-requisitos

Para usar modelos de inserção no aplicativo, é necessário:

Usa incorporações

Primeiro, crie o cliente para consumir o modelo. O código a seguir usa um URL de ponto de extremidade e uma chave que são armazenados 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 snippet 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 inserções

Para criar inserções de imagem, é necessário passar os dados da imagem como parte da solicitação. Os dados da 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 } ],
    }
});

Dica

Ao criar uma solicitação, considere o limite de entrada do token para o modelo. Se você precisar inserir partes maiores de texto, será necessário ter uma estratégia de agrupamento.

A resposta é semelhante ao seguinte e é possível observar 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

Talvez não haja suporte para inserções de computação em lotes em todos os modelos. Por exemplo, para o modelo cohere-embed-v3, você precisa enviar uma imagem por vez.

Inserindo imagens e pares de texto

Alguns modelos podem gerar inserções a partir de imagens e pares de texto. Nesse caso, você pode usar os campos image e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar inserções de 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
            }
        ]
    }
});

Criar diferentes tipos de inserções

Alguns modelos podem gerar várias inserções para a mesma entrada, dependendo de como você planeja usá-las. Essa funcionalidade permite recuperar inserções mais precisas para padrões de RAG.

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

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 inserçõ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 inserção dão suporte à indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.

Observação

O uso de inserções de imagem só tem suporte com solicitações Python, JavaScript ou REST.

Observação

O uso de inserções de imagem só tem suporte com solicitações Python, JavaScript ou REST.

Importante

Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Este artigo explica como usar a API de inserções de imagem com modelos implantados na inferência de modelo de IA do Azure na Fábrica de IA do Azure.

Pré-requisitos

Para usar modelos de inserção no aplicativo, é necessário:

Usa incorporações

Para usar as inserções de texto, use a rota /images/embeddings acrescentada ao URL base junto a credencial indicada em api-key. O cabeçalho Authorization também tem suporte 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 você configurou o recurso com suporte aoMicrosoft Entra ID, passe o token no cabeçalho Authorization:

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

Criar inserções

Para criar inserções de imagem, é necessário passar os dados da imagem como parte da solicitação. Os dados da imagem devem estar no formato PNG e codificados como base64.

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

Dica

Ao criar uma solicitação, considere o limite de entrada do token para o modelo. Se você precisar inserir partes maiores de texto, será necessário ter uma estratégia de agrupamento.

A resposta é semelhante ao seguinte e é possível observar 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

Talvez não haja suporte para inserções de computação em lotes em todos os modelos. Por exemplo, para o modelo cohere-embed-v3, você precisa enviar uma imagem por vez.

Inserindo imagens e pares de texto

Alguns modelos podem gerar inserções a partir de imagens e pares de texto. Nesse caso, você pode usar os campos image e text na solicitação para passar a imagem e o texto para o modelo. O exemplo a seguir mostra como criar inserções de 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 inserções

Alguns modelos podem gerar várias inserções para a mesma entrada, dependendo de como você planeja usá-las. Essa funcionalidade permite recuperar inserções mais precisas para padrões de RAG.

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

{
    "model": "Cohere-embed-v3-english",
    "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 inserções para a consulta e maximizar o desempenho de recuperação.

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

Observe que nem todos os modelos de inserção dão suporte à indicação do tipo de entrada na solicitação e, nesses casos, um erro 422 é retornado.