Azure OpenAICompatible with Milvus 2.6.x

В этой теме описывается, как настраивать и использовать функции встраивания Azure OpenAI в Milvus.

Выбор модели встраивания

Milvus поддерживает все модели встраивания, предоставляемые Azure OpenAI. Ниже приведены доступные на данный момент модели встраивания Azure OpenAI для быстрого ознакомления:

Модель

Размеры

Максимальное количество токенов

Описание

text-embedding-3-small

По умолчанию: 1,536 (может быть изменен до размера менее 1536)

8,191

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

text-embedding-3-large

По умолчанию: 3 072 (можно изменить на размер менее 3072)

8,191

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

text-embedding-ada-002

Исправлено: 1,536 (не поддерживает усечение)

8,191

Модель предыдущего поколения, подходящая для устаревших конвейеров или сценариев, требующих обратной совместимости.

Модели встраивания третьего поколения(text-embedding-3) поддерживают уменьшение размера встраивания с помощью параметра dim. Как правило, большие вкрапления являются более дорогостоящими с точки зрения вычислений, памяти и хранения. Возможность регулировать количество измерений позволяет лучше контролировать общую стоимость и производительность. Более подробную информацию о каждой модели см. в разделе "Встраивания".

Настройка учетных данных

Milvus должен знать ваш ключ Azure OpenAI API, прежде чем он сможет запрашивать встраиваемые объекты. Milvus предоставляет два способа настройки учетных данных:

  • Файл конфигурации (рекомендуется): Храните ключ API в milvus.yaml, чтобы при каждом перезапуске узла он подбирался автоматически.

  • Переменные окружения: Вводим ключ во время развертывания - идеально для Docker Compose.

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

Если ключ API для одного и того же провайдера присутствует и в файле конфигурации, и в переменной окружения, Milvus всегда использует значение в milvus.yaml и игнорирует переменную окружения.

Храните ваши API-ключи в milvus.yaml; Milvus считывает их при запуске и переопределяет любую переменную окружения для того же провайдера.

  1. ** Объявите свои ключи в разделе credential:

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

    # milvus.yaml
    credential:
      apikey_dev:            # dev environment
        apikey: <YOUR_DEV_KEY>
      apikey_prod:           # production environment
        apikey: <YOUR_PROD_KEY>    
    

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

  2. Укажите Milvus, какой ключ использовать для вызовов Azure OpenAI

    В том же файле укажите провайдеру Azure OpenAI на метку, которую вы хотите использовать.

    function:
      textEmbedding:
        providers:
          azure_openai:
            credential: apikey_dev      # ← choose any label you defined above
            resource_name:  # Your azure openai resource name
            # url: # Your azure openai embedding url
    

    Это свяжет определенный ключ с каждым запросом, который Milvus отправляет на конечную точку встраивания Azure OpenAI.

Вариант 2: Переменные среды

Используйте этот метод, если вы запускаете Milvus с Docker Compose и предпочитаете хранить секреты вне файлов и образов.

Milvus возвращается к переменной окружения только в том случае, если ключ для провайдера не найден в milvus.yaml.

Переменная

Требуется

Описание

MILVUSAI_AZURE_OPENAI_API_KEY

Да

Делает ключ Azure OpenAI доступным внутри каждого контейнера Milvus (игнорируется, если ключ для Azure OpenAI существует в milvus.yaml ).

MILVUSAI_AZURE_OPENAI_RESOURCE_NAME

Да

Имя вашего ресурса Azure OpenAI, заданное при создании ресурса службы Azure OpenAI.

В файле docker-compose.yaml задайте переменные окружения.

# docker-compose.yaml (standalone service section)
standalone:
  # ... other configurations ...
  environment:
    # ... other environment variables ...
    # Set the environment variable pointing to the Azure OpenAI API key inside the container
    MILVUSAI_AZURE_OPENAI_API_KEY: <MILVUSAI_AZURE_OPENAI_API_KEY>
    MILVUSAI_AZURE_OPENAI_RESOURCE_NAME: <MILVUSAI_AZURE_OPENAI_RESOURCE_NAME>

Блок environment: вводит ключ только в контейнер Milvus, оставляя нетронутой вашу хостовую ОС. Подробнее см. в разделе Настройка Milvus с помощью Docker Compose.

Использование функции встраивания

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

Шаг 1: Определите поля схемы

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

  • Первичное поле, которое уникально идентифицирует каждую сущность в коллекции.

  • Скалярное поле, в котором хранятся исходные данные для встраивания.

  • Векторное поле, зарезервированное для хранения векторных вкраплений, которые функция будет генерировать для скалярного поля.

Следующий пример определяет схему с одним скалярным полем "document" для хранения текстовых данных и одним векторным полем "dense" для хранения вкраплений, которые будут сгенерированы модулем Function. Не забудьте задать размерность вектора (dim), чтобы она соответствовала выходным данным выбранной вами модели встраивания.

from pymilvus import MilvusClient, DataType, Function, FunctionType

# Initialize Milvus client
client = MilvusClient(
    uri="http://localhost:19530",
)

# Create a new schema for the collection
schema = client.create_schema()

# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)

# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)

# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set dim to match the exact output dimension of the embedding model.
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1536)

Шаг 2: Добавьте функцию встраивания в схему

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

# Define embedding function specifically for Azure OpenAI provider
text_embedding_function = Function(
    name="azopenai",                                # Unique identifier for this embedding function
    function_type=FunctionType.TEXTEMBEDDING,       # Indicates a text embedding function
    input_field_names=["document"],                 # Scalar field(s) containing text data to embed
    output_field_names=["dense"],                   # Vector field(s) for storing embeddings
    params={                                        # Provider-specific embedding parameters
        "provider": "azure_openai",                 # Embedding provider name (must be "azure_openai")
        "model_name": "zilliz-text-embedding-3-small",      # Model should be set to the deployment name you chose when you deployed the embedding model
        # Optional parameters (only specify if necessary):
        # "url": "https://{resource_name}.openai.azure.com/" # Optional: Your Azure OpenAI service endpoint
        # "credential": "apikey_dev",               # Optional: Credential label specified in milvus.yaml
        # "dim": "1536",                            # Optional: Shorten the output vector dimension
        # "user": "user123",                        # Optional: identifier for API tracking
    }
)

# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)

Следующие шаги

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

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?