Cómo generar incrustaciones de imágenes con modelos de Microsoft Foundry (clásico)

Solo se aplica a:portal Foundry (clásico). Este artículo no está disponible para el nuevo portal de Foundry. Obtenga más información sobre el nuevo portal.

Nota

Los vínculos de este artículo pueden abrir contenido en la nueva documentación de Microsoft Foundry en lugar de la documentación de Foundry (clásico) que está viendo ahora.

Importante

Los elementos marcados (versión preliminar) de este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se proporciona sin un contrato de nivel de servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no se admitan o que tengan funcionalidades restringidas. Para obtener más información, vea Supplemental Terms of Use for Microsoft Azure Previews.

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

Requisitos previos

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

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

    pip install -U azure-ai-inference
    
  • Una implementación de modelos de incrustaciones 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, crear el cliente para usar 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 de 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 imagen como parte de la solicitud. Los datos de imagen deben estar en formato PNG y 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 ],
)

Propina

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("Embedding of size:", np.asarray(embed.embedding).shape)

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

Importante

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

Inserció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 ],
)

Crear diferentes tipos de incrustaciones

Algunos modelos pueden generar varias incrustaciones para la misma entrada en función de cómo planee usarlas. Esta funcionalidad le permite recuperar incrustaciones más precisas para los patrones RAG.

En el ejemplo siguiente se muestra cómo crear incrustaciones que se usan 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,
)

Al trabajar en una consulta para recuperar este documento, puede usar el siguiente fragmento de código para crear las incrustaciones de la consulta y maximizar el rendimiento de 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 inserció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) de este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se proporciona sin un contrato de nivel de servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no se admitan o que tengan funcionalidades restringidas. Para obtener más información, vea Supplemental Terms of Use for Microsoft Azure Previews.

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

Requisitos previos

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

  • Instale la biblioteca de inferencia 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";
    
  • Una implementación de modelos de incrustaciones de imágenes. Si no tiene uno, lea Agregar y configurar modelos de Foundry para agregar un modelo de embeddings a su recurso.

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

Usar incrustaciones de imágenes

En primer lugar, crear el cliente para usar 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 Microsoft Entra ID, 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 imagen como parte de la solicitud. Los datos de imagen deben estar en formato PNG y 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",
    }
});

Propina

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

Importante

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

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

Crear diferentes tipos de incrustaciones

Algunos modelos pueden generar varias incrustaciones para la misma entrada en función de cómo planee usarlas. Esta funcionalidad le permite recuperar incrustaciones más precisas para los patrones RAG.

En el ejemplo siguiente se muestra cómo crear incrustaciones que se usan 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",
    }
});

Al trabajar en una consulta para recuperar este documento, puede usar el siguiente fragmento de código para crear las incrustaciones de la consulta y maximizar el rendimiento de 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 inserció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 Python, JavaScript, C#o REST.

Importante

Los elementos marcados (versión preliminar) de este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se proporciona sin un contrato de nivel de servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no se admitan o que tengan funcionalidades restringidas. Para obtener más información, vea Supplemental Terms of Use for Microsoft Azure Previews.

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

Requisitos previos

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

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

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

    dotnet add package Azure.Identity
    
  • Una implementación de modelos de incrustaciones 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, crear el cliente para usar 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 Microsoft Entra ID, 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 las tareas 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 imagen como parte de la solicitud. Los datos de imagen deben estar en formato PNG y 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);

Propina

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:

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 Cohere-embed-v3-english modelo, debe enviar una imagen a la vez.

Inserció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 petición 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);

Crear diferentes tipos de incrustaciones

Algunos modelos pueden generar varias incrustaciones para la misma entrada en función de cómo planee usarlas. Esta funcionalidad le permite recuperar incrustaciones más precisas para los patrones 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);

Al trabajar en una consulta para recuperar este documento, puede usar el siguiente fragmento de código para crear las incrustaciones de la consulta y maximizar el rendimiento de 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 inserció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) de este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se proporciona sin un contrato de nivel de servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no se admitan o que tengan funcionalidades restringidas. Para obtener más información, vea Supplemental Terms of Use for Microsoft Azure Previews.

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

Requisitos previos

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

  • Una implementación de modelos de incrustaciones de imágenes. Si no tiene uno, lea Agregar y configurar modelos de Foundry para agregar un modelo de embeddings a su recurso.

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

Usar incrustaciones de imágenes

Para usar los embeddings de texto, utiliza la ruta /images/embeddings añadida a tu URL base junto con tus credenciales indicadas 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 compatibilidad con Microsoft Entra ID, pase su token en el encabezado Authorization con el formato Bearer <token>. Use el á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>

El uso de Microsoft Entra ID puede requerir una configuración adicional en el recurso para conceder acceso. Aprenda a configurar la autenticación sin clave con Microsoft Entra ID.

Creación de incrustaciones

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

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

Propina

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

Importante

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

Inserció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"
        }
    ]
}

Crear diferentes tipos de incrustaciones

Algunos modelos pueden generar varias incrustaciones para la misma entrada en función de cómo planee usarlas. Esta funcionalidad le permite recuperar incrustaciones más precisas para los patrones RAG.

En el ejemplo siguiente se muestra cómo crear incrustaciones que se usan 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"
}

Al trabajar en una consulta para recuperar este documento, puede usar el siguiente fragmento de código para crear las incrustaciones de la consulta y maximizar el rendimiento de recuperación.

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