Поделиться через


Как выполнять встраивание изображений с помощью инференции модели искусственного интеллекта Azure

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Эта статья объясняет, как использовать API для встраивания изображений с моделями, развернутыми для вывода моделей Azure AI в Azure AI Foundry.

Необходимые условия

Чтобы использовать модели внедрения в приложение, вам потребуется:

  • Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и в процессе создать подписку на Azure. Read Upgrade from GitHub Models to Azure AI model inference if that's your case.

  • Ресурс служб ИИ Azure. Дополнительные сведения см. в статье "Создание ресурса Служб искусственного интеллекта Azure".

  • URL-адрес конечной точки и ключ.

    Снимок экрана: получение URL-адреса и ключа, связанного с ресурсом.

  • Установите пакет вывода искусственного интеллекта Azure для Python с помощью следующей команды:

    pip install -U azure-ai-inference
    

Используйте встраивания изображений

Сначала создайте клиент для использования модели. В следующем коде используется URL-адрес конечной точки и ключ, хранящиеся в переменных среды.

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.core.credentials import AzureKeyCredential

client = ImageEmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
    model="Cohere-embed-v3-english"
)

Если вы настроили ресурс с поддержкой идентификатора Microsoft Entra, можно использовать следующий фрагмент кода для создания клиента.

import os
from azure.ai.inference import ImageEmbeddingsClient
from azure.identity import DefaultAzureCredential

client = ImageEmbeddingsClient(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
    model="Cohere-embed-v3-english"
)

Создание эмбеддингов

Чтобы создать эмбеддинги изображений, необходимо передать данные изображения как часть вашего запроса. Данные изображения должны быть в формате PNG и закодированы как 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 ],
)

Подсказка

При создании запроса учитывайте ограничение на количество токенов, используемых моделью. Если вам нужно внедрить более крупные части текста, вам потребуется стратегия фрагментирования.

Ответ выглядит следующим образом, где можно просмотреть статистику использования модели:

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)

Внимание

Внедрение вычислений в пакеты может не поддерживаться для всех моделей. Например, для Cohere-embed-v3-english модели необходимо отправить одно изображение одновременно.

Внедрение изображений и текстовых пар

Некоторые модели могут создавать внедрения из изображений и текстовых пар. В этом случае можно использовать поля image и text в запросе для передачи изображения и текста модели. В следующем примере показано, как создавать внедрения для изображений и текстовых пар:

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

Create different types of embeddings

Некоторые модели могут создавать несколько эмбеддингов для одного и того же входного значения в зависимости от того, как вы планируете их использовать. This capability allows you to retrieve more accurate embeddings for RAG patterns.

Следующий пример показывает, как создать эмбеддинги, которые используются для формирования представления документа, который будет храниться в векторной базе данных.

from azure.ai.inference.models import EmbeddingInputType

response = client.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.DOCUMENT,
)

При работе с запросом для получения такого документа можно использовать следующий фрагмент кода, чтобы создать внедрения для запроса и максимально повысить производительность извлечения.

from azure.ai.inference.models import EmbeddingInputType

response = client.embed(
    input=[ image_input ],
    input_type=EmbeddingInputType.QUERY,
)

Обратите внимание, что не все модели вложения поддерживают указание типа входных данных в запросе, и в таких случаях возвращается ошибка 422.

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Эта статья объясняет, как использовать API для встраивания изображений с моделями, развернутыми для вычислений в Azure AI, в Azure AI Foundry.

Необходимые условия

Чтобы использовать модели внедрения в приложение, вам потребуется:

  • Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и в процессе создать подписку на Azure. Read Upgrade from GitHub Models to Azure AI model inference if that's your case.

  • Ресурс служб ИИ Azure. Дополнительные сведения см. в статье "Создание ресурса Служб искусственного интеллекта Azure".

  • URL-адрес конечной точки и ключ.

    Снимок экрана: получение URL-адреса и ключа, связанного с ресурсом.

  • Установите библиотеку вывода Azure для JavaScript с помощью следующей команды:

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

    Если вы используете Node.js, вы можете настроить зависимости в 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"
      }
    }
    
  • Импортируйте следующее:

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

