Vertex AI Matching Engine verwenden

In dieser Anleitung wird erläutert, wie Vertex AI Matching Engine konfiguriert und verwendet wird, um Vektorähnlichkeitssuchen durchzuführen.

VPC-Netzwerk-Peering-Verbindung einrichten

Um die Netzwerklatenz für Vektorabgleiche bei Onlineabfragen zu reduzieren, rufen Sie die Vertex AI-Dienstendpunkte aus Ihrer Virtual Private Cloud (VPC) mit privatem Dienstzugriff auf. Für jedes Google Cloud-Projekt kann nur ein VPC-Netzwerk über Peering mit Matching Engine verbunden werden. Wenn Sie bereits eine VPC mit konfiguriertem privatem Dienstzugriff haben, können Sie diese VPC für das Peering mit Vertex AI Matching Engine verwenden.

Das Konfigurieren einer VPC-Netzwerk-Peering-Verbindung ist eine anfängliche Aufgabe, die nur einmal pro Google Cloud-Projekt erforderlich ist. Nachdem diese Einrichtung abgeschlossen ist, können Sie den Matching Engine-Index von jedem Client aus aufrufen, der in Ihrer VPC ausgeführt wird.

Die VPC-Netzwerk-Peering-Verbindung ist nur für Vektorabgleiche von Onlineabfragen erforderlich. API-Aufrufe zum Erstellen, Bereitstellen und Löschen von Indexen erfordern keine VPC-Netzwerk-Peering-Verbindung.

Die folgenden Schritte müssen von Ihrem Cloud-Projektadministrator oder Netzwerkadministrator ausgeführt werden:

  1. Führen Sie die Schritte unter Hinweis aus, um Ihre Cloud-Projekte einzurichten und die Abrechnung und APIs zu aktivieren.

  2. Um Konflikte zwischen IP-Adressen zwischen Ihrem VPC-Netzwerk und dem Netzwerk unseres Diensterstellers zu vermeiden, müssen Sie dem Match Engine-Dienst, in dem die Match Engine-Indexe bereitgestellt werden, einen IP-Adressbereich zuweisen. Weitere Informationen finden Sie unter IP-Adressbereiche zuweisen.

    # Note: `prefix-length=16` means a CIDR block with mask /16 is reserved for
    # use by Google services. Make sure to enable the Service Networking API.
    gcloud compute addresses create $PEERING_RANGE_NAME \
        --global \
        --prefix-length=16 \
        --description="peering range for Matching Engine service" \
        --network=$NETWORK_NAME \
        --purpose=VPC_PEERING \
        --project=$PROJECT_ID
    
    # Create the VPC connection.
    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --network=$NETWORK_NAME \
        --ranges=$PEERING_RANGE_NAME \
        --project=$PROJECT_ID
    

Nachdem Sie eine private Verbindung erstellt haben, können Sie Onlineaufrufe an einen Match Engine-Index von jeder VM-Instanz aus ausführen, die in der Peering-VPC ausgeführt wird.

Beispiel-Notebook

Nachdem Sie die Ersteinrichtung des VPC-Netzwerk-Peerings abgeschlossen haben, können Sie innerhalb dieser VPC eine nutzerverwaltete Notebookinstanz erstellen und Befehle über das Notebook ausgeben.

Starten Sie das Beispielnotebook in Vertex AI Workbench oder rufen Sie das Notebook in GitHub auf.

Zugriffssteuerung mit IAM

Vertex AI verwendet Identity and Access Management (IAM) zur Verwaltung des Zugriffs auf Ressourcen. Wenn Sie Zugriff auf eine Ressource gewähren möchten, weisen Sie einem Nutzer, einer Gruppe oder einem Dienstkonto mindestens eine Rolle zu.

Zur Verwendung von Matching Engine verwenden Sie diese vordefinierten Rollen, um auf Projektebene unterschiedliche Zugriffsrechte auf Ressourcen zu gewähren.

Format und Struktur von Eingabedaten

Wenn Sie einen neuen Index erstellen oder einen vorhandenen Index aktualisieren möchten, stellen Sie Vektoren für Matching Engine in dem Format und der Struktur zur Verfügung, die in den folgenden Abschnitten beschrieben werden.

Speicher für Eingabedaten

Speichern Sie Ihre Eingabedaten in einem Cloud Storage-Bucket in Ihrem Cloud-Projekt.

Eingabeverzeichnisstruktur

