Compartilhar via


Como gerar inserções com a 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 com modelos implantados na inferência de modelo de IA do Azure nos serviços 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 EmbeddingsClient
from azure.core.credentials import AzureKeyCredential

model = EmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
    model="text-embedding-3-small"
)

Se você tiver configurado 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 EmbeddingsClient
from azure.core.credentials import AzureKeyCredential

model = EmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
    model="text-embedding-3-small"
)

Criar inserções

Crie uma solicitação de inserção para exibir a saída do modelo.

response = model.embed(
    input=["The ultimate answer to the question of life"],
)

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 é a seguinte, na qual 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)

Pode ser útil computar inserções em lotes de entrada. O parâmetro inputs pode ser uma lista de cadeias de caracteres, em que cada cadeia de caracteres é uma entrada diferente. Por sua vez, a resposta é uma lista de inserções, em que cada uma corresponde à entrada na mesma posição.

response = model.embed(
    input=[
        "The ultimate answer to the question of life", 
        "The largest planet in our solar system is Jupiter",
    ],
)

A resposta é a seguinte, na qual 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)

Dica

Ao criar lotes de solicitação, considere o limite do lote para cada um dos modelos. A maioria dos modelos tem um limite de lote de 1024.

Especificar dimensões das inserções

Você pode especificar as dimensões para as inserções. O código de exemplo a seguir mostra como criar inserções com dimensões de 1024. Observe que nem todos os modelos de inserção são compatíveis indicando as dimensões na solicitação e, nesses casos, um erro 422 é retornado.

response = model.embed(
    input=["The ultimate answer to the question of life"],
    dimensions=1024,
)

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=["The answer to the ultimate question of life, the universe, and everything is 42"],
    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=["What's the ultimate meaning of life?"],
    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. As inserções de tipo Text são retornadas, por padrão.

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 com modelos implantados na inferência de modelo de IA do Azure nos serviços 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),
    "text-embedding-3-small"
);

Se você tiver configurado 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(),
    "text-embedding-3-small"
);

Criar inserções

Crie uma solicitação de inserção para exibir a saída do modelo.

var response = await client.path("/embeddings").post({
    body: {
        input: ["The ultimate answer to the question of life"],
    }
});

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 é a seguinte, na qual 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);

Pode ser útil computar inserções em lotes de entrada. O parâmetro inputs pode ser uma lista de cadeias de caracteres, em que cada cadeia de caracteres é uma entrada diferente. Por sua vez, a resposta é uma lista de inserções, em que cada uma corresponde à entrada na mesma posição.

var response = await client.path("/embeddings").post({
    body: {
        input: [
            "The ultimate answer to the question of life", 
            "The largest planet in our solar system is Jupiter",
        ],
    }
});

A resposta é a seguinte, na qual 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);

Dica

Ao criar lotes de solicitação, considere o limite do lote para cada um dos modelos. A maioria dos modelos tem um limite de lote de 1024.

Especificar dimensões das inserções

Você pode especificar as dimensões para as inserções. O código de exemplo a seguir mostra como criar inserções com dimensões de 1024. Observe que nem todos os modelos de inserção são compatíveis indicando as dimensões na solicitação e, nesses casos, um erro 422 é retornado.

var response = await client.path("/embeddings").post({
    body: {
        input: ["The ultimate answer to the question of life"],
        dimensions: 1024,
    }
});

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: ["The answer to the ultimate question of life, the universe, and everything is 42"],
        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: ["What's the ultimate meaning of life?"],
        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. As inserções de tipo Text são retornadas, por padrão.

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 com modelos implantados na inferência de modelo de IA do Azure nos serviços de IA do Azure.

Pré-requisitos

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

  • Uma implantação de modelo de inserções. Se não tiver uma, leia Adicionar e configurar modelos para os serviços de IA do Azure para adicionar um modelo de inserções ao seu recurso.

  • Adicione o pacote de inferência de IA do Azure ao projeto:

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-ai-inference</artifactId>
        <version>1.0.0-beta.1</version>
    </dependency>
    
  • Se estiver usando o Entra ID, você também precisará do seguinte pacote:

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.13.3</version>
    </dependency>
    
  • Importar os seguintes namespaces:

    package com.azure.ai.inference.usage;
    
    import com.azure.ai.inference.EmbeddingsClient;
    import com.azure.ai.inference.EmbeddingsClientBuilder;
    import com.azure.ai.inference.models.EmbeddingsResult;
    import com.azure.ai.inference.models.EmbeddingItem;
    import com.azure.core.credential.AzureKeyCredential;
    import com.azure.core.util.Configuration;
    
    import java.util.ArrayList;
    import java.util.List;
    

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.

EmbeddingsClient client = new EmbeddingsClient(
    URI.create(System.getProperty("AZURE_INFERENCE_ENDPOINT")),
    new AzureKeyCredential(System.getProperty("AZURE_INFERENCE_CREDENTIAL")),
    "text-embedding-3-small"
);

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

client = new EmbeddingsClient(
    URI.create(System.getProperty("AZURE_INFERENCE_ENDPOINT")),
    new DefaultAzureCredential(),
    "text-embedding-3-small"
);

Criar inserções

Crie uma solicitação de inserção para exibir a saída do modelo.

EmbeddingsOptions requestOptions = new EmbeddingsOptions()
    .setInput(Arrays.asList("The ultimate answer to the question of life"));

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

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 é a seguinte, na qual você pode ver as estatísticas de uso do modelo:

System.out.println("Embedding: " + response.getValue().getData());
System.out.println("Model: " + response.getValue().getModel());
System.out.println("Usage:");
System.out.println("\tPrompt tokens: " + response.getValue().getUsage().getPromptTokens());
System.out.println("\tTotal tokens: " + response.getValue().getUsage().getTotalTokens());

