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.yamlpara 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.
Opção 1: Ficheiro de configuração (recomendado e de maior prioridade)
Mantenha as suas credenciais em milvus.yaml; o Milvus lê-as no arranque e substitui qualquer variável de ambiente para o mesmo fornecedor.
**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.
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 aboveIsso 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 |
|---|---|---|
|
Sim |
A ID da chave de acesso AWS utilizada para autenticação com o serviço Bedrock. |
|
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.