Compartir a través de


Cómo generar inserciones con inferencia del modelo de Azure AI

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de inserciones con modelos implementados en la inferencia de modelos de Azure AI en los servicios de Azure AI.

Requisitos previos

Para usar modelos de inserción en la aplicación, necesita lo siguiente:

Uso de incrustaciones

En primer lugar, cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.

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"
)

Si ha configurado el recurso para que admita Microsoft Entra ID, puede utilizar el siguiente fragmento de código para crear un 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"
)

Creación de inserciones

Cree una solicitud de inserción para ver la salida del modelo.

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

Sugerencia

Al crear una solicitud, tenga en cuenta el límite de entrada del token para el modelo. Si necesita insertar partes más grandes del texto, necesitará una estrategia de fragmentación.

La respuesta es la siguiente, donde puede ver las estadísticas de uso del 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)

Puede ser útil para calcular inserciones en lotes de entrada. El parámetro inputs puede ser una lista de cadenas, donde cada cadena es una entrada diferente. A su vez, la respuesta es una lista de inserciones, donde cada inserción corresponde a la entrada en la misma posición.

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

La respuesta es la siguiente, donde puede ver las estadísticas de uso del 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)

Sugerencia

Al crear lotes de solicitud, tenga en cuenta el límite de lotes para cada uno de los modelos. La mayoría de los modelos tienen un límite de lotes de 1024.

Especificar dimensiones de inserción

Puede especificar el número de dimensiones para las inserciones. En el código de ejemplo siguiente se muestra cómo crear inserciones con 1024 dimensiones. Observe que no todos los modelos de inserción admiten que indique el número de dimensiones de la solicitud y, en esos casos, se devuelve un error 422.

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

Creación de diferentes tipos de inserciones

Algunos modelos pueden generar múltiples inserciones para la misma entrada en función de cómo planee usarlos. Esta capacidad le permite recuperar inserciones más precisas para los patrones de RAG.

El siguiente ejemplo muestra cómo crear inserciones que se utilizan para crear una inserción para un documento que se almacenará en una base de datos vectorial:

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,
)

Cuando trabaje en una consulta para recuperar un documento de este tipo, puede usar el siguiente fragmento de código para crear las inserciones para la consulta y maximizar el rendimiento de la recuperación.

from azure.ai.inference.models import EmbeddingInputType

response = model.embed(
    input=["What's the ultimate meaning of life?"],
    input_type=EmbeddingInputType.QUERY,
)

Observe que no todos los modelos de inserción admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422. De forma predeterminada, se devuelven inserciones de tipo Text.

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de inserciones con modelos implementados en la inferencia de modelos de Azure AI en los servicios de Azure AI.

Requisitos previos

Para usar modelos de inserción en la aplicación, necesita lo siguiente:

Uso de incrustaciones

En primer lugar, cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.

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"
);

Si ha configurado el recurso para que admita Microsoft Entra ID, puede utilizar el siguiente fragmento de código para crear un 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"
);

Creación de inserciones

Cree una solicitud de inserción para ver la salida del modelo.

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

Sugerencia

Al crear una solicitud, tenga en cuenta el límite de entrada del token para el modelo. Si necesita insertar partes más grandes del texto, necesitará una estrategia de fragmentación.

La respuesta es la siguiente, donde puede ver las estadísticas de uso del modelo:

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

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

Puede ser útil para calcular inserciones en lotes de entrada. El parámetro inputs puede ser una lista de cadenas, donde cada cadena es una entrada diferente. A su vez, la respuesta es una lista de inserciones, donde cada inserción corresponde a la entrada en la misma posición.

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",
        ],
    }
});

La respuesta es la siguiente, donde puede ver las estadísticas de uso del modelo:

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

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

Sugerencia

Al crear lotes de solicitud, tenga en cuenta el límite de lotes para cada uno de los modelos. La mayoría de los modelos tienen un límite de lotes de 1024.

Especificar dimensiones de inserción

Puede especificar el número de dimensiones para las inserciones. En el código de ejemplo siguiente se muestra cómo crear inserciones con 1024 dimensiones. Observe que no todos los modelos de inserción admiten que indique el número de dimensiones de la solicitud y, en esos casos, se devuelve un error 422.

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

Creación de diferentes tipos de inserciones