Strukturieren Sie Ihr Eingabedatenverzeichnis so:

  • Batch-Stammverzeichnis: Erstellen Sie ein Stammverzeichnis für jeden Batch von Eingabedatendateien. Verwenden Sie ein einzelnes Cloud Storage-Verzeichnis als Stammverzeichnis. Im folgenden Beispiel heißt das Stammverzeichnis batch_root.
  • Dateibenennung: Platzieren Sie einzelne Datendateien direkt unter batch_root und benennen Sie sie mit dem Suffix .csv, .json oder .avro, je nachdem, welches Dateiformat Sie verwenden.

    • Matching Engine interpretiert jede Datendatei als eine Gruppe von Datensätzen.

      Das Format des Datensatzes wird durch das Suffix des Dateinamens bestimmt und in einem der folgenden Abschnitte beschrieben.

    • Jeder Datensatz sollte eine ID und einen Featurevektor enthalten, optional mit zusätzlichen Feldern wie Einschränkungen und Mengenbeschränkungen.

  • Verzeichnis löschen: Sie können ein Unterverzeichnis delete unter batch_root erstellen. Dieses Verzeichnis ist optional.

    • Jede Datei direkt unter batch_root/delete ist eine Textdatei mit Datensatz-IDs, mit einer ID in jeder Zeile. Jede ID muss ein gültiger UTF-8-String sein.
  • Alle anderen Verzeichnisse und Dateien werden ignoriert.

  • Alle Datensätze aus allen Datendateien, einschließlich der Datensätze unter delete, enthalten einen einzelnen Einabebatch. Die relative Reihenfolge der Datensätze innerhalb einer Datendatei ist unerheblich.

  • Eine einzelne ID kann nur einmal pro Batch vorkommen.

    • Hinweis: Eine ID darf nicht gleichzeitig in einer regulären Datendatei und in einer delete-Datendatei enthalten sein.
  • Alle IDs aus einer Datendatei unter delete werden aus der nächsten Indexversion entfernt. Datensätze aus regulären Datendateien werden in die nächste Version aufgenommen, wobei ein Wert in einer früheren Indexversion möglicherweise überschrieben wird.

Datendateiformate

Datendateien können im CSV-, JSON- oder Avro-Format vorliegen.

CSV

  • Codieren Sie die Datei mit UTF-8.
  • Machen Sie jede Zeile zu einer gültigen CSV-Datei, die als einzelner Datensatz interpretiert werden soll.
  • Verwenden Sie als ersten Wert die id, wobei die id ein gültiger UTF-8-String ist.
  • Legen Sie die nächsten N Werte als Dimension des Featurevektors fest, die beim Erstellen eines Index konfiguriert wird. Machen Sie jeden Wert zu einem Gleitkommaliteral, wie in der Java-Sprachspezifikation definiert.

JSON

  • Codieren Sie die Datei mit UTF-8.
  • Machen Sie jede Zeile zu einem gültigen JSON-Objekt, das als Datensatz interpretiert werden soll.
  • Fügen Sie in jeden Datensatz ein Feld namens id ein, das einen gültigen UTF-8-String erfordert, der die ID des Vektors ist.
  • Fügen Sie in jeden Datensatz ein Feld namens embedding ein, das ein Array von Zahlen erfordert. Dies ist der Featurevektor.

