Vertex AICompatible with Milvus 2.6.x

Google Cloud Vertex AI ist ein Hochleistungsdienst, der speziell für Texteinbettungsmodelle entwickelt wurde. In diesem Leitfaden wird erklärt, wie Google Cloud Vertex AI mit Milvus für die effiziente Erzeugung von Texteinbettungen verwendet wird.

Vertex AI unterstützt verschiedene Einbettungsmodelle für unterschiedliche Anwendungsfälle:

  • gemini-embedding-001 (State-of-the-Art-Leistung bei englischen, mehrsprachigen und Code-Aufgaben)

  • text-embedding-005 (Neuestes Texteinbettungsmodell)

  • text-multilingual-embedding-002 (neuestes Modell für mehrsprachige Texteinbettung)

Weitere Informationen finden Sie unter Vertex AI-Texteinbettungsmodelle.

Voraussetzungen

Stellen Sie sicher, dass Sie diese Voraussetzungen erfüllen, bevor Sie Vertex AI konfigurieren:

  • Führen Sie Milvus Version 2.6 oder höher aus - Vergewissern Sie sich, dass Ihre Bereitstellung die Mindestanforderungen an die Version erfüllt.

  • Erstellen Sie ein Google Cloud Service-Konto - Als Minimum benötigen Sie wahrscheinlich Rollen wie "Vertex AI User" oder andere spezifischere Rollen. Einzelheiten finden Sie unter Erstellen von Servicekonten.

  • Laden Sie die JSON-Schlüsseldatei des Servicekontos herunter - Speichern Sie diese Anmeldedatei sicher auf Ihrem Server oder lokalen Computer. Weitere Informationen finden Sie unter Erstellen eines Servicekonto-Schlüssels.

Konfigurieren Sie die Anmeldeinformationen

Bevor Milvus Vertex AI aufrufen kann, benötigt es Zugriff auf den JSON-Schlüssel Ihres GCP-Servicekontos. Wir unterstützen zwei Methoden - wählen Sie eine aus, die Ihren Einsatz- und Betriebsanforderungen entspricht.

Option

Priorität

Am besten geeignet für

Konfigurationsdatei (milvus.yaml)

Hoch

Clusterweite, dauerhafte Einstellungen

Umgebungsvariablen (MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS)

Niedrig

Container-Workflows, schnelle Tests

Milvus wird immer die in milvus.yaml deklarierten Anmeldeinformationen gegenüber Umgebungsvariablen für denselben Anbieter bevorzugen.

  1. Base64-Kodierung Ihres JSON-Schlüssels

    cat credentials.json | jq . | base64
    
  2. Deklarieren Sie die Anmeldeinformationen in milvus.yaml

    # milvus.yaml
    credential:
      gcp_vertex:                      # arbitrary label
        credential_json: |
          <YOUR_BASE64_ENCODED_JSON>
    
  3. Binden Sie den Berechtigungsnachweis an den Vertex AI-Anbieter

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

    Wenn Sie später Schlüssel austauschen müssen, aktualisieren Sie einfach die Base64-Zeichenfolge unter credential_json und starten Sie Milvus neu - es sind keine Änderungen an Ihrer Umgebung oder Ihren Containern erforderlich.

Option 2: Umgebungsvariablen

Verwenden Sie diese Methode, wenn Sie es vorziehen, Geheimnisse zum Zeitpunkt der Bereitstellung zu injizieren. Milvus greift nur dann auf env-vars zurück, wenn kein passender Eintrag in milvus.yaml existiert.

Die Konfigurationsschritte hängen von Ihrem Milvus-Bereitstellungsmodus (Standalone vs. verteilter Cluster) und der Orchestrierungsplattform (Docker Compose vs. Kubernetes) ab.