Algunos modelos pueden generar múltiples inserciones para la misma entrada en función de cómo planee usarlos. Esta capacidad le permite recuperar inserciones más precisas para los patrones de RAG.

El siguiente ejemplo muestra cómo crear inserciones que se utilizan para crear una inserción para un documento que se almacenará en una base de datos vectorial:

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",
    }
});

Cuando trabaje en una consulta para recuperar un documento de este tipo, puede usar el siguiente fragmento de código para crear las inserciones para la consulta y maximizar el rendimiento de la recuperación.

var response = await client.path("/embeddings").post({
    body: {
        input: ["What's the ultimate meaning of life?"],
        input_type: "query",
    }
});

Observe que no todos los modelos de inserción admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422. De forma predeterminada, se devuelven inserciones de tipo Text.

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de inserciones con modelos implementados en la inferencia de modelos de Azure AI en los servicios de Azure AI.

Requisitos previos

Para usar modelos de inserción en la aplicación, necesita lo siguiente:

  • Implementación de modelo de inserciones. Si no tiene una lectura, lea Incorporación y configuración de modelos en los servicios de Azure AI para agregar un modelo de inserción al recurso.

  • Agregue el paquete de inferencia de Azure AI al proyecto:

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-ai-inference</artifactId>
        <version>1.0.0-beta.1</version>
    </dependency>
    

    Sugerencia

    Más información sobre el Paquete de inferencia y referencia de Azure AI.

  • Si usa Entra ID, también necesita el siguiente paquete:

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.13.3</version>
    </dependency>
    
  • Importar el siguiente espacio de nombres:

    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;
    

Uso de incrustaciones

En primer lugar, cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.

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

Si ha configurado el recurso para que admita Microsoft Entra ID, puede utilizar el siguiente fragmento de código para crear un cliente.

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

Creación de inserciones

Cree una solicitud de inserción para ver la salida del modelo.

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

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

Sugerencia

Al crear una solicitud, tenga en cuenta el límite de entrada del token para el modelo. Si necesita insertar partes más grandes del texto, necesitará una estrategia de fragmentación.

La respuesta es la siguiente, donde puede ver las estadísticas de uso del 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());

Puede ser útil para calcular inserciones en lotes de entrada. El parámetro inputs puede ser una lista de cadenas, donde cada cadena es una entrada diferente. A su vez, la respuesta es una lista de inserciones, donde cada inserción corresponde a la entrada en la misma posición.

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);

La respuesta es la siguiente, donde puede ver las estadísticas de uso del modelo:

Sugerencia

Al crear lotes de solicitud, tenga en cuenta el límite de lotes para cada uno de los modelos. La mayoría de los modelos tienen un límite de lotes de 1024.

Especificar dimensiones de inserción

Puede especificar el número de dimensiones para las inserciones. En el código de ejemplo siguiente se muestra cómo crear inserciones con 1024 dimensiones. Observe que no todos los modelos de inserción admiten que indique el número de dimensiones de la solicitud y, en esos casos, se devuelve un error 422.

Creación de diferentes tipos de inserciones

Algunos modelos pueden generar múltiples inserciones para la misma entrada en función de cómo planee usarlos. Esta capacidad le permite recuperar inserciones más precisas para los patrones de RAG.

El siguiente ejemplo muestra cómo crear inserciones que se utilizan para crear una inserción para un documento que se almacenará en una base de datos vectorial:

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);

Cuando trabaje en una consulta para recuperar un documento de este tipo, puede usar el siguiente fragmento de código para crear las inserciones para la consulta y maximizar el rendimiento de la recuperación.

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

response = client.embed(requestOptions);

Observe que no todos los modelos de inserción admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422. De forma predeterminada, se devuelven inserciones de tipo Text.

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de inserciones con modelos implementados en la inferencia de modelos de Azure AI en los servicios de Azure AI.

Requisitos previos

Para usar modelos de inserción en la aplicación, necesita lo siguiente:

Uso de incrustaciones

En primer lugar, cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.

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

Si ha configurado el recurso para que admita Microsoft Entra ID, puede utilizar el siguiente fragmento de código para crear un cliente.

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

Creación de inserciones

Cree una solicitud de inserción para ver la salida del modelo.

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

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

Sugerencia

Al crear una solicitud, tenga en cuenta el límite de entrada del token para el modelo. Si necesita insertar partes más grandes del texto, necesitará una estrategia de fragmentación.