AVRO

  • Verwenden Sie eine gültige Avro-Datei.
  • Erstellen Sie Datensätze, die dem folgenden Schema entsprechen:

    {
      "type": "record",
      "name": "FeatureVector",
      "fields": [
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "embedding",
          "type": {
            "type": "array",
            "items": "float"
          }
        },
        {
          "name": "restricts",
          "type": [
            "null",
            {
              "type": "array",
              "items": {
                "type": "record",
                "name": "Restrict",
                "fields": [
                  {
                    "name": "namespace",
                    "type": "string"
                  },
                  {
                    "name": "allow",
                    "type": [
                      "null",
                      {
                        "type": "array",
                        "items": "string"
                      }
                    ]
                  },
                  {
                    "name": "deny",
                    "type": [
                      "null",
                      {
                        "type": "array",
                        "items": "string"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        },
        {
          "name": "crowding_tag",
          "type": [
            "null",
            "string"
          ]
        }
      ]
    }
    

Indexe verwalten

In den folgenden Abschnitten wird beschrieben, wie Sie Indexe erstellen, löschen oder aktualisieren. Weitere Informationen finden Sie in der API-Dokumentation zu Indexen.

Index-Metadatendatei

Bevor Sie einen Index erstellen, müssen Sie die Parameter für Ihren Index konfigurieren.

Erstellen Sie beispielsweise eine Datei mit dem Namen index_metadata.json:

{
  "contentsDeltaUri": "gs://BUCKET_NAME/path",
  "config": {
    "dimensions": 100,
    "approximateNeighborsCount": 150,
    "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
    "algorithm_config": {
      "treeAhConfig": {
        "leafNodeEmbeddingCount": 500,
        "leafNodesToSearchPercent": 7
      }
    }
  }
}

Sie finden die Definition für jedes dieser Felder unter Indexe konfigurieren oder Sie rufen die Definitionen im folgenden Schema auf:

title: NearestNeighborSearch
type: object
properties:
  contentsDeltaUri:
    type: string
    description: >
      Allows inserting, updating  or deleting the contents of the Matching Engine Index.
      The string must be a valid Cloud Storage directory path. If this
      field is set when calling IndexService.UpdateIndex, then no other
      Index field can be also updated as part of the same call.
      The expected structure and format of the files this URI points to is
      described at https://cloud.google.com/vertex-ai/docs/matching-engine/using-matching-engine#input-data-format
    writeOnly: true
  isCompleteOverwrite:
    type: boolean
    description: >
      If this field is set together with contentsDeltaUri when calling IndexService.UpdateIndex,
      then existing content of the Index will be replaced by the data from the contentsDeltaUri.
    default: false
  config:
    type: object
    description: >
      The configuration of the Matching Engine Index.
    required:
    - dimensions
    - algorithmConfig
    properties:
      dimensions:
        type: integer
        format: int32
        description: >
          The number of dimensions of the input vectors.
      approximateNeighborsCount:
        type: integer
        format: int32
        description: >
          The default number of neighbors to find via approximate search before exact reordering is
          performed. Exact reordering is a procedure where results returned by an
          approximate search algorithm are reordered via a more expensive distance computation.
          Required if tree-AH algorithm is used.
      distanceMeasureType:
        description: >
          The distance measure used in nearest neighbor search.
        oneOf:
        - enum: [SQUARED_L2_DISTANCE]
          description: >
            Euclidean (L_2) Distance
        - enum: [L1_DISTANCE]
          description: >
            Manhattan (L_1) Distance
        - enum: [COSINE_DISTANCE]
          description: >
            Cosine Distance. Defined as 1 - cosine similarity.
        - enum: [DOT_PRODUCT_DISTANCE]
          description: >
            Dot Product Distance. Defined as a negative of the dot product
        default: DOT_PRODUCT_DISTANCE
      featureNormType:
        description: >
          Type of normalization to be carried out on each vector.
        oneOf:
        - enum: [UNIT_L2_NORM]
          description: >
            Unit L2 normalization type.
        - enum: [NONE]
          description: >
            No normalization type is specified.
        default: NONE
      algorithmConfig:
        description: >
          The configuration with regard to the algorithms used for efficient search.
        oneOf:
        - type: object
          description: >
             Configuration options for using the tree-AH algorithm (Shallow tree + Asymmetric Hashing).
             Please refer to this paper for more details: https://arxiv.org/abs/1908.10396
          properties:
            type:
              type: string
              enum: [treeAhConfig]
            leafNodeEmbeddingCount:
              type: integer
              format: int64
              description: >
                 Number of embeddings on each leaf node. The default value is 1000 if not set.
            leafNodesToSearchPercent:
              type: number
              format: int32
              description: >
                 The default percentage of leaf nodes that any query may be searched. Must be in
                 range 1-100, inclusive. The default value is 10 (means 10%) if not set.
        - type: object
          description: >
             Configuration options for using brute force search, which simply implements the
             standard linear search in the database for each query.
          properties:
            type:
              type: string
              enum: [bruteForceConfig]
        discriminator:
          propertyName: type

Diese Metadaten-Schemadatei kann aus Cloud Storage heruntergeladen werden.

Index erstellen

So erstellen Sie einen Index:

gcloud

  1. Definieren Sie die Indexmetadaten.
  2. Führen Sie den Befehl gcloud ai indexes create aus:
gcloud ai indexes create \
  --metadata-file=LOCAL_PATH_TO_METADATA_FILE \
  --display-name=INDEX_NAME \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • LOCAL_PATH_TO_METADATA_FILE: Der lokale Dateipfad zur Metadatendatei.
  • INDEX_NAME: Der Anzeigename für den Index.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Ihre Region.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_NAME: Der Anzeigename für den Index.
  • INPUT_DIR: Der Cloud Storage-Verzeichnispfad des Indexinhalts.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexes

JSON-Text anfordern:

{
  "display_name": "INDEX_NAME",
  "metadata": {
    "contentsDeltaUri": "INPUT_DIR",
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "algorithm_config": {
        "treeAhConfig": {
          "leafNodeEmbeddingCount": 500,
          "leafNodesToSearchPercent": 7
        }
      }
    }
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-08T01:21:10.147035Z",
      "updateTime": "2022-01-08T01:21:10.147035Z"
    }
  }
}
Sie können den Status des Vorgangs abfragen, bis in der Antwort "done": true angegeben wird.

Indexe auflisten

gcloud

Führen Sie den Befehl gcloud ai indexes list aus:

gcloud ai indexes list \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Ihre Region.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_NAME: Der Anzeigename für den Index.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexes

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "indexes": [
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID",
      "displayName": "INDEX_NAME",
      "metadataSchemaUri": "gs://google-cloud-aiplatform/schema/matchingengine/metadata/nearest_neighbor_search_1.0.0.yaml",
      "metadata": {
        "config": {
          "dimensions": 100,
          "approximateNeighborsCount": 150,
          "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
          "featureNormType": "NONE",
          "algorithmConfig": {
            "treeAhConfig": {
              "maxLeavesToSearch": 50,
              "leafNodeCount": 10000
            }
          }
        }
      },
      "etag": "AMEw9yNU8YX5IvwuINeBkVv3yNa7VGKk11GBQ8GkfRoVvO7LgRUeOo0qobYWuU9DiEc=",
      "createTime": "2020-11-08T21:56:30.558449Z",
      "updateTime": "2020-11-08T22:39:25.048623Z"
    }
  ]
}

Indexinhalt aktualisieren

Mit der Methode IndexService.UpdateIndex können Sie den Inhalt eines vorhandenen Index aktualisieren.

So ersetzen Sie den vorhandenen Inhalt eines Index:

  • Setzen Sie Index.metadata.contentsDeltaUri auf den Cloud Storage-URI, der die zu aktualisierenden Vektoren enthält.
  • isCompleteOverwrite auf „true“ festlegen.

Wenn Sie das Feld contentsDeltaUri beim Aufruf von IndexService.UpdateIndex festlegen, können keine anderen Indexfelder wie displayName, description oder userLabels im Rahmen desselben Aufrufs aktualisiert werden.

gcloud

  1. Indexmetadatendatei aktualisieren
  2. Führen Sie den Befehl gcloud ai indexes update aus:
gcloud ai indexes update INDEX_ID \
  --metadata-file=LOCAL_PATH_TO_METADATA_FILE \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • INDEX_ID: Die ID des Index.
  • LOCAL_PATH_TO_METADATA_FILE: Der lokale Dateipfad zur Metadatendatei.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Ihre Region.
  • PROJECT: Projekt-ID oder Projektnummer
  • INPUT_DIR: Der Cloud Storage-Verzeichnispfad des Indexinhalts.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexes/INDEX_ID

JSON-Text anfordern:

{
  "metadata": {
    "contentsDeltaUri": "INPUT_DIR",
    "isCompleteOverwrite": true
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-12T23:56:14.480948Z",
      "updateTime": "2022-01-12T23:56:14.480948Z"
    }
  }
}
Sie können den Status des Vorgangs abfragen, bis in der Antwort "done": true angegeben wird.

Wenn im Index verknüpfte Bereitstellungen vorhanden sind (siehe Feld Index.deployed_indexes) und bestimmte Änderungen am ursprünglichen Index vorgenommen werden, wird der DeployedIndex im Hintergrund automatisch asynchron aktualisiert, um diese Änderungen widerzuspiegeln.

Vergleichen Sie die Endzeit des Vorgang zur Indexaktualisierung mit der DeployedIndex.index_sync_time, um zu prüfen, ob die Änderung übernommen wurde.

Index löschen

Beachten Sie, dass Sie Index erst löschen können, wenn die Bereitstellung für Index.deployed_indexes aufgehoben wurde.

gcloud

Führen Sie den Befehl gcloud ai indexes delete aus:

gcloud ai indexes delete INDEX_ID \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • INDEX_ID: Die ID des Index.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Ihre Region.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_ID: Die ID des Index.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexes/INDEX_ID

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-08T02:35:56.364956Z",
      "updateTime": "2022-01-08T02:35:56.364956Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Indexe bereitstellen und verwalten

Die Bereitstellung eines Index umfasst die folgenden drei Aufgaben:

  1. Erstellen Sie bei Bedarf einen IndexEndpoint oder verwenden Sie einen vorhandenen IndexEndpoint.
  2. Rufen Sie die ID IndexEndpoint ab.
  3. Stellen Sie den Index auf dem IndexEndpoint bereit.

Erstellen Sie einen IndexEndpoint in Ihrem VPC-Netzwerk.

Wenn Sie einen Index in einem vorhandenen IndexEndpoint bereitstellen, können Sie diesen Schritt überspringen.

Bevor Sie einen Index zum Bereitstellen von Onlineabfragen für den Vektorabgleich verwenden können, müssen Sie den Index auf einem IndexEndpoint innerhalb Ihres VPC-Netzwerk-Peering-Netzwerks bereitstellen. Im ersten Schritt erstellen Sie einen IndexEndpoint. Sie können mehr als einen Index auf einem IndexEndpoint bereitstellen, der dasselbe VPC-Netzwerk verwendet.

gcloud

Im folgenden Beispiel wir der Befehl gcloud ai index-endpoints create verwendet:

gcloud ai index-endpoints create \
  --display-name=INDEX_ENDPOINT_NAME \
  --network=VPC_NETWORK_NAME \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • INDEX_ENDPOINT_NAME: Der Anzeigename des Indexendpunkts
  • VPC_NETWORK_NAME: Der Google Compute Engine-Netzwerkname, mit dem ein Indexendpunkt-Peering erfolgen soll.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

Es kann einige Minuten dauern, bis das Google Cloud-CLI-Tool das IndexEndpoint erstellt hat.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Ihre Region.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_ENDPOINT_NAME: Der Anzeigename des Indexendpunkts
  • VPC_NETWORK_NAME: Der Google Compute Engine-Netzwerkname, mit dem ein Indexendpunkt-Peering erfolgen soll.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexEndpoints

JSON-Text anfordern:

{
  "display_name": "INDEX_ENDPOINT_NAME",
  "network": "VPC_NETWORK_NAME"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateIndexEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-13T04:09:56.641107Z",
      "updateTime": "2022-01-13T04:09:56.641107Z"
    }
  }
}
Sie können den Status des Vorgangs abfragen, bis in der Antwort "done": true angegeben wird.

