Compartir a través de


Generación de incrustaciones de imágenes con modelos de Azure AI Foundry

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 para las versiones preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de incrustaciones de imágenes con modelos de Azure AI Foundry.

Prerrequisitos

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

  • Implementación de modelo de inserciones de imágenes. Si no tiene uno, lea Agregar y configurar modelos de Foundry para agregar un modelo de inserción al recurso.

    • En este ejemplo se usa Cohere-embed-v3-english de Cohere.

Usar incrustaciones de imágenes

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

Si configuró el recurso con compatibilidad con Microsoft Entra ID, puede usar el siguiente fragmento de código para crear un 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"
)

Creación de incrustaciones

Para crear incrustaciones de imágenes, debe pasar los datos de la imagen como parte de la solicitud. Los datos de la imagen deben estar en formato PNG y estar 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 ],
)

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 se pueden 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)

Importante

Es posible que las incrustaciones informáticas en lotes no se admitan para todos los modelos. Por ejemplo, para el modelo Cohere-embed-v3-english, debe enviar una imagen a la vez.

Integración de imágenes y pares de texto

Algunos modelos pueden generar incrustaciones a partir de imágenes y pares de texto. En este caso, puede usar los campos image y text de la solicitud para pasar la imagen y el texto al modelo. En el ejemplo siguiente se muestra cómo crear incrustaciones para imágenes y 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 ],
)

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 = client.embed(
    input=[ image_input ],
    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 = client.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.QUERY,
)

Observe que no todos los modelos de incrustación admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422.

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 para las versiones preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de incrustaciones de imágenes con modelos de Azure AI Foundry.

Prerrequisitos

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

  • Instale la biblioteca de inferencia de Azure para JavaScript con el siguiente comando:

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

    Si usa Node.js, puede configurar las dependencias en 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"
      }
    }
    
  • Importe lo siguiente:

    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";
    
  • Implementación de modelo de inserciones de imágenes. Si no tiene uno, lea Agregar y configurar modelos de Foundry para agregar un modelo de incrustación a su recurso.

    • En este ejemplo se usa Cohere-embed-v3-english de Cohere.

Usar incrustaciones de imágenes

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.

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

Si ha configurado el recurso con compatibilidad con el identificador de Entra de Microsoft , puede usar el siguiente fragmento de código para crear un cliente.

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

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

Creación de incrustaciones

Para crear incrustaciones de imágenes, debe pasar los datos de la imagen como parte de la solicitud. Los datos de la imagen deben estar en formato PNG y estar 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",
    }
});

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

Importante

Es posible que las incrustaciones informáticas en lotes no se admitan para todos los modelos. Por ejemplo, para el modelo Cohere-embed-v3-english, debe enviar una imagen a la vez.

Integración de imágenes y pares de texto

Algunos modelos pueden generar incrustaciones a partir de imágenes y pares de texto. En este caso, puede usar los campos image y text de la solicitud para pasar la imagen y el texto al modelo. En el ejemplo siguiente se muestra cómo crear incrustaciones para imágenes y 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",
    }
});

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("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
        model: "Cohere-embed-v3-english",
    }
});

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("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
        model: "Cohere-embed-v3-english",
    }
});

Observe que no todos los modelos de incrustación admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422.

Nota:

El uso de incrustaciones de imágenes solo se admite mediante solicitudes de Python, JavaScript, C#o REST.

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 para las versiones preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de incrustaciones de imágenes con modelos de Azure AI Foundry.

Prerrequisitos

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

  • Instale el paquete de inferencia de Azure AI con el siguiente comando:

    dotnet add package Azure.AI.Inference --prerelease
    
  • Si usa Entra ID, también necesita el siguiente paquete:

    dotnet add package Azure.Identity
    
  • Implementación de modelo de inserciones de imágenes. Si no tiene uno, lea Agregar y configurar modelos de Foundry para agregar un modelo de inserción al recurso.

    • En este ejemplo se usa Cohere-embed-v3-english de Cohere.

Usar incrustaciones de imágenes

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.

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

Si configuró el recurso con compatibilidad con el identificador de Entra de Microsoft , puede usar el siguiente fragmento de código para crear un cliente. Tenga en cuenta que includeInteractiveCredentials se establece true en solo para fines de demostración, por lo que la autenticación puede producirse mediante el explorador web. Para cargas de trabajo de producción, debe quitar el 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
);

Creación de incrustaciones

Para crear incrustaciones de imágenes, debe pasar los datos de la imagen como parte de la solicitud. Los datos de la imagen deben estar en formato PNG y estar 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);

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 se pueden ver las estadísticas de uso del 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

Es posible que no se admitan incrustaciones informáticas en lotes para todos los modelos. Por ejemplo, para el modelo Cohere-embed-v3-english, debe enviar una imagen a la vez.

Integración de imágenes y pares de texto

Algunos modelos pueden generar incrustaciones a partir de imágenes y pares de texto. En este caso, puede usar los campos image y text de la solicitud para pasar la imagen y el texto al modelo. En el ejemplo siguiente se muestra cómo crear incrustaciones para imágenes y 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);

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.

En el ejemplo siguiente se muestra cómo crear incrustaciones para un documento que se almacenará en una base de datos vectorial:

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

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 requestOptions = new EmbeddingsOptions()
{
    Input = image_input,
    InputType = EmbeddingInputType.QUERY,
    Model = "Cohere-embed-v3-english"
};

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

Observe que no todos los modelos de incrustación admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422.

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 para las versiones preliminares de Microsoft Azure.

En este artículo se explica cómo usar la API de incrustaciones de imágenes con modelos de Azure AI Foundry.

Prerrequisitos

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

  • Implementación de modelo de inserciones de imágenes. Si no tiene uno, lea Agregar y configurar modelos de Foundry para agregar un modelo de incrustación a su recurso.

    • En este ejemplo se usa Cohere-embed-v3-english de Cohere.

Usar incrustaciones de imágenes

Para usar las incrustaciones de texto, use la ruta /images/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/images/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
api-key: <key>

Si ha configurado el recurso con soporte de Microsoft Entra ID, pase su token en el encabezado Authorization con el formato Bearer <token>. Use el ámbito https://cognitiveservices.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>

El uso de Microsoft Entra ID puede requerir una configuración adicional en el recurso para conceder acceso. Obtenga información sobre cómo configurar la autenticación sin claves con el identificador de Microsoft Entra.

Creación de incrustaciones

Para crear incrustaciones de imágenes, debe pasar los datos de la imagen como parte de la solicitud. Los datos de la imagen deben estar en formato PNG y estar codificados como base64.

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

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 se pueden 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": "Cohere-embed-v3-english",
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 0,
        "total_tokens": 9
    }
}

Importante

Es posible que las incrustaciones informáticas en lotes no se admitan para todos los modelos. Por ejemplo, para el modelo Cohere-embed-v3-english, debe enviar una imagen a la vez.

Integración de imágenes y pares de texto

Algunos modelos pueden generar incrustaciones a partir de imágenes y pares de texto. En este caso, puede usar los campos image y text de la solicitud para pasar la imagen y el texto al modelo. En el ejemplo siguiente se muestra cómo crear incrustaciones para imágenes y pares de texto:

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

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:

{
    "model": "Cohere-embed-v3-english",
    "input": [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
        }
    ],
    "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.

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

Observe que no todos los modelos de incrustación admiten que indique el tipo de entrada en la solicitud y, en esos casos, se devuelve un error 422.