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 (milvus.yaml)

Alta

Impostazioni persistenti a livello di cluster

Variabili d'ambiente (MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS)

Basso

Flussi di lavoro del contenitore, test rapidi

Milvus preferirà sempre le credenziali dichiarate in milvus.yaml rispetto a qualsiasi variabile d'ambiente per lo stesso provider.

  1. Codificare in base64 la chiave JSON

    cat credentials.json | jq . | base64
    
  2. Dichiarare le credenziali in milvus.yaml

    # milvus.yaml
    credential:
      gcp_vertex:                      # arbitrary label
        credential_json: |
          <YOUR_BASE64_ENCODED_JSON>
    
  3. 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_json e 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.

  1. Montare la chiave nel contenitore

    Modificare il file docker-compose.yaml per 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:ro
    

    Nella configurazione precedente:

    • Usare percorsi assoluti per un accesso affidabile ai file (/home/user/credentials.json non ~/credentials.json)

    • Il percorso del contenitore deve terminare con l'estensione .json

    • :ro Il flag assicura l'accesso in sola lettura per la sicurezza

  2. 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.json
    
  3. Applicare 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.

  1. 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

  2. Configurare i valori di Helm

    Aggiornare il sito values.yaml in 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: true
      
    • Per 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.
      
  3. 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

provider

Il fornitore del modello di incorporazione. Impostare su "vertexai".

"vertexai"

model_name

Specifica il modello di incorporamento Vertex AI da usare.

"text-embedding-005"

projectid

L'ID del progetto Google Cloud.

"your-gcp-project-id"

location

La regione per il servizio Vertex AI. Attualmente, le incorporazioni Vertex AI supportano principalmente us-central1. Si imposta come predefinita su us-central1.

No

"us-central1"

task

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

"DOC_RETRIEVAL"

dim

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

768

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.

Try Managed Milvus for Free

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

Get Started
Feedback

Questa pagina è stata utile?