Index bereitstellen

gcloud

Im folgenden Beispiel wir der Befehl gcloud ai index-endpoints deploy-index verwendet:

gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
  --deployed-index-id=DEPLOYED_INDEX_ID \
  --display-name=DEPLOYED_INDEX_NAME \
  --index=INDEX_ID \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • DEPLOYED_INDEX_ID: Die ID des bereitgestellten Index.
  • DEPLOYED_INDEX_NAME: Der Anzeigename des bereitgestellten Index
  • INDEX_ID: Die ID des Index.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • DEPLOYED_INDEX_ID: Die ID des bereitgestellten Index.
  • DEPLOYED_INDEX_NAME: Der Anzeigename des bereitgestellten Index
  • INDEX_ID: Die ID des Index.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

JSON-Text anfordern:

{
  "deployedIndex": {
    "id": "DEPLOYED_INDEX_ID",
    "index": "projects/PROJECT/locations/LOCATION/indexes/INDEX_ID",
    "displayName": "DEPLOYED_INDEX_NAME"
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-10-19T17:53:16.502088Z",
      "updateTime": "2020-10-19T17:53:16.502088Z"
    },
    "deployedIndexId": "DEPLOYED_INDEX_ID"
  }
}
Sie können den Status des Vorgangs abfragen, bis in der Antwort "done": true angegeben wird.

