Vertex AICompatible with Milvus 2.6.x

Google Cloud Vertex AI est un service haute performance spécialement conçu pour les modèles d'intégration de texte. Ce guide explique comment utiliser Google Cloud Vertex AI avec Milvus pour une génération efficace d'intégration de texte.

Vertex AI prend en charge plusieurs modèles d'intégration pour différents cas d'utilisation :

  • gemini-embedding-001 (performances de pointe pour les tâches en anglais, multilingues et de code)

  • text-embedding-005 (modèle d'intégration de texte le plus récent)

  • text-multilingual-embedding-002 (dernier modèle d'intégration de texte multilingue)

Pour plus d'informations, voir les modèles d'intégration de texte de Vertex AI.

Conditions préalables

Assurez-vous de remplir les conditions suivantes avant de configurer Vertex AI :

  • Exécuter Milvus version 2.6 ou supérieure - Vérifiez que votre déploiement est conforme à la version minimale requise.

  • Créez un compte de service Google Cloud - Au minimum, vous aurez probablement besoin de rôles tels que "Vertex AI User" ou d'autres rôles plus spécifiques. Pour plus d'informations, reportez-vous à la section Créer des comptes de service.

  • Téléchargez le fichier de clé JSON du compte de service - Stockez de manière sécurisée ce fichier d'identification sur votre serveur ou votre machine locale. Pour plus d'informations, reportez-vous à la section Créer une clé de compte de service.

Configuration des informations d'identification

Avant que Milvus puisse appeler Vertex AI, il doit avoir accès à la clé JSON de votre compte de service GCP. Nous prenons en charge deux méthodes : choisissez-en une en fonction de vos besoins opérationnels et de déploiement.

Option

Priorité

Meilleur pour

Fichier de configuration (milvus.yaml)

Élevée

Paramètres persistants à l'échelle du cluster

Variables d'environnement (MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS)

Faible

Flux de travail des conteneurs, tests rapides

Milvus préférera toujours les informations d'identification déclarées dans milvus.yaml à toute variable d'environnement pour le même fournisseur.

  1. Base64-encodez votre clé JSON

    cat credentials.json | jq . | base64
    
  2. Déclarer les informations d'identification dans milvus.yaml

    # milvus.yaml
    credential:
      gcp_vertex:                      # arbitrary label
        credential_json: |
          <YOUR_BASE64_ENCODED_JSON>
    
  3. Lier les informations d'identification au fournisseur Vertex AI

    # milvus.yaml
    function:
      textEmbedding:
        providers:
          vertexai:
            credential: gcp_vertex      # must match the label above
            url: <optional: custom Vertex AI endpoint>
    

    Si vous devez ultérieurement changer de clé, il vous suffit de mettre à jour la chaîne Base64 sous credential_json et de redémarrer Milvus - aucune modification de votre environnement ou de vos conteneurs n'est nécessaire.

Option 2 : Variables d'environnement

Utilisez cette méthode si vous préférez injecter des secrets au moment du déploiement. Milvus se rabat sur les env-vars uniquement si aucune entrée correspondante n'existe dans milvus.yaml.

Les étapes de configuration dépendent du mode de déploiement de Milvus (autonome ou cluster distribué) et de la plate-forme d'orchestration (Docker Compose ou Kubernetes).

Pour obtenir votre fichier de configuration Milvus(docker-compose.yaml), reportez-vous à la section Télécharger un fichier d'installation.

  1. Montez votre clé dans le conteneur

    Modifiez votre fichier docker-compose.yaml pour inclure le mappage du volume des informations d'identification :

    services:
      standalone:
        volumes:
          # Map host credential file to container path
          - /path/to/your/credentials.json:/milvus/configs/google_application_credentials.json:ro
    

    Dans la configuration précédente :

    • Utilisez des chemins absolus pour un accès fiable aux fichiers (/home/user/credentials.json et non ~/credentials.json).

    • Le chemin d'accès au conteneur doit se terminer par l'extension .json

    • :ro Le drapeau "read-only" garantit un accès en lecture seule pour des raisons de sécurité.

  2. Définir la variable d'environnement

    Dans le même fichier docker-compose.yaml, ajoutez la variable d'environnement pointant vers le chemin d'accès :

    services:
      standalone:
        environment:
          # Essential for Vertex AI authentication
          MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS: /milvus/configs/google_application_credentials.json
    
  3. Appliquer les modifications

    Redémarrez votre conteneur Milvus pour activer la configuration :

    docker-compose down && docker-compose up -d
    

Pour obtenir votre fichier de configuration Milvus(values.yaml), reportez-vous à Configurer Milvus via un fichier de configuration.

  1. Créer un secret Kubernetes

    Exécutez ceci sur votre machine de contrôle (où kubectl est configuré) :

    kubectl create secret generic vertex-ai-secret \
      --from-file=credentials.json=/path/to/your/credentials.json \
      -n <your-milvus-namespace>
    

    Dans la commande précédente :

    • vertex-ai-secret: Nom de votre secret (personnalisable)

    • /path/to/your/credentials.json: Nom du fichier local de votre fichier d'authentification GCP.

    • <your-milvus-namespace>: Espace de noms Kubernetes hébergeant Milvus

  2. Configurer les valeurs de Helm

    Mettez à jour votre values.yaml en fonction de votre type de déploiement :

    • Pour un déploiement autonome

      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
      
    • Pour un déploiement distribué (ajouter à chaque composant)

      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. Appliquer la configuration Helm

    Déployez la configuration mise à jour dans votre cluster :

    helm upgrade milvus milvus/milvus -f values.yaml -n <your-milvus-namespace>
    

Utiliser la fonction d'intégration

Une fois Vertex AI configuré, suivez les étapes suivantes pour définir et utiliser les fonctions d'intégration.

Étape 1 : définition des champs du schéma

Pour utiliser une fonction d'intégration, créez une collection avec un schéma spécifique. Ce schéma doit comprendre au moins trois champs nécessaires :

  • Le champ primaire qui identifie de manière unique chaque entité d'une collection.

  • Un champ scalaire qui stocke les données brutes à intégrer.

  • Un champ vectoriel réservé au stockage des intégrations vectorielles que la fonction générera pour le champ scalaire.

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)

Étape 2 : Ajouter la fonction d'intégration au schéma

Le module Function de Milvus convertit automatiquement les données brutes stockées dans un champ scalaire en embeddings et les stocke dans le champ vectoriel explicitement défini.

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

Paramètre

Description de la fonction

Obligatoire ?

Exemple Valeur

provider

Le fournisseur du modèle d'intégration. Défini à "vertexai".

Oui

"vertexai"

model_name

Spécifie le modèle d'intégration Vertex AI à utiliser.

Oui

"text-embedding-005"

projectid

Votre ID de projet Google Cloud.

Oui

"your-gcp-project-id"

location

La région pour le service Vertex AI. Actuellement, les intégrations de Vertex AI prennent principalement en charge us-central1. La valeur par défaut est us-central1.

Non

"us-central1"

task

Spécifie le type de tâche d'intégration, qui affecte les résultats de l'intégration. Valeurs acceptées : DOC_RETRIEVAL (par défaut), CODE_RETRIEVAL (seulement 005 supporté), STS (Semantic Textual Similarity).

Non

"DOC_RETRIEVAL"

dim

La dimension des vecteurs d'intégration de sortie. Accepte les entiers entre 1 et 768. Remarque : si cette valeur est spécifiée, il faut s'assurer que la dimension du champ vectoriel dans le schéma correspond à cette valeur.

Non

768

Etapes suivantes

Après avoir configuré la fonction d'intégration, reportez-vous à la vue d'ensemble de la fonction pour obtenir des conseils supplémentaires sur la configuration de l'index, des exemples d'insertion de données et des opérations de recherche sémantique.

Try Managed Milvus for Free

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

Get Started
Feedback

Cette page a-t - elle été utile ?