Vertex AICompatible with Milvus 2.6.x
Google Cloud Vertex AI è un servizio ad alte prestazioni progettato specificamente per i modelli di incorporazione del testo. Questa guida spiega come utilizzare Google Cloud Vertex AI con Milvus per una generazione efficiente di incorporazioni di testo.
Vertex AI supporta diversi modelli di incorporamento per diversi casi d'uso:
gemini-embedding-001 (prestazioni all'avanguardia per compiti in inglese, multilingue e codice)
text-embedding-005 (ultimo modello di incorporazione del testo)
text-multilingual-embedding-002 (Ultimo modello di incorporazione del testo multilingue)
Per ulteriori informazioni, consultare i modelli di incorporazione del testo di Vertex AI.
Prerequisiti
Prima di configurare Vertex AI, assicurarsi di soddisfare i seguenti requisiti:
Eseguire Milvus versione 2.6 o superiore - Verificare che la distribuzione soddisfi il requisito minimo di versione.
Creare un account di servizio Google Cloud - Come minimo, è probabile che siano necessari ruoli come "Vertex AI User" o altri ruoli più specifici. Per maggiori dettagli, consultare la sezione Creare account di servizio.
Scaricare il file chiave JSON dell'account di servizio - Memorizzare in modo sicuro questo file di credenziali sul server o sul computer locale. Per ulteriori informazioni, fare riferimento a Creare una chiave dell'account di servizio.
Configurazione delle credenziali
Prima che Milvus possa chiamare Vertex AI, ha bisogno di accedere alla chiave JSON dell'account di servizio GCP. Supportiamo due metodi: sceglietene uno in base alle vostre esigenze di distribuzione e operative.
Opzione |
Priorità |
Migliore per |
|---|---|---|
File di configurazione ( |
Alta |
Impostazioni persistenti a livello di cluster |
Variabili d'ambiente ( |
Basso |
Flussi di lavoro del contenitore, test rapidi |
Opzione 1: File di configurazione (raccomandato e con priorità più alta)
Milvus preferirà sempre le credenziali dichiarate in milvus.yaml rispetto a qualsiasi variabile d'ambiente per lo stesso provider.
Codificare in base64 la chiave JSON
cat credentials.json | jq . | base64Dichiarare le credenziali in
milvus.yaml# milvus.yaml credential: gcp_vertex: # arbitrary label credential_json: | <YOUR_BASE64_ENCODED_JSON>Legare le credenziali al provider Vertex AI
# milvus.yaml function: textEmbedding: providers: vertexai: credential: gcp_vertex # must match the label above url: <optional: custom Vertex AI endpoint>Se in seguito è necessario ruotare le chiavi, basta aggiornare la stringa Base64 in
credential_jsone riavviare Milvus, senza dover modificare l'ambiente o i contenitori.
Opzione 2: Variabili d'ambiente
Usate questo metodo quando preferite iniettare i segreti al momento della distribuzione. Milvus ricorre alle variabili d'ambiente solo se non esiste una voce corrispondente in milvus.yaml.
Le fasi di configurazione dipendono dalla modalità di distribuzione di Milvus (standalone o cluster distribuito) e dalla piattaforma di orchestrazione (Docker Compose o Kubernetes).
Per ottenere il file di configurazione di Milvus(docker-compose.yaml), fate riferimento a Scaricare un file di installazione.
Montare la chiave nel contenitore
Modificare il file
docker-compose.yamlper includere la mappatura del volume delle credenziali:services: standalone: volumes: # Map host credential file to container path - /path/to/your/credentials.json:/milvus/configs/google_application_credentials.json:roNella configurazione precedente:
Usare percorsi assoluti per un accesso affidabile ai file (
/home/user/credentials.jsonnon~/credentials.json)Il percorso del contenitore deve terminare con l'estensione
.json:roIl flag assicura l'accesso in sola lettura per la sicurezza
Impostare la variabile d'ambiente
Nello stesso file
docker-compose.yaml, aggiungere la variabile d'ambiente che punta al percorso delle credenziali:services: standalone: environment: # Essential for Vertex AI authentication MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS: /milvus/configs/google_application_credentials.jsonApplicare le modifiche
Riavviare il contenitore Milvus per attivare la configurazione:
docker-compose down && docker-compose up -d
Per ottenere il file di configurazione di Milvus(values.yaml), fare riferimento a Configurare Milvus tramite file di configurazione.
Creare un segreto Kubernetes
Eseguire questo comando sulla macchina di controllo (dove è configurato kubectl ):
kubectl create secret generic vertex-ai-secret \ --from-file=credentials.json=/path/to/your/credentials.json \ -n <your-milvus-namespace>Nel comando precedente:
vertex-ai-secret: Nome del segreto (personalizzabile)/path/to/your/credentials.json: Nome del file locale delle credenziali GCP<your-milvus-namespace>: Spazio dei nomi Kubernetes che ospita Milvus
Configurare i valori di Helm
Aggiornare il sito
values.yamlin base al tipo di distribuzione:Per la distribuzione standalone
standalone: extraEnv: - name: MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS value: /milvus/configs/credentials.json # Container path volumes: - name: vertex-ai-credentials-vol secret: secretName: vertex-ai-secret # Must match Step 1 volumeMounts: - name: vertex-ai-credentials-vol mountPath: /milvus/configs/credentials.json # Must match extraEnv value subPath: credentials.json # Must match secret key name readOnly: truePer la distribuzione distribuita (aggiungere a ciascun componente)
proxy: extraEnv: - name: MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS value: /milvus/configs/credentials.json volumes: - name: vertex-ai-credentials-vol secret: secretName: vertex-ai-secret volumeMounts: - name: vertex-ai-credentials-vol mountPath: /milvus/configs/credentials.json subPath: credentials.json readOnly: true # Repeat same configuration for dataNode, etc.
Applicare la configurazione di Helm
Distribuire la configurazione aggiornata al cluster:
helm upgrade milvus milvus/milvus -f values.yaml -n <your-milvus-namespace>
Utilizzare la funzione di incorporamento
Una volta configurato Vertex AI, seguire 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.
from pymilvus import MilvusClient, DataType, Function, FunctionType, CollectionSchema, FieldSchema
# Assume you have connected to Milvus
# client = MilvusClient(uri="http://localhost:19530")
# 1. Create Schema
schema = MilvusClient.create_schema()
# 2. Add fields
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
schema.add_field("document", DataType.VARCHAR, max_length=9000) # Store text data
# IMPORTANT: Set dim to match the output dimension of the model and parameters
schema.add_field("dense_vector", DataType.FLOAT_VECTOR, dim=768) # Store embedding vectors (example dimension)
Passo 2: Aggiungere la funzione di incorporamento 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.
# 3. Define Vertex AI embedding function
text_embedding_function = Function(
name="vert_func", # 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"], # Vector field(s) for storing embeddings
params={ # Vertex AI specific parameters (function-level)
"provider": "vertexai", # Must be set to "vertexai"
"model_name": "text-embedding-005", # Required: Specifies the Vertex AI model to use
"projectid": "your-gcp-project-id", # Required: Your Google Cloud project ID
# Optional parameters (include these only if necessary):
# "location": "us-central1", # Optional: Vertex AI service region (default us-central1)
# "task": "DOC_RETRIEVAL", # Optional: Embedding task type (default DOC_RETRIEVAL)
# "dim": 768 # Optional: Output vector dimension (1-768)
}
)
# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)
Parametro |
Descrizione |
Richiesto? |
Esempio Valore |
|---|---|---|---|
|
Il fornitore del modello di incorporazione. Impostare su "vertexai". |
Sì |
|
|
Specifica il modello di incorporamento Vertex AI da usare. |
Sì |
|
|
L'ID del progetto Google Cloud. |
Sì |
|
|
La regione per il servizio Vertex AI. Attualmente, le incorporazioni Vertex AI supportano principalmente us-central1. Si imposta come predefinita su us-central1. |
No |
|
|
Specifica il tipo di attività di incorporazione, che influisce sui risultati dell'incorporazione. Valori accettati: DOC_RETRIEVAL (predefinito), CODE_RETRIEVAL (supportato solo da 005), STS (Semantic Textual Similarity). |
No |
|
|
Dimensione dei vettori di incorporazione in uscita. Accetta numeri interi compresi tra 1 e 768. Nota: se specificato, assicurarsi che la dimensione del campo vettoriale nello schema corrisponda a questo valore. |
No |
|
Passi successivi
Dopo aver configurato la funzione di incorporamento, consultare la Panoramica della funzione per ulteriori indicazioni sulla configurazione degli indici, sugli esempi di inserimento dei dati e sulle operazioni di ricerca semantica.