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 и игнорирует переменную окружения.
Вариант 1: Конфигурационный файл (рекомендуется и имеет более высокий приоритет)
Храните свои учетные данные в milvus.yaml; Milvus считывает их при запуске и переопределяет любую переменную окружения для того же провайдера.
** Объявите свои учетные данные в разделе
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>Размещение учетных данных здесь делает их постоянными при перезагрузке и позволяет вам переключаться между учетными данными, просто меняя метку.
Укажите Milvus, какие учетные данные использовать для вызовов служб
В том же файле укажите провайдеру Bedrock на метку, которую вы хотите использовать.
function: textEmbedding: providers: bedrock: credential: aksk_dev # ← choose any label you defined aboveЭто свяжет определенный мандат с каждым запросом, который Milvus отправляет службе встраивания Bedrock.
Вариант 2: Переменная среды
Используйте этот метод, если вы запускаете Milvus с Docker Compose и предпочитаете хранить секреты вне файлов и образов.
Milvus возвращается к переменной окружения только в том случае, если учетная запись для провайдера не найдена в milvus.yaml.
Переменная |
Требуется |
Описание |
|---|---|---|
|
Да |
Идентификатор ключа доступа AWS, используемый для аутентификации в службе Bedrock. |
|
Да |
Ваш секретный ключ доступа 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)
Следующие шаги
После настройки функции встраивания обратитесь к обзору функций для получения дополнительных указаний по настройке индекса, примеров вставки данных и операций семантического поиска.