Automatische Skalierung aktivieren

Matching Engine unterstützt Autoscaling, mit dem die Anzahl der Knoten automatisch an die Anforderungen Ihrer Arbeitslasten angepasst werden kann. Bei hoher Nachfrage werden Knoten dem Knotenpool hinzugefügt, überschreiten aber die von Ihnen festgelegte maximale Größe nicht. Bei geringer Nachfrage wird der Knotenpool wieder auf eine von Ihnen festgelegte Mindestgröße herunterskaliert. Sie können die tatsächlich verwendeten Knoten und die Änderungen prüfen, wenn Sie die aktuellen Replikate überwachen.

Um das Autoscaling zu aktivieren, geben Sie beim Bereitstellen des Index maxReplicaCount und minReplicaCount an:

gcloud

Im folgenden Beispiel wir der Befehl gcloud ai index-endpoints deploy-index verwendet:

gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
  --deployed-index-id=DEPLOYED_INDEX_ID \
  --display-name=DEPLOYED_INDEX_NAME \
  --index=INDEX_ID \
  --min-replica-count=MIN_REPLICA_COUNT \
  --max-replica-count=MAX_REPLICA_COUNT \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • DEPLOYED_INDEX_ID: Die ID des bereitgestellten Index.
  • DEPLOYED_INDEX_NAME: Der Anzeigename des bereitgestellten Index
  • INDEX_ID: Die ID des Index.
  • MIN_REPLICA_COUNT: Die Mindestanzahl an Maschinenreplikaten, auf denen der bereitgestellte Index immer bereitgestellt wird. Wenn angegeben, muss der Wert 1 oder größer sein.
  • MAX_REPLICA_COUNT: Die maximale Anzahl an Maschinenreplikaten, auf denen der bereitgestellte Index bereitgestellt werden kann.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • DEPLOYED_INDEX_ID: Die ID des bereitgestellten Index.
  • DEPLOYED_INDEX_NAME: Der Anzeigename des bereitgestellten Index
  • INDEX_ID: Die ID des Index.
  • MIN_REPLICA_COUNT: Die Mindestanzahl an Maschinenreplikaten, auf denen der bereitgestellte Index immer bereitgestellt wird. Wenn angegeben, muss der Wert 1 oder größer sein.
  • MAX_REPLICA_COUNT: Die maximale Anzahl an Maschinenreplikaten, auf denen der bereitgestellte Index bereitgestellt werden kann.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

JSON-Text anfordern:

{
  "deployedIndex": {
    "id": "DEPLOYED_INDEX_ID",
    "index": "projects/PROJECT/locations/LOCATION/indexes/INDEX_ID",
    "displayName": "DEPLOYED_INDEX_NAME",
    "automaticResources": {
      "minReplicaCount": MIN_REPLICA_COUNT,
      "maxReplicaCount": MAX_REPLICA_COUNT
    }
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-10-19T17:53:16.502088Z",
      "updateTime": "2020-10-19T17:53:16.502088Z"
    },
    "deployedIndexId": "DEPLOYED_INDEX_ID"
  }
}
Sie können den Status des Vorgangs abfragen, bis in der Antwort "done": true angegeben wird.
  • Wenn sowohl minReplicaCount als auch maxReplicaCount nicht festgelegt sind, werden sie standardmäßig auf 2 gesetzt.
  • Wenn nur maxReplicaCount festgelegt ist, ist minReplicaCount standardmäßig auf 2 gesetzt.
  • Wenn nur minReplicaCount festgelegt ist, ist maxReplicaCount gleich minReplicaCount.

DeployedIndex mutieren

Sie können die MutateDeployedIndex API verwenden, um die Bereitstellungsressourcen (z. B. minReplicaCount und maxReplicaCount) eines bereits bereitgestellten Index zu aktualisieren.

  • Nutzer dürfen den machineType nach der Bereitstellung des Index nicht mehr ändern.
  • Wenn maxReplicaCount nicht in der Anfrage angegeben ist, verwendet DeployedIndex weiterhin den vorhandenen maxReplicaCount.

gcloud

Im folgenden Beispiel wir der Befehl gcloud ai index-endpoints mutate-deployed-index verwendet:

gcloud ai index-endpoints mutate-deployed-index INDEX_ENDPOINT_ID \
  --deployed-index-id=DEPLOYED_INDEX_ID \
  --min-replica-count=MIN_REPLICA_COUNT \
  --max-replica-count=MAX_REPLICA_COUNT \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • DEPLOYED_INDEX_ID: Die ID des bereitgestellten Index.
  • MIN_REPLICA_COUNT: Die Mindestanzahl an Maschinenreplikaten, auf denen der bereitgestellte Index immer bereitgestellt wird. Wenn angegeben, muss der Wert 1 oder größer sein.
  • MAX_REPLICA_COUNT: Die maximale Anzahl an Maschinenreplikaten, auf denen der bereitgestellte Index bereitgestellt werden kann.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • DEPLOYED_INDEX_ID: Die ID des bereitgestellten Index.
  • MIN_REPLICA_COUNT: Die Mindestanzahl an Maschinenreplikaten, auf denen der bereitgestellte Index immer bereitgestellt wird. Wenn angegeben, muss der Wert 1 oder größer sein.
  • MAX_REPLICA_COUNT: Die maximale Anzahl an Maschinenreplikaten, auf denen der bereitgestellte Index bereitgestellt werden kann.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:mutateDeployedIndex