Um Ihre Milvus-Konfigurationsdatei(docker-compose.yaml) zu erhalten, lesen Sie den Abschnitt Herunterladen einer Installationsdatei.

  1. Binden Sie Ihren Schlüssel in den Container ein

    Bearbeiten Sie die Datei docker-compose.yaml, um die Zuordnung der Anmeldeinformationen zum Volume einzuschließen:

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

    In der vorangegangenen Konfiguration:

    • Verwenden Sie absolute Pfade für einen zuverlässigen Dateizugriff (/home/user/credentials.json nicht ~/credentials.json)

    • Der Containerpfad muss mit der Erweiterung .json enden.

    • :ro Das Flag gewährleistet aus Sicherheitsgründen einen Nur-Lese-Zugriff

  2. Umgebungsvariable setzen

    Fügen Sie in derselben Datei docker-compose.yaml die Umgebungsvariable hinzu, die auf den Pfad der Anmeldeinformationen verweist:

    services:
      standalone:
        environment:
          # Essential for Vertex AI authentication
          MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS: /milvus/configs/google_application_credentials.json
    
  3. Änderungen übernehmen

    Starten Sie Ihren Milvus-Container neu, um die Konfiguration zu aktivieren:

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

Um Ihre Milvus-Konfigurationsdatei(values.yaml) zu erhalten, siehe Milvus über Konfigurationsdatei konfigurieren.

  1. Erstellen Sie ein Kubernetes Secret

    Führen Sie dies auf Ihrem Kontrollrechner aus (auf dem kubectl konfiguriert ist):

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

    Im vorhergehenden Befehl:

    • vertex-ai-secret: Name für Ihr Geheimnis (anpassbar)

    • /path/to/your/credentials.json: Lokaler Dateiname Ihrer GCP-Anmeldedatei

    • <your-milvus-namespace>: Kubernetes-Namensraum, der Milvus hostet

  2. Konfigurieren Sie die Helm-Werte

    Aktualisieren Sie Ihre values.yaml basierend auf Ihrem Bereitstellungstyp:

    • Für eigenständige Bereitstellung

      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
      
    • Für den verteilten Einsatz (zu jeder Komponente hinzufügen)

      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. Anwenden der Helm-Konfiguration

    Stellen Sie die aktualisierte Konfiguration in Ihrem Cluster bereit:

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

Verwenden Sie die Einbettungsfunktion

Sobald Vertex AI konfiguriert ist, folgen Sie diesen Schritten, um Einbettungsfunktionen zu definieren und zu verwenden.

Schritt 1: Definieren Sie Schemafelder

Um eine Einbettungsfunktion zu verwenden, erstellen Sie eine Sammlung mit einem bestimmten Schema. Dieses Schema muss mindestens drei notwendige Felder enthalten:

  • Das Primärfeld, das jede Entität in einer Sammlung eindeutig identifiziert.

  • Ein Skalarfeld, das die einzubettenden Rohdaten speichert.

  • Ein Vektorfeld, das für die Speicherung von Vektoreinbettungen reserviert ist, die die Funktion für das Skalarfeld erzeugen wird.

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)

Schritt 2: Einbettungsfunktion zum Schema hinzufügen

Das Funktionsmodul in Milvus wandelt automatisch Rohdaten, die in einem Skalarfeld gespeichert sind, in Einbettungen um und speichert sie in dem explizit definierten Vektorfeld.

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

Parameter

Beschreibung

Erforderlich?

Beispielwert

provider

Der Anbieter des Einbettungsmodells. Auf "vertexai" eingestellt.

Ja

"vertexai"

model_name

Gibt an, welches Vertex AI-Einbettungsmodell verwendet werden soll.

Ja

"text-embedding-005"

projectid

Ihre Google Cloud-Projekt-ID.

Ja

"your-gcp-project-id"

location

Die Region für den Vertex AI-Dienst. Derzeit unterstützen die Vertex AI-Einbettungen hauptsächlich us-central1. Der Standardwert ist us-central1.

Nein

"us-central1"

task

Gibt den Typ der Einbettungsaufgabe an, der sich auf die Einbettungsergebnisse auswirkt. Akzeptierte Werte: DOC_RETRIEVAL (Standard), CODE_RETRIEVAL (nur 005 unterstützt), STS (Semantic Textual Similarity).

Nein

"DOC_RETRIEVAL"

dim

Die Dimension der Ausgabeeinbettungsvektoren. Akzeptiert ganze Zahlen zwischen 1 und 768. Hinweis: Falls angegeben, muss die Dimension des Vektorfeldes im Schema mit diesem Wert übereinstimmen.

Nein

768

Nächste Schritte

Nachdem Sie die Einbettungsfunktion konfiguriert haben, finden Sie in der Funktionsübersicht weitere Anleitungen zur Indexkonfiguration, Beispiele für das Einfügen von Daten und semantische Suchvorgänge.

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?