Vertex AICompatible with Milvus 2.6.x

Google Cloud Vertex AI - это высокопроизводительный сервис, специально разработанный для моделей встраивания текста. В этом руководстве объясняется, как использовать Google Cloud Vertex AI с Milvus для эффективной генерации текстовых вкраплений.

Vertex AI поддерживает несколько моделей встраивания для различных случаев использования:

  • gemini-embedding-001 (современная производительность в англоязычных, многоязычных и кодовых задачах)

  • text-embedding-005 (новейшая модель встраивания текста)

  • text-multilingual-embedding-002 (Новейшая модель многоязычного встраивания текста).

Дополнительные сведения см. в разделе Модели встраивания текста Vertex AI.

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

Перед настройкой Vertex AI убедитесь, что вы соответствуете этим требованиям:

  • Запустите Milvus версии 2.6 или выше - Убедитесь, что ваше развертывание соответствует минимальному требованию к версии.

  • Создайте учетную запись службы Google Cloud - как минимум, вам понадобятся роли типа "Пользователь Vertex AI" или другие более специфические роли. Подробнее см. в разделе Создание учетных записей служб.

  • Загрузите файл ключа JSON учетной записи службы - надежно сохраните этот файл учетных данных на своем сервере или локальной машине. Подробнее см. в разделе Создание ключа учетной записи службы.

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

Прежде чем Milvus сможет вызвать Vertex AI, ему потребуется доступ к JSON-ключу учетной записи службы GCP. Мы поддерживаем два метода - выбирайте один из них в зависимости от ваших потребностей в развертывании и эксплуатации.

Вариант

Приоритет

Лучший для

Файл конфигурации (milvus.yaml)

Высокий

Постоянные настройки в масштабах всего кластера

Переменные окружения (MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS)

Низкий

Контейнерные рабочие процессы, быстрые тесты

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

  1. Base64-кодирование вашего JSON-ключа

    cat credentials.json | jq . | base64
    
  2. Объявите учетные данные в milvus.yaml

    # milvus.yaml
    credential:
      gcp_vertex:                      # arbitrary label
        credential_json: |
          <YOUR_BASE64_ENCODED_JSON>
    
  3. Привяжите учетные данные к провайдеру Vertex AI

    # milvus.yaml
    function:
      textEmbedding:
        providers:
          vertexai:
            credential: gcp_vertex      # must match the label above
            url: <optional: custom Vertex AI endpoint>
    

    Если впоследствии вам понадобится изменить ключи, просто обновите строку Base64 в разделе credential_json и перезапустите Milvus - никаких изменений в окружении или контейнерах не требуется.

Вариант 2: Переменные окружения

Используйте этот метод, если вы предпочитаете вводить секреты во время развертывания. Milvus переходит к использованию env-vars только в том случае, если в milvus.yaml нет подходящей записи.

Шаги настройки зависят от режима развертывания Milvus (автономный или распределенный кластер) и платформы оркестровки (Docker Compose или Kubernetes).

Чтобы получить файл конфигурации Milvus(docker-compose.yaml), обратитесь к разделу "Скачать установочный файл".

  1. Установите ключ в контейнер.

    Отредактируйте файл docker-compose.yaml, включив в него сопоставление томов с учетными данными:

    services:
      standalone:
        volumes:
          # Map host credential file to container path
          - /path/to/your/credentials.json:/milvus/configs/google_application_credentials.json:ro
    

    В предыдущей конфигурации:

    • Используйте абсолютные пути для надежного доступа к файлам (/home/user/credentials.json, а не ~/credentials.json).

    • Путь к контейнеру должен заканчиваться расширением .json

    • :ro флаг обеспечивает доступ только для чтения для безопасности

  2. Установите переменную окружения

    В том же файле docker-compose.yaml добавьте переменную окружения, указывающую на путь к учетным данным:

    services:
      standalone:
        environment:
          # Essential for Vertex AI authentication
          MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS: /milvus/configs/google_application_credentials.json
    
  3. Применить изменения

    Перезапустите контейнер Milvus, чтобы активировать конфигурацию:

    docker-compose down && docker-compose up -d
    