JSON-Text anfordern:

{
  "id": "DEPLOYED_INDEX_ID",
  "automaticResources": {
    "minReplicaCount": MIN_REPLICA_COUNT,
    "maxReplicaCount": MAX_REPLICA_COUNT
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.MutateDeployedIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-24T20:36:37.902782Z",
      "updateTime": "2022-01-24T20:36:37.902782Z"
    },
    "deployedIndexId": "gcloud_deployed_index_2"
  }
}
Sie können den Status des Vorgangs abfragen, bis in der Antwort "done": true angegeben wird.

IndexEndpoints auflisten

Führen Sie den folgenden Code aus, um Ihre IndexEndpoint-Ressourcen aufzulisten und die Informationen zu den zugehörigen DeployedIndex-Instanzen aufzurufen:

gcloud

Im folgenden Beispiel wir der Befehl gcloud ai index-endpoints list verwendet:

gcloud ai index-endpoints list \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Ihre Region.
  • PROJECT: Projekt-ID oder Projektnummer
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexEndpoints

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "indexEndpoints": [
    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID",
      "displayName": "INDEX_ENDPOINT_NAME",
      "deployedIndexes": [
        {
          "id": "DEPLOYED_INDEX_ID",
          "index": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID",
          "displayName": "DEPLOYED_INDEX_ID",
          "createTime": "2021-06-04T02:23:40.178286Z",
          "privateEndpoints": {
            "matchGrpcAddress": "GRPC_ADDRESS"
          },
          "indexSyncTime": "2022-01-13T04:22:00.151916Z",
          "automaticResources": {
            "minReplicaCount": 2,
            "maxReplicaCount": 10
          }
        }
      ],
      "etag": "AMEw9yP367UitPkLo-khZ1OQvqIK8Q0vLAzZVF7QjdZ5O3l7Zow-mzBo2l6xmiuuMljV",
      "createTime": "2021-03-17T04:47:28.460373Z",
      "updateTime": "2021-06-04T02:23:40.930513Z",
      "network": "VPC_NETWORK_NAME"
    }
  ]
}

Weitere Informationen finden Sie in der Referenzdokumentation zu IndexEndpoint.

Bereitstellung eines Index aufheben

Führen Sie den folgenden Code aus, um die Bereitstellung eines Index aufzuheben:

gcloud

Im folgenden Beispiel wir der Befehl gcloud ai index-endpoints undeploy-index verwendet:

gcloud ai index-endpoints undeploy-index INDEX_ENDPOINT_ID \
  --deployed-index-id=DEPLOYED_INDEX_ID \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • DEPLOYED_INDEX_ID: Die ID des bereitgestellten Index.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Ihre Region.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • DEPLOYED_INDEX_ID: Die ID des bereitgestellten Index.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:undeployIndex

JSON-Text anfordern:

{
  "deployed_index_id": "DEPLOYED_INDEX_ID"
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UndeployIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-13T04:09:56.641107Z",
      "updateTime": "2022-01-13T04:09:56.641107Z"
    }
  }
}

IndexEndpoint löschen

Bevor Sie einen IndexEndpoint löschen, müssen Sie alle zugehörigen Indexe aufheben.

gcloud

Im folgenden Beispiel wir der Befehl gcloud ai index-endpoints delete verwendet:

gcloud ai index-endpoints delete INDEX_ENDPOINT_ID \
  --project=PROJECT_ID \
  --region=LOCATION

Dabei gilt:

  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • PROJECT_ID: ID des Projekts
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Ihre Region.
  • PROJECT: Projekt-ID oder Projektnummer
  • INDEX_ENDPOINT_ID: Die ID des Indexendpunkts.
  • PROJECT_NUMBER: Projektnummer für Ihr Projekt

HTTP-Methode und URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-13T04:36:19.142203Z",
      "updateTime": "2022-01-13T04:36:19.142203Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Indexe zum Abrufen der nächsten Nachbarn abfragen

Jeder DeployedIndex hat eine DEPLOYED_INDEX_SERVER_IP, die Sie durch Auflisten von IndexEndpoints abrufen können. Zum Abfragen eines DeployedIndex stellen Sie eine Verbindung zu seiner DEPLOYED_INDEX_SERVER_IP an Port 10000 her und rufen die Methode Match oder BatchMatch auf.

In den folgenden Beispielen wird das Open-Source-Tool grpc_cli verwendet, um grpc-Anfragen an den bereitgestellten Indexserver zu senden. Im ersten Beispiel senden Sie eine einzelne Abfrage mit der Methode Match.