La respuesta es la siguiente, donde puede ver las estadísticas de uso del 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}");

Puede ser útil para calcular inserciones en lotes de entrada. El parámetro inputs puede ser una lista de cadenas, donde cada cadena es una entrada diferente. A su vez, la respuesta es una lista de inserciones, donde cada inserción corresponde a la entrada en la misma posición.

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);

La respuesta es la siguiente, donde puede ver las estadísticas de uso del modelo:

Sugerencia

Al crear lotes de solicitud, tenga en cuenta el límite de lotes para cada uno de los modelos. La mayoría de los modelos tienen un límite de lotes de 1024.

Especificar dimensiones de inserción

Puede especificar el número de dimensiones para las inserciones. En el código de ejemplo siguiente se muestra cómo crear inserciones con 1024 dimensiones. Observe que no todos los modelos de inserción admiten que indique el número de dimensiones de la solicitud y, en esos casos, se devuelve un error 422.

Creación de diferentes tipos de inserciones

Algunos modelos pueden generar múltiples inserciones para la misma entrada en función de cómo planee usarlos. Esta capacidad le permite recuperar inserciones más precisas para los patrones de RAG.

El siguiente ejemplo muestra cómo crear inserciones que se utilizan para crear una inserción para un documento que se almacenará en una base de datos vectorial:

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);

Cuando trabaje en una consulta para recuperar un documento de este tipo, puede usar el siguiente fragmento de código para crear las inserciones para la consulta y maximizar el rendimiento de la recuperación.

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 no todos los modelos de inserción admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422. De forma predeterminada, se devuelven inserciones de tipo Text.

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de inserciones con modelos implementados en la inferencia de modelos de Azure AI en los servicios de Azure AI.

Requisitos previos

Para usar modelos de inserción en la aplicación, necesita lo siguiente:

Uso de incrustaciones

Para usar las inserciones de texto, use la ruta /embeddings anexada a la dirección URL base junto con la credencial indicada en api-key. El encabezado Authorization también se admite con el 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>

Si ha configurado el recurso con el soporte de Microsoft Entra ID, pase el token en el encabezado Authorization:

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

Creación de inserciones

Cree una solicitud de inserción para ver la salida del modelo.

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

Sugerencia

Al crear una solicitud, tenga en cuenta el límite de entrada del token para el modelo. Si necesita insertar partes más grandes del texto, necesitará una estrategia de fragmentación.

La respuesta es la siguiente, donde puede ver las estadísticas de uso del 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
    }
}

Puede ser útil para calcular inserciones en lotes de entrada. El parámetro inputs puede ser una lista de cadenas, donde cada cadena es una entrada diferente. A su vez, la respuesta es una lista de inserciones, donde cada inserción corresponde a la entrada en la misma posición.

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

La respuesta es la siguiente, donde puede ver las estadísticas de uso del 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
    }
}

Sugerencia

Al crear lotes de solicitud, tenga en cuenta el límite de lotes para cada uno de los modelos. La mayoría de los modelos tienen un límite de lotes de 1024.

Especificar dimensiones de inserción

Puede especificar el número de dimensiones para las inserciones. En el código de ejemplo siguiente se muestra cómo crear inserciones con 1024 dimensiones. Observe que no todos los modelos de inserción admiten que indique el número de dimensiones de la solicitud y, en esos casos, se devuelve un error 422.

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

Creación de diferentes tipos de inserciones

Algunos modelos pueden generar múltiples inserciones para la misma entrada en función de cómo planee usarlos. Esta capacidad le permite recuperar inserciones más precisas para los patrones de RAG.

El siguiente ejemplo muestra cómo crear inserciones que se utilizan para crear una inserción para un documento que se almacenará en una base de datos vectorial:

{
    "input": [
        "The answer to the ultimate question of life, the universe, and everything is 42"
    ],
    "input_type": "document"
}

Cuando trabaje en una consulta para recuperar un documento de este tipo, puede usar el siguiente fragmento de código para crear las inserciones para la consulta y maximizar el rendimiento de la recuperación.

{
    "input": [
        "What's the ultimate meaning of life?"
    ],
    "input_type": "query"
}

Observe que no todos los modelos de inserción admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422. De forma predeterminada, se devuelven inserciones de tipo Text.