Чтобы получить файл конфигурации Milvus(values.yaml), обратитесь к разделу Настройка Milvus через файл конфигурации.

  1. Создайте секрет Kubernetes

    Выполните эту команду на вашей управляющей машине (где настроен kubectl ):

    kubectl create secret generic vertex-ai-secret \
      --from-file=credentials.json=/path/to/your/credentials.json \
      -n <your-milvus-namespace>
    

    В предыдущей команде:

    • vertex-ai-secret: Имя для вашего секрета (настраиваемое)

    • /path/to/your/credentials.json: Локальное имя файла учетных данных GCP

    • <your-milvus-namespace>: Пространство имен Kubernetes, в котором размещен Milvus

  2. Настройте значения Helm

    Обновите values.yaml в зависимости от типа развертывания:

    • Для автономного развертывания

      standalone:
        extraEnv:
          - name: MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS
            value: /milvus/configs/credentials.json  # Container path
        
        volumes:
          - name: vertex-ai-credentials-vol
            secret:
              secretName: vertex-ai-secret  # Must match Step 1
        
        volumeMounts:
          - name: vertex-ai-credentials-vol
            mountPath: /milvus/configs/credentials.json  # Must match extraEnv value
            subPath: credentials.json  # Must match secret key name
            readOnly: true
      
    • Для распределенного развертывания (добавить к каждому компоненту)

      proxy:
        extraEnv: 
          - name: MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS
            value: /milvus/configs/credentials.json
        volumes: 
          - name: vertex-ai-credentials-vol
            secret:
              secretName: vertex-ai-secret
        volumeMounts:
          - name: vertex-ai-credentials-vol
            mountPath: /milvus/configs/credentials.json
            subPath: credentials.json
            readOnly: true
      
      # Repeat same configuration for dataNode, etc.
      
  3. Примените конфигурацию Helm

    Разверните обновленную конфигурацию на вашем кластере:

    helm upgrade milvus milvus/milvus -f values.yaml -n <your-milvus-namespace>
    

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

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

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

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

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

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

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

from pymilvus import MilvusClient, DataType, Function, FunctionType, CollectionSchema, FieldSchema

# Assume you have connected to Milvus
# client = MilvusClient(uri="http://localhost:19530")

# 1. Create Schema
schema = MilvusClient.create_schema()

# 2. Add fields
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
schema.add_field("document", DataType.VARCHAR, max_length=9000) # Store text data
# IMPORTANT: Set dim to match the output dimension of the model and parameters
schema.add_field("dense_vector", DataType.FLOAT_VECTOR, dim=768) # Store embedding vectors (example dimension)

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

Модуль Function в Milvus автоматически преобразует необработанные данные, хранящиеся в скалярном поле, во вкрапления и сохраняет их в явно определенном векторном поле.

# 3. Define Vertex AI embedding function
text_embedding_function = Function(
    name="vert_func",                           # 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"],        # Vector field(s) for storing embeddings
    params={                                    # Vertex AI specific parameters (function-level)
        "provider": "vertexai",                 # Must be set to "vertexai"
        "model_name": "text-embedding-005",     # Required: Specifies the Vertex AI model to use
        "projectid": "your-gcp-project-id",     # Required: Your Google Cloud project ID
        # Optional parameters (include these only if necessary):
        # "location": "us-central1",            # Optional: Vertex AI service region (default us-central1)
        # "task": "DOC_RETRIEVAL",              # Optional: Embedding task type (default DOC_RETRIEVAL)
        # "dim": 768                            # Optional: Output vector dimension (1-768)
    }
)

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

Параметр

Описание

Требуется?

Пример Значение

provider

Поставщик модели встраивания. Установите значение "vertexai".

Да

"vertexai"

model_name

Указывает, какую модель встраивания Vertex AI следует использовать.

Да

"text-embedding-005"

projectid

Идентификатор проекта Google Cloud.

Да

"your-gcp-project-id"

location

Регион для службы Vertex AI. В настоящее время встраивания Vertex AI поддерживают в основном регион us-central1. По умолчанию - us-central1.

Нет

"us-central1"

task

Указывает тип задачи встраивания, влияющий на результаты встраивания. Принимаемые значения: DOC_RETRIEVAL (по умолчанию), CODE_RETRIEVAL (поддерживается только 005), STS (семантическое текстовое сходство).

Нет

"DOC_RETRIEVAL"

dim

Размерность выходных векторов эмбеддинга. Принимаются целые числа от 1 до 768. Примечание: Если указано, убедитесь, что размерность векторного поля в схеме соответствует этому значению.

Нет

768

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

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

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

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

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

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