BedrockCompatible with Milvus 2.6.x

Este tópico descreve como configurar e usar as funções de incorporação do Amazon Bedrock no Milvus.

Escolher um modelo de incorporação

O Milvus suporta modelos de incorporação fornecidos pelo Amazon Bedrock. Abaixo estão os modelos de incorporação atualmente disponíveis para referência rápida:

Nome do modelo

Dimensões

Tokens máximos

Descrição

amazon.titan-embed-text-v2:0

1.024 (predefinição), 512, 256

8,192

RAG, pesquisa de documentos, reranking, classificação, etc.

Para mais informações, consulte os modelos Amazon Titan Text Embeddings.

Configurar credenciais

O Milvus deve conhecer as credenciais de acesso do Bedrock antes de poder solicitar embeddings. O Milvus fornece dois métodos para configurar as credenciais:

  • Arquivo de configuração (recomendado): Armazene as credenciais em milvus.yaml para que cada reinicialização e nó as pegue automaticamente.

  • Variáveis de ambiente: Injete as credenciais no momento da implantação - ideal para o Docker Compose.

Escolha um dos dois métodos abaixo - o arquivo de configuração é mais fácil de manter em bare-metal e VMs, enquanto a rota env-var se encaixa nos fluxos de trabalho do contêiner.

Se uma credencial para o mesmo fornecedor estiver presente tanto no ficheiro de configuração como numa variável de ambiente, o Milvus utiliza sempre o valor em milvus.yaml e ignora a variável de ambiente.

Mantenha as suas credenciais em milvus.yaml; o Milvus lê-as no arranque e substitui qualquer variável de ambiente para o mesmo fornecedor.

  1. **Declare as suas credenciais em credential:

    Pode listar uma ou várias credenciais - dê a cada uma delas uma etiqueta que invente e que referenciará mais tarde.

    # 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>
    

    Colocar as credenciais aqui torna-as persistentes através de reinícios e permite-lhe mudar de credenciais apenas alterando uma etiqueta.

  2. Diga ao Milvus qual credencial usar para chamadas de serviço

    No mesmo ficheiro, aponte o fornecedor Bedrock para a etiqueta que pretende utilizar.

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

    Isso vincula uma credencial específica a cada solicitação que o Milvus envia ao serviço de incorporação do Bedrock.

Opção 2: Variável de ambiente

Utilize este método quando executar o Milvus com o Docker Compose e preferir manter os segredos fora dos ficheiros e das imagens.

O Milvus recorre à variável de ambiente apenas se não for encontrada nenhuma credencial para o fornecedor em milvus.yaml.

Variável

Necessária

Descrição

MILVUSAI_BEDROCK_ACCESS_KEY_ID

Sim

A ID da chave de acesso AWS utilizada para autenticação com o serviço Bedrock.

MILVUSAI_BEDROCK_SECRET_ACCESS_KEY

Sim

Sua chave de acesso secreta da AWS correspondente ao seu ID de chave de acesso.

No seu ficheiro docker-compose.yaml, defina a variável de ambiente 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>

O bloco environment: injecta a chave apenas no contentor Milvus, deixando o seu SO anfitrião intacto. Para obter detalhes, consulte Configurar o Milvus com o Docker Compose.

Usar a função de incorporação

Depois que as credenciais forem configuradas, siga estas etapas para definir e usar funções de incorporação.

Etapa 1: definir campos de esquema

Para usar uma função de incorporação, crie uma coleção com um esquema específico. Este esquema deve incluir pelo menos três campos necessários:

  • O campo primário que identifica de forma exclusiva cada entidade numa coleção.

  • Um campo escalar que armazena os dados brutos a serem incorporados.

  • Um campo vetorial reservado para armazenar as incorporações vectoriais que a função irá gerar para o campo escalar.

O exemplo seguinte define um esquema com um campo escalar "document" para armazenar dados textuais e um campo vetorial "dense" para armazenar as incorporações a serem geradas pelo módulo Function. Não se esqueça de definir a dimensão do vetor (dim) para corresponder ao resultado do modelo de incorporação escolhido.

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)

Etapa 2: Adicionar a função ao esquema

O módulo Function do Milvus converte automaticamente os dados brutos armazenados num campo escalar em embeddings e armazena-os no campo vetorial explicitamente definido.

O exemplo abaixo adiciona um módulo Function (bedrk) que converte o campo escalar "document" em embeddings, armazenando os vectores resultantes no campo vetorial "dense" definido anteriormente.

Depois de ter definido a sua função de incorporação, adicione-a ao seu esquema de coleção. Isto instrui o Milvus a utilizar a função de incorporação especificada para processar e armazenar os embeddings dos seus dados de texto.

# 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)

Próximos passos

Depois de configurar a função de incorporação, consulte a Visão geral da função para obter orientações adicionais sobre a configuração do índice, exemplos de inserção de dados e operações de pesquisa semântica.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?