BedrockCompatible with Milvus 2.6.x
Questo argomento descrive come configurare e utilizzare le funzioni di incorporamento di Amazon Bedrock in Milvus.
Scegliere un modello di incorporamento
Milvus supporta i modelli di incorporamento forniti da Amazon Bedrock. Di seguito sono riportati i modelli di incorporamento attualmente disponibili per un rapido riferimento:
Nome del modello |
Dimensioni |
Gettoni massimi |
Descrizione |
|---|---|---|---|
amazon.titan-embed-text-v2:0 |
1.024 (predefinito), 512, 256 |
8,192 |
RAG, ricerca di documenti, reranking, classificazione, ecc. |
Per maggiori dettagli, consultare i modelli di Text Embeddings di Amazon Titan.
Configurare le credenziali
Milvus deve conoscere le credenziali di accesso a Bedrock prima di poter richiedere gli embeddings. Milvus offre due metodi per configurare le credenziali:
File di configurazione (consigliato): Memorizza le credenziali in
milvus.yamlin modo che ogni riavvio e nodo le prenda automaticamente.Variabili d'ambiente: Iniettare le credenziali al momento della distribuzione, ideale per Docker Compose.
Scegliere uno dei due metodi seguenti: il file di configurazione è più facile da mantenere su macchine virtuali e bare-metal, mentre la via delle variabili d'ambiente si adatta ai flussi di lavoro dei container.
Se una credenziale per lo stesso provider è presente sia nel file di configurazione che in una variabile d'ambiente, Milvus utilizza sempre il valore in milvus.yaml e ignora la variabile d'ambiente.
Opzione 1: File di configurazione (consigliata e con priorità più alta)
Mantenere le credenziali in milvus.yaml; Milvus le legge all'avvio e sovrascrive qualsiasi variabile d'ambiente per lo stesso provider.
**Dichiarare le credenziali in
credential:Si possono elencare una o più credenziali, dando a ciascuna un'etichetta inventata e a cui si farà riferimento in seguito.
# 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>Mettere le credenziali qui le rende persistenti tra i vari riavvii e permette di cambiare le credenziali semplicemente cambiando un'etichetta.
Indicare a Milvus quale credenziale usare per le chiamate di servizio
Nello stesso file, si indica al provider Bedrock l'etichetta che si desidera utilizzare.
function: textEmbedding: providers: bedrock: credential: aksk_dev # ← choose any label you defined aboveIn questo modo si lega una credenziale specifica a ogni richiesta che Milvus invia al servizio di incorporazione di Bedrock.
Opzione 2: Variabile d'ambiente
Utilizzate questo metodo quando eseguite Milvus con Docker Compose e preferite tenere i segreti fuori dai file e dalle immagini.
Milvus ricorre alla variabile d'ambiente solo se non viene trovata alcuna credenziale per il provider in milvus.yaml.
Variabile |
Richiesto |
Descrizione |
|---|---|---|
|
Sì |
ID della chiave di accesso AWS utilizzata per l'autenticazione con il servizio Bedrock. |
|
Sì |
La chiave di accesso segreta AWS corrispondente all'ID della chiave di accesso. |
Nel file docker-compose.yaml, impostare la variabile d'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>
Il blocco environment: inietta la chiave solo nel contenitore Milvus, lasciando inalterato il sistema operativo host. Per maggiori dettagli, consultare Configurazione di Milvus con Docker Compose.
Utilizzare la funzione di incorporamento
Una volta configurate le credenziali, seguite questi passaggi per definire e utilizzare le funzioni di incorporamento.
Passo 1: Definire i campi dello schema
Per utilizzare una funzione di incorporamento, creare una raccolta con uno schema specifico. Questo schema deve includere almeno tre campi necessari:
Il campo primario che identifica in modo univoco ogni entità della raccolta.
Un campo scalare che memorizza i dati grezzi da incorporare.
Un campo vettoriale riservato a memorizzare le incorporazioni vettoriali che la funzione genererà per il campo scalare.
L'esempio seguente definisce uno schema con un campo scalare "document" per memorizzare i dati testuali e un campo vettoriale "dense" per memorizzare le incorporazioni che saranno generate dal modulo Function. Ricordarsi di impostare la dimensione del vettore (dim) in modo che corrisponda all'output del modello di embedding scelto.
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)
Passo 2: Aggiungere la funzione allo schema
Il modulo Function di Milvus converte automaticamente i dati grezzi memorizzati in un campo scalare in embeddings e li memorizza nel campo vettoriale esplicitamente definito.
L'esempio seguente aggiunge un modulo Function (bedrk) che converte il campo scalare "document" in embedding, memorizzando i vettori risultanti nel campo vettoriale "dense" definito in precedenza.
Una volta definita la funzione di embedding, aggiungerla allo schema della collezione. In questo modo si indica a Milvus di utilizzare la funzione di embedding specificata per elaborare e memorizzare gli embeddings dai dati di testo.
# 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)
Passi successivi
Dopo aver configurato la funzione di incorporamento, consultare la Panoramica delle funzioni per ulteriori indicazioni sulla configurazione dell'indice, sugli esempi di inserimento dei dati e sulle operazioni di ricerca semantica.