Используйте встраивания изображений

Сначала создайте клиент для использования модели. В следующем коде используется URL-адрес конечной точки и ключ, хранящиеся в переменных среды.

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

Если вы настроили ресурс с поддержкой идентификатора Microsoft Entra, можно использовать следующий фрагмент кода для создания клиента.

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

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

Создание эмбеддингов

Чтобы создать эмбеддинги изображений, необходимо передать данные изображения как часть вашего запроса. Данные изображения должны быть в формате PNG и закодированы как 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",
    }
});

Tip

При создании запроса учитывайте ограничение на количество токенов, используемых моделью. Если вам нужно внедрить более крупные части текста, вам потребуется стратегия фрагментирования.

Ответ выглядит следующим образом, где можно просмотреть статистику использования модели:

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

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

Внимание

Внедрение вычислений в пакеты может не поддерживаться для всех моделей. Например, для Cohere-embed-v3-english модели необходимо отправить одно изображение одновременно.

Внедрение изображений и текстовых пар

Некоторые модели могут создавать внедрения из изображений и текстовых пар. В этом случае можно использовать поля image и text в запросе для передачи изображения и текста модели. В следующем примере показано, как создавать внедрения для изображений и текстовых пар:

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

Create different types of embeddings

Некоторые модели могут создавать несколько эмбеддингов для одного и того же входного значения в зависимости от того, как вы планируете их использовать. This capability allows you to retrieve more accurate embeddings for RAG patterns.

Следующий пример показывает, как создать эмбеддинги, которые используются для формирования представления документа, который будет храниться в векторной базе данных.

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "document",
        model: "Cohere-embed-v3-english",
    }
});

При работе с запросом для получения такого документа можно использовать следующий фрагмент кода, чтобы создать внедрения для запроса и максимально повысить производительность извлечения.

var response = await client.path("/images/embeddings").post({
    body: {
        input: [ { image: image_data_base64 } ],
        input_type: "query",
        model: "Cohere-embed-v3-english",
    }
});

Обратите внимание, что не все модели вложения поддерживают указание типа входных данных в запросе, и в таких случаях возвращается ошибка 422.

Примечание.

Внедрение изображений поддерживается только с помощью запросов Python, JavaScript, C#или REST.

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

В этой статье объясняется, как использовать API встраивания изображений с моделями, развернутыми для вывода в Azure AI Foundry.

Необходимые условия

Чтобы использовать модели внедрения в приложение, вам потребуется:

  • Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и в процессе создать подписку на Azure. Read Upgrade from GitHub Models to Azure AI model inference if that's your case.

  • Ресурс служб ИИ Azure. Дополнительные сведения см. в статье "Создание ресурса Служб искусственного интеллекта Azure".

  • URL-адрес конечной точки и ключ.

    Снимок экрана: получение URL-адреса и ключа, связанного с ресурсом.

Используйте встраивания изображений

Сначала создайте клиент для использования модели. В следующем коде используется URL-адрес конечной точки и ключ, хранящиеся в переменных среды.

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

Если вы настроили ресурс с поддержкой идентификатора Microsoft Entra, можно использовать следующий фрагмент кода для создания клиента. Обратите внимание, что значение includeInteractiveCredentials установлено на true только для демонстрационных целей, чтобы проверка подлинности могла происходить с помощью веб-браузера. For production workloads, you should remove the parameter.

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

Создание эмбеддингов

Чтобы создать эмбеддинги изображений, необходимо передать данные изображения как часть вашего запроса. Данные изображения должны быть в формате PNG и закодированы как 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);

Подсказка

При создании запроса учитывайте ограничение на количество токенов, используемых моделью. Если вам нужно внедрить более крупные части текста, вам потребуется стратегия фрагментирования.

Ответ выглядит следующим образом, где можно просмотреть статистику использования модели:

foreach (EmbeddingItem item in response.Value.Data)
{
    List<float> embedding = item.Embedding.ToObjectFromJson<List<float>>();
    Console.WriteLine($"Index: {item.Index}, Embedding: <{string.Join(", ", embedding)}>");
}

Внимание

Внедрение вычислений в пакеты может не поддерживаться для всех моделей. Например, для Cohere-embed-v3-english модели необходимо отправить одно изображение одновременно.

Внедрение изображений и текстовых пар

Некоторые модели могут создавать внедрения из изображений и текстовых пар. В этом случае можно использовать поля image и text в запросе для передачи изображения и текста модели. В следующем примере показано, как создавать внедрения для изображений и текстовых пар:

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

Create different types of embeddings

Некоторые модели могут создавать несколько эмбеддингов для одного и того же входного значения в зависимости от того, как вы планируете их использовать. This capability allows you to retrieve more accurate embeddings for RAG patterns.

В следующем примере показано, как создать внедрения для документа, который будет храниться в векторной базе данных:

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

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

При работе с запросом для получения такого документа можно использовать следующий фрагмент кода, чтобы создать внедрения для запроса и максимально повысить производительность извлечения.

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

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

Обратите внимание, что не все модели вложения поддерживают указание типа входных данных в запросе, и в таких случаях возвращается ошибка 422.

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Эта статья объясняет, как использовать API внедрения изображений с моделями, развернутыми для обработки исходов в Azure AI в Azure AI Foundry.

Необходимые условия

Чтобы использовать модели внедрения в приложение, вам потребуется:

  • Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и в процессе создать подписку на Azure. Read Upgrade from GitHub Models to Azure AI model inference if that's your case.

  • Ресурс служб ИИ Azure. Дополнительные сведения см. в статье "Создание ресурса Служб искусственного интеллекта Azure".

  • URL-адрес конечной точки и ключ.

    Снимок экрана: получение URL-адреса и ключа, связанного с ресурсом.

Используйте встраивания изображений

Чтобы использовать внедренные тексты, используйте маршрут /images/embeddings , добавленный к базовому URL-адресу, а также учетные данные, указанные в api-key. Authorization Заголовок также поддерживается в формате 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>

If you have configured the resource with Microsoft Entra ID support, pass you token in the Authorization header with the format Bearer <token>. Используйте область 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>

Использование идентификатора Microsoft Entra может потребовать дополнительной конфигурации в ресурсе для предоставления доступа. Узнайте, как настроить проверку подлинности без ключей с помощью идентификатора Microsoft Entra.

Создание эмбеддингов

Чтобы создать эмбеддинги изображений, необходимо передать данные изображения как часть вашего запроса. Данные изображения должны быть в формате PNG и закодированы как base64.

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

Tip

При создании запроса учитывайте ограничение на количество токенов, используемых моделью. Если вам нужно внедрить более крупные части текста, вам потребуется стратегия фрагментирования.

Ответ выглядит следующим образом, где можно просмотреть статистику использования модели:

{
    "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
    }
}

Внимание

Внедрение вычислений в пакеты может не поддерживаться для всех моделей. Например, для Cohere-embed-v3-english модели необходимо отправить одно изображение одновременно.

Внедрение изображений и текстовых пар

Некоторые модели могут создавать внедрения из изображений и текстовых пар. В этом случае можно использовать поля image и text в запросе для передачи изображения и текста модели. В следующем примере показано, как создавать внедрения для изображений и текстовых пар:

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

Create different types of embeddings

Некоторые модели могут создавать несколько эмбеддингов для одного и того же входного значения в зависимости от того, как вы планируете их использовать. This capability allows you to retrieve more accurate embeddings for RAG patterns.

Следующий пример показывает, как создать эмбеддинги, которые используются для формирования представления документа, который будет храниться в векторной базе данных.

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

При работе с запросом для получения такого документа можно использовать следующий фрагмент кода, чтобы создать внедрения для запроса и максимально повысить производительность извлечения.

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

Обратите внимание, что не все модели вложения поддерживают указание типа входных данных в запросе, и в таких случаях возвращается ошибка 422.