BedrockCompatible with Milvus 2.6.x

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

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

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

Название модели

Размеры

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

Описание

amazon.titan-embed-text-v2:0

1,024 (по умолчанию), 512, 256

8,192

RAG, поиск документов, реранжирование, классификация и т. д.

Подробнее см. в разделе Модели встраивания текста Amazon Titan.

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

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

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

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

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

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

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

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

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

    # milvus.yaml
    credential:
      aksk_dev:            # dev environment
        access_key_id: <YOUR_DEV_ACCESS_KEY_ID>
        secret_access_key: <YOUR_DEV_SECRET_ACCESS_KEY>
      aksk_prod:           # production environment
        access_key_id: <YOUR_PROD_ACCESS_KEY_ID>    
        secret_access_key: <YOUR_PROD_SECRET_ACCESS_KEY>
    

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

  2. Укажите Milvus, какие учетные данные использовать для вызовов служб

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

    function:
      textEmbedding:
        providers:
          bedrock:
            credential: aksk_dev      # ← choose any label you defined above
    

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

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

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

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

Переменная

Требуется

Описание

MILVUSAI_BEDROCK_ACCESS_KEY_ID

Да

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

MILVUSAI_BEDROCK_SECRET_ACCESS_KEY

Да

Ваш секретный ключ доступа AWS, соответствующий идентификатору ключа доступа.

В файле docker-compose.yaml установите переменную окружения MILVUSAI_OPENAI_API_KEY.

# docker-compose.yaml (standalone service section)
standalone:
  # ... other configurations ...
  environment:
    # ... other environment variables ...
    # Set the environment variable pointing to the Bedrock embedding service inside the container
    MILVUSAI_BEDROCK_ACCESS_KEY_ID: <MILVUSAI_BEDROCK_ACCESS_KEY_ID>
    MILVUSAI_BEDROCK_SECRET_ACCESS_KEY: <MILVUSAI_BEDROCK_SECRET_ACCESS_KEY>

Блок 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=1024)

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

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

В примере ниже добавлен модуль Function (bedrk), который преобразует скалярное поле "document" в эмбеддинги, сохраняя полученные векторы в векторном поле "dense", определенном ранее.

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

# Define embedding function specifically for OpenAI provider
text_embedding_function = Function(
    name="bedrk",                                   # 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 (function-level)
        "provider": "bedrock",                      # Must be set to "bedrock"
        "model_name": "amazon.titan-embed-text-v2:0",    # Specifies the embedding model to use
        "region": "us-east-2",                           # Required: AWS region where the Bedrock service is hosted     
        # Optional parameters:
        # "credential": "aksk_dev",               # Optional: Credential label specified in milvus.yaml
        # "dim": "1024",                          # Output dimension of the vector embeddings after truncation
        # "normalize": "true",                    # Whether to normalize the output embeddings
    }
)

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

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

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

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

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

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

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