./grpc_cli call ${DEPLOYED_INDEX_SERVER_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match '{deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]}'

Im zweiten Beispiel kombinieren Sie zwei separate Abfragen in derselben BatchMatch-Anfrage.

./grpc_cli call ${DEPLOYED_INDEX_SERVER_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.BatchMatch 'requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]}, {deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.2,..]}]}]'

Sie müssen diese APIs von einem Client aus aufrufen, der in derselben VPC, die über Peering mit dem Dienst verbunden wurde, ausgeführt wird.

Um weitere Informationen zum Erstellen der Abfragen zu erhalten, starten Sie ein Beispiel-Notebook und führen Sie es in Vertex AI Workbench aus.

Index feinabstimmen

Zum Feinabstimmen des Index müssen Sie die Konfigurationsparameter festlegen, die sich auf die Leistung der bereitgestellten Indexe auswirken, insbesondere die Recall und Latenz. Diese Parameter werden beim Erstellen des Index festgelegt. Sie können Brute-Force-Indexe verwenden, um den Recall zu messen.

Konfigurationsparameter, die sich auf Recall und Latenz auswirken

  1. distanceMeasureType

    Folgende Werte werden unterstützt:

    • SQUARED_L2_DISTANCE: Euklidische L2-Distanz.
    • L1_DISTANCE: Manhattan-L1-Distanz.
    • COSINE_DISTANCE: Kosinus-Distanz, definiert als "1 – Kosinus-Ähnlichkeit".
    • DOT_PRODUCT_DISTANCE: vDot-Produkt-Distanz, definiert als negativer Wert des Skalarprodukts. Dies ist der Standardwert.

    In den meisten Fällen werden die für den Ähnlichkeitsabgleich verwendeten Einbettungsvektoren mithilfe von Messwert-Lernmodellen (auch als siamesische Netzwerke oder Two-Tower-Modelle bezeichnet) berechnet. Diese Modelle verwenden einen Distanzmesswert, um die Kontrastverlustfunktion zu berechnen. Im Idealfall entspricht der Wert des Parameters distanceMeasureType für den übereinstimmenden Index der Distanzmessung, die vom Modell verwendet wird, das die Einbettungsvektoren erstellt hat.

  2. approximateNeighborsCount

    Die Standardanzahl der Nachbarn, die mithilfe der ungefähren Suche ermittelt werden soll, bevor eine genaue Neusortierung durchgeführt wird. Bei der genauen Neusortierung werden Ergebnisse, die von einem ungefähren Suchalgorithmus zurückgegeben werden, über eine aufwendigere Distanzberechnung neu sortiert. Durch Erhöhen dieses Werts wird der Recall erhöht, was zu einer proportionalen Erhöhung der Latenz führen kann.

  3. treeAhConfig.leafNodesToSearchPercent

    Der Prozentsatz der Blätter, die für jede Abfrage gesucht werden sollen. Durch Erhöhen dieses Werts wird der Recall erhöht, was auch zu einer proportionalen Erhöhung der Latenz führen kann. Der Standardwert ist 10 oder 10 % der Blätter.

  4. treeAhConfig.leafNodeEmbeddingCount

    Die Anzahl der Einbettungen für jeden Blattknoten. Standardmäßig ist die Anzahl auf 1000 festgelegt.

    Dieser Parameter hat keine lineare Korrelation zum Recall. Das Erhöhen oder Verringern des Werts des Parameters treeAhConfig.leafNodeEmbeddingCount erhöht oder verringert nicht immer den Recall. Experimentieren Sie, um den optimalen Wert zu ermitteln. Das Ändern des Werts des Parameters treeAhConfig.leafNodeEmbeddingCount hat in der Regel weniger Auswirkungen als die Änderung des Werts der anderen Parameter.

Brute-Force-Index zum Messen des Recalls verwenden

Verwenden Sie Indexe mit dem Brute-Force-Algorithmus, um die nächsten Nachbarn abzurufen. Der Brute-Force-Algorithmus bietet einen Recall von 100 %, allerdings auf Kosten einer höheren Latenz. Ein Brute-Force-Index zur Messung des Recalls ist in der Regel keine gute Wahl für die Produktionsbereitstellung, aber er kann nützlich sein, um den Recall verschiedener Indexierungsoptionen offline zu beurteilen.

Wenn Sie einen Index mit dem Brute-Force-Algorithmus erstellen möchten, geben Sie brute_force_config in den Index-Metadaten an:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/indexes \
-d '{
    displayName: "'${DISPLAY_NAME}'",
    description: "'${DESCRIPTION}'",
    metadata: {
       contentsDeltaUri: "'${INPUT_DIR}'",
       config: {
          dimensions: 100,
          approximateNeighborsCount: 150,
          distanceMeasureType: "DOT_PRODUCT_DISTANCE",
          featureNormType: "UNIT_L2_NORM",
          algorithmConfig: {
             bruteForceConfig: {}
          }
       },
    },
}'

Das Beispiel-Notebook zeigt, wie ein Brute-Force-Index zur Messung des Recalls verwendet wird.

IndexEndpoint überwachen

Google bietet zwei Messwerte für das Monitoring des IndexEndpoint:

  • aiplatform.googleapis.com/matching_engine/current_shards

    Die Anzahl der Fragmentierungen von DeployedIndex. Nachdem Daten hinzugefügt und gelöscht wurden, passt Matching Engine den Index automatisch neu an, um eine optimale Leistung zu erzielen. Dieser Messwert gibt die aktuelle Anzahl der Fragmentierungen des bereitgestellten Index an.

  • aiplatform.googleapis.com/matching_engine/current_replicas

    Die Gesamtzahl der aktiven Replikatserver, die vom DeployedIndex verwendet werden. Zum Bewältigung des Abfragevolumens aktiviert oder deaktiviert Match Engine automatisch Replikatserver anhand der Mindest- und Höchstwerte der Replikateinstellungen, die bei der Bereitstellung des Index festgelegt wurden.

    Wenn der Index mehrere Shards enthält, kann jeder Shard mit einer anderen Anzahl von Replikatservern bereitgestellt werden. Dieser Messwert gibt die Gesamtzahl der Replikatserver für alle Shards des angegebenen Index an.

Weitere Informationen zum Auswählen, Abfragen und Anzeigen dieser Messwerte in Metrics Explorer.

Kontingente

Weitere Informationen zu Vertex AI Matching Engine-Kontingenten und zum Anfordern von Kontingenterhöhungen.

FAQ

Wie viele IP-Adressen sollte ich reservieren?

Wenn der IP-Bereich, den Sie zuweisen können, nicht eingeschränkt ist, sollten Sie einen großen IP-Bereich wie /16 reservieren, um ein zukünftiges Problem in Bezug auf ausgeschöpfte IP-Adressen zu vermeiden.

Wenn Sie keine übermäßige Zuweisung von IP-Bereichen wünschen, können Sie eine grobe Schätzung basierend auf der Datengröße und dem Traffic durchführen. Jeder Shard kann etwa 20 GB Daten im Avro-Format hosten und jedes Replikat des Shards kann etwa 800 bis 1.000 Abfragen pro Sekunde verarbeiten. Die genaue Anzahl der Abfragen pro Sekunde, die jedes Replikat bereitstellen kann, hängt beispielsweise von der Größe der Einbettung, den Dimensionen und den Algorithmuskonfigurationen ab. Wir empfehlen dringend, einen Lasttest durchzuführen, um eine genaue Zahl zu ermitteln.

Die Gesamtzahl der bereitgestellten Indexknoten beträgt: (Anzahl der Shards) * (Anzahl der Replikate pro Shard). Wenn die Datengröße beispielsweise 30 GB und 1.200 Abfragen pro Sekunde beträgt, benötigen Sie mindestens zwei Shards und zwei Replikate pro Shard, also insgesamt vier bereitgestellte Indexknoten.

Nachdem Sie die Gesamtzahl der bereitgestellten Indexknoten geschätzt haben, können Sie das IP-Bereichspräfix anhand der folgenden Tabelle auswählen:

Insgesamt bereitgestellte Indexknoten Empfohlenes reserviertes IP-Präfix
1 - 10 /21
11 - 25 /20
26 - 50 /19
51 - 120 /18

Wie behebe ich einen Fehler in Bezug auf ausgeschöpfte IP-Adressen?

Führen Sie die folgenden Schritte aus, um einen Fehler in Bezug auf ausgeschöpfte IP-Adressen zu beheben:

  1. Suchen Sie nach nicht verwendeten DeployedIndexes und heben Sie ihre Bereitstellung auf, um einige IP-Bereiche freizugeben.

  2. Erweitern Sie vorhandene reservierte IP-Bereiche oder weisen Sie weitere IP-Bereiche zu.

Weitere Informationen finden Sie unter IP-Adressbereich ausgeschöpft.

Warum kann ich die bereitgestellte Index-ID nicht wiederverwenden, wenn die Bereitstellung des vorherigen DeployedIndex aufgehoben wurde?

Die UndeployIndex-Bereinigung dauert mindestens 10 bis 20 Minuten, selbst wenn eine Erfolgsbestätigung empfangen wurde. Wir empfehlen, entweder 10 bis 20 Minuten zu warten, bevor Sie dieselbe ID wiederverwenden, oder eine andere ID verwenden.

Support

Wenn bei der Verwendung von Matching Engine ein Problem auftritt, gibt es zwei Möglichkeiten, Support zu erhalten. Geben Sie in beiden Fällen die folgenden Informationen an:

  • Der Befehl oder Code, den Sie ausgeführt haben und der das Problem ausgelöst hat.
  • Die Umgebung, in der Sie den Befehl oder Code ausgeführt haben. Wurde er beispielsweise in einer Compute Engine-Instanz oder auf einem lokalen Computer ausgeführt?
  • Das beobachtete Verhalten und den Unterschied zum erwarteten Verhalten.

Cloud Customer Care-Ticket erstellen

Wenn Sie ein Customer Care-Paket haben, können Sie ein Support-Ticket einreichen. Informationen zum Abrufen eines Cloud Customer Care-Pakets finden Sie unter Customer Care.

  1. Rufen Sie in der Google Cloud Console die Seite Fälle auf.

    Zur Seite "Fälle"

  2. Klicken Sie auf Fall erstellen.

    • Geben Sie im Feld Titel Matching Engine serving ein.
    • Wählen Sie im Feld Kategorie die Option Maschinelles Lernen aus.
    • Wählen Sie im Feld Komponente die Option Vertex AI Matching Engine aus.
    • Geben Sie im Feld Beschreibung die angeforderten Informationen ein und beantworten Sie die Fragen. Fügen Sie relevante Details hinzu, z. B. Projekt-/Index-/Vorgangs-ID, Fehlermeldungen usw.
    • Klicken Sie auf Senden.

Die Community fragen

Alternativ können Sie über einen der folgenden öffentlichen Kanäle Support erhalten.

  • Bei Fragen zum Client SDK melden Sie ein Problem auf GitHub.
  • Sonstige Fragen stellen Sie im Stack Overflow unter dem Tag google-cloud-vertex-ai.

Nächste Schritte