Узнайте, как создавать эмбеддинги

Внедрение — это специальный формат представления данных, который модели машинного обучения и алгоритмы могут легко использовать. Эмбеддинг — это информационно насыщенное представление семантического значения фрагмента текста. Каждое внедрение является вектором чисел с плавающей запятой, таким образом, расстояние между двумя внедрениями в векторное пространство сопоставляется с семантическим сходством между двумя входными данными в исходном формате. Например, если два текста похожи, их векторные представления также похожи. Эмбеддинги обеспечивают векторный поиск по сходству в базах данных Azure, таких как Azure Cosmos DB for NoSQL, База данных SQL Azure и База данных Azure для PostgreSQL - Flexible Server.

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

  • Развернутая модель встраивания Azure OpenAI.
  • Следующие значения из вашего ресурса:
    • Например, конечная точка https://YOUR-RESOURCE-NAME.openai.azure.com/.
    • Ключ API.
    • Имя развертывания модели.

Для получения дополнительных инструкций по настройке для конкретных языков см. раздел Поддерживаемые языки программирования Azure OpenAI.

Как получить внедрение

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

Примечание

API внедрения OpenAI в Azure в настоящее время не поддерживает Microsoft Entra ID с API версии 1. Используйте проверку подлинности ключа API для примеров в этой статье.

using OpenAI;
using OpenAI.Embeddings;
using System.ClientModel;

EmbeddingClient client = new(
    "text-embedding-3-small",
    credential: new ApiKeyCredential("API-KEY"),
    options: new OpenAIClientOptions()
    {

        Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
    }
);

string input = "This is a test";

OpenAIEmbedding embedding = client.GenerateEmbedding(input);
ReadOnlyMemory<float> vector = embedding.ToFloats();
Console.WriteLine($"Embeddings: [{string.Join(", ", vector.ToArray())}]");

Наилучшие практики

Tip

Запросы на эмбеддинг возвращают HTTP 400, когда суммарное количество входных токенов превышает 300 000, даже если каждый отдельный входной фрагмент значительно ниже лимита на один входной фрагмент. Если ранее вы успешно пакетировали большие массивы длинных входных данных, разделите их на небольшие запросы.

Убедитесь, что входные данные не превышают максимальную длину

  • Максимальная длина входного текста для последних моделей внедрения составляет 8 192 токенов. Убедитесь, что входные данные не превышают это ограничение перед выполнением запроса.
  • Если вы отправляете массив входных данных в одном запросе внедрения, максимальный размер массива составляет 2048.
  • Каждый запрос /embeddings также имеет жесткий лимит в 300 000 токенов суммарно по всем входным данным. Запросы, превышающие это агрегированное ограничение, завершаются ошибкой HTTP 400, даже если каждый отдельный вход составляет 8 192 токенов, а длина массива составляет менее 2 048. Разбивайте большие нагрузки на несколько меньших запросов, чтобы не превышать лимит.
  • При отправке массива входных данных в одном запросе помните, что количество токенов в минуту в ваших запросах не должно превышать предел квоты, выделенной для развертывания модели. По умолчанию модели внедрения последних поколений 3 подлежат ограничению на 350 K TPM для каждого региона.

Устранение неполадок

  • При получении ошибки 401 или 403 убедитесь, что ключ API действителен для ресурса.
  • Если вы получите ошибку 404, убедитесь, что в endpoint включен путь /openai/v1/ и вы используете правильный базовый URL-адрес.
  • Если вы получите ошибку 400, убедитесь, что model соответствует имени вашего развертывания и тело запроса является допустимым JSON.

Ограничения и риски

Внедрение моделей может быть ненадежным или представлять социальные риски в некоторых случаях. Они могут причинить вред, если они используются без устранения рисков. Дополнительные сведения о том, как ответственно подходить к их использованию, см. в материалах Ответственный ИИ.

Дальнейшие действия