Pode ser útil computar inserções em lotes de entrada. O parâmetro inputs pode ser uma lista de cadeias de caracteres, em que cada cadeia de caracteres é uma entrada diferente. Por sua vez, a resposta é uma lista de inserções, em que cada uma corresponde à entrada na mesma posição.

requestOptions = new EmbeddingsOptions()
    .setInput(Arrays.asList(
        "The ultimate answer to the question of life", 
        "The largest planet in our solar system is Jupiter"
    ));

response = client.embed(requestOptions);

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

Dica

Ao criar lotes de solicitação, considere o limite do lote para cada um dos modelos. A maioria dos modelos tem um limite de lote de 1024.

Especificar dimensões das inserções

Você pode especificar as dimensões para as inserções. O código de exemplo a seguir mostra como criar inserções com dimensões de 1024. Observe que nem todos os modelos de inserção são compatíveis indicando as dimensões na solicitação e, nesses casos, um erro 422 é retornado.

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:

List<String> input = Arrays.asList("The answer to the ultimate question of life, the universe, and everything is 42");
requestOptions = new EmbeddingsOptions(input, EmbeddingInputType.DOCUMENT);

response = client.embed(requestOptions);

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.

input = Arrays.asList("What's the ultimate meaning of life?");
requestOptions = new EmbeddingsOptions(input, EmbeddingInputType.QUERY);

response = client.embed(requestOptions);

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. As inserções de tipo Text são retornadas, por padrão.

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 com modelos implantados na inferência de modelo de IA do Azure nos serviços 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.

EmbeddingsClient client = new EmbeddingsClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
    new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL")),
    "text-embedding-3-small"
);

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

client = new EmbeddingsClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
    new DefaultAzureCredential(includeInteractiveCredentials: true),
    "text-embedding-3-small"
);

Criar inserções

Crie uma solicitação de inserção para exibir a saída do modelo.

EmbeddingsOptions requestOptions = new EmbeddingsOptions()
{
    Input = {
        "The ultimate answer to the question of life"
    },
};

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

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 é a seguinte, na qual você pode ver as estatísticas de uso do modelo:

Console.WriteLine($"Embedding: {response.Value.Data}");
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");

Pode ser útil computar inserções em lotes de entrada. O parâmetro inputs pode ser uma lista de cadeias de caracteres, em que cada cadeia de caracteres é uma entrada diferente. Por sua vez, a resposta é uma lista de inserções, em que cada uma corresponde à entrada na mesma posição.

EmbeddingsOptions requestOptions = new EmbeddingsOptions()
{
    Input = {
        "The ultimate answer to the question of life", 
        "The largest planet in our solar system is Jupiter"
    },
};

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

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

Dica

Ao criar lotes de solicitação, considere o limite do lote para cada um dos modelos. A maioria dos modelos tem um limite de lote de 1024.

Especificar dimensões das inserções

Você pode especificar as dimensões para as inserções. O código de exemplo a seguir mostra como criar inserções com dimensões de 1024. Observe que nem todos os modelos de inserção são compatíveis indicando as dimensões na solicitação e, nesses casos, um erro 422 é retornado.

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 input = new List<string> { 
    "The answer to the ultimate question of life, the universe, and everything is 42"
};
var requestOptions = new EmbeddingsOptions(input, EmbeddingInputType.DOCUMENT);

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

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 input = new List<string> { 
    "What's the ultimate meaning of life?"
};
var requestOptions = new EmbeddingsOptions(input, EmbeddingInputType.QUERY);

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

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. As inserções de tipo Text são retornadas, por padrão.

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 com modelos implantados na inferência de modelo de IA do Azure nos serviços 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 /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/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/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
Authorization: Bearer <token>

Criar inserções

Crie uma solicitação de inserção para exibir a saída do modelo.

{
    "input": [
        "The ultimate answer to the question of life"
    ]
}

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 é a seguinte, na qual 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": "text-embedding-3-small",
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 0,
        "total_tokens": 9
    }
}

Pode ser útil computar inserções em lotes de entrada. O parâmetro inputs pode ser uma lista de cadeias de caracteres, em que cada cadeia de caracteres é uma entrada diferente. Por sua vez, a resposta é uma lista de inserções, em que cada uma corresponde à entrada na mesma posição.

{
    "input": [
        "The ultimate answer to the question of life", 
        "The largest planet in our solar system is Jupiter"
    ]
}

A resposta é a seguinte, na qual 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
            ]
        },
        {
            "index": 1,
            "object": "embedding",
            "embedding": [
                0.017196655,
                // ...
                -0.000687122,
                -0.025054932,
                -0.015777588
            ]
        }
    ],
    "model": "text-embedding-3-small",
    "usage": {
        "prompt_tokens": 19,
        "completion_tokens": 0,
        "total_tokens": 19
    }
}

Dica

Ao criar lotes de solicitação, considere o limite do lote para cada um dos modelos. A maioria dos modelos tem um limite de lote de 1024.

Especificar dimensões das inserções

Você pode especificar as dimensões para as inserções. O código de exemplo a seguir mostra como criar inserções com dimensões de 1024. Observe que nem todos os modelos de inserção são compatíveis indicando as dimensões na solicitação e, nesses casos, um erro 422 é retornado.

{
    "input": [
        "The ultimate answer to the question of life"
    ],
    "dimensions": 1024
}

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:

{
    "input": [
        "The answer to the ultimate question of life, the universe, and everything is 42"
    ],
    "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.

{
    "input": [
        "What's the ultimate meaning of life?"
    ],
    "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. As inserções de tipo Text são retornadas, por padrão.