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 ( |
Hoch |
Clusterweite, dauerhafte Einstellungen |
Umgebungsvariablen ( |
Niedrig |
Container-Workflows, schnelle Tests |
Option 1: Konfigurationsdatei (empfohlen & höhere Priorität)
Milvus wird immer die in milvus.yaml deklarierten Anmeldeinformationen gegenüber Umgebungsvariablen für denselben Anbieter bevorzugen.
Base64-Kodierung Ihres JSON-Schlüssels
cat credentials.json | jq . | base64Deklarieren Sie die Anmeldeinformationen in
milvus.yaml# milvus.yaml credential: gcp_vertex: # arbitrary label credential_json: | <YOUR_BASE64_ENCODED_JSON>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_jsonund 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.
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:roIn der vorangegangenen Konfiguration:
Verwenden Sie absolute Pfade für einen zuverlässigen Dateizugriff (
/home/user/credentials.jsonnicht~/credentials.json)Der Containerpfad muss mit der Erweiterung
.jsonenden.:roDas Flag gewährleistet aus Sicherheitsgründen einen Nur-Lese-Zugriff
Umgebungsvariable setzen
Fügen Sie in derselben Datei
docker-compose.yamldie 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Ä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.
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
Konfigurieren Sie die Helm-Werte
Aktualisieren Sie Ihre
values.yamlbasierend 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: trueFü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.
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 |
|---|---|---|---|
|
Der Anbieter des Einbettungsmodells. Auf "vertexai" eingestellt. |
Ja |
|
|
Gibt an, welches Vertex AI-Einbettungsmodell verwendet werden soll. |
Ja |
|
|
Ihre Google Cloud-Projekt-ID. |
Ja |
|
|
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 |
|
|
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 |
|
|
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 |
|
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.