Indexe verwalten

In den folgenden Abschnitten wird beschrieben, wie Sie Indexe konfigurieren, erstellen, auflisten und löschen.

Indexübersicht

Ein Index ist eine oder mehrere Dateien, die aus Ihren Einbettungsvektoren bestehen. Diese Vektoren werden aus großen Datenmengen erstellt, die Sie mit der Vektorsuche bereitstellen und abfragen möchten. Mit der Vektorsuche können Sie zwei Arten von Indexen erstellen, je nachdem, wie Sie sie mit Ihren Daten aktualisieren möchten. Sie können einen Index für Batchaktualisierungen oder einen Index für das Streaming Ihrer Updates erstellen.

Ein Batchindex ist für die Aktualisierung eines Index in einem Batch gedacht, und zwar mit Daten, die über einen bestimmten Zeitraum gespeichert wurden, z. B. Systeme, die wöchentlich oder monatlich verarbeitet werden. Ein Streamingindex ist, wenn Indexdaten aktualisiert werden sollen, wenn neue Daten in Ihren Datenspeicher eingefügt werden, z. B. wenn Sie eine Buchhandlung haben und neues Inventar so schnell wie möglich online anzeigen möchten. Der ausgewählte Typ ist wichtig, da die Einrichtung und die Anforderungen unterschiedlich sind.

Indexparameter konfigurieren

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",
    "shardSize": "SHARD_SIZE_MEDIUM",
    "algorithm_config": {
      "treeAhConfig": {
        "leafNodeEmbeddingCount": 5000,
        "leafNodesToSearchPercent": 3
      }
    }
  }
}

Die Definition für jedes dieser Felder finden Sie unter Parameter für die Indexkonfiguration.

Index erstellen

Indexgröße

Die Indexdaten werden zur Verarbeitung in gleiche Teile aufgeteilt, die als Shards bezeichnet werden. Wenn Sie einen Index erstellen, müssen Sie die Größe der zu verwendenden Shards angeben. Die folgenden Größen werden unterstützt:

  • SHARD_SIZE_SMALL: 2 GiB pro shard.
  • SHARD_SIZE_MEDIUM: 20 GiB pro shard.
  • SHARD_SIZE_LARGE: 50 GiB pro shard.

Welche Maschinentypen Sie zur Bereitstellung Ihres Index verwenden können (mit öffentlichen Endpunkten oder mit VPC-Endpunkten), hängt von der Shard-Größe des Index ab. Die folgende Tabelle zeigt die Shard-Größen, die von jedem Maschinentyp unterstützt werden:

Maschinentyp SHARD_SIZE_SMALL SHARD_SIZE_MEDIUM SHARD_SIZE_LARGE
n1-standard-16
n1-standard-32
e2-standard-2 (Standard)
e2-standard-16 (Standard)
e2-highmem-16 (Standard)
n2d-standard-32

Informationen zu den Auswirkungen von Shard-Größe und Maschinentyp auf die Preise finden Sie auf der Seite Vertex AI – Preise.

Index für Batch-Update erstellen

Folgen Sie dieser Anleitung, um Ihren Index zu erstellen und bereitzustellen. Wenn Sie die Einbettungen noch nicht bereit haben, können Sie mit dem Abschnitt Leeren Batchindex erstellen fortfahren. Bei dieser Option sind beim Erstellen des Index keine Einbettungsdaten erforderlich.

So erstellen Sie einen Index:

gcloud

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • LOCAL_PATH_TO_METADATA_FILE: Der lokale Pfad zur Metadatendatei.
  • INDEX_NAME: Der Anzeigename für den Index.
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud ai indexes create \
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE \
    --display-name=INDEX_NAME \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai indexes create `
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE `
    --display-name=INDEX_NAME `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai indexes create ^
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^
    --display-name=INDEX_NAME ^
    --region=LOCATION ^
    --project=PROJECT_ID

Sie sollten eine Antwort ähnlich der folgenden erhalten:

You can poll for the status of the operation for the response
to include "done": true. Use the following example to poll the status.

  $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1

Weitere Informationen zum Befehl describe finden Sie unter gcloud ai operations.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • INPUT_DIR: Der Cloud Storage-Verzeichnispfad des Indexinhalts.
  • INDEX_NAME: Der Anzeigename für den Index.
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • PROJECT_NUMBER: Die automatisch generierte Projektnummer Ihres Projekts.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/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 in etwa folgende JSON-Antwort 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"
    }
  }
}

Terraform

Im folgenden Beispiel wird die Terraform-Ressource google_vertex_ai_index verwendet, um einen Index für Batchaktualisierungen zu erstellen.

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

# Cloud Storage bucket name must be unique
resource "random_id" "bucket_name_suffix" {
  byte_length = 8
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "bucket" {
  name                        = "vertex-ai-index-bucket-${random_id.bucket_name_suffix.hex}"
  location                    = "us-central1"
  uniform_bucket_level_access = true
}

# Create index content
resource "google_storage_bucket_object" "data" {
  name    = "contents/data.json"
  bucket  = google_storage_bucket.bucket.name
  content = <<EOF
{"id": "42", "embedding": [0.5, 1.0], "restricts": [{"namespace": "class", "allow": ["cat", "pet"]},{"namespace": "category", "allow": ["feline"]}]}
{"id": "43", "embedding": [0.6, 1.0], "restricts": [{"namespace": "class", "allow": ["dog", "pet"]},{"namespace": "category", "allow": ["canine"]}]}
EOF
}

resource "google_vertex_ai_index" "default" {
  region       = "us-central1"
  display_name = "sample-index-batch-update"
  description  = "A sample index for batch update"
  labels = {
    foo = "bar"
  }

  metadata {
    contents_delta_uri = "gs://${google_storage_bucket.bucket.name}/contents"
    config {
      dimensions                  = 2
      approximate_neighbors_count = 150
      distance_measure_type       = "DOT_PRODUCT_DISTANCE"
      algorithm_config {
        tree_ah_config {
          leaf_node_embedding_count    = 500
          leaf_nodes_to_search_percent = 7
        }
      }
    }
  }
  index_update_method = "BATCH_UPDATE"

  timeouts {
    create = "2h"
    update = "1h"
  }
}

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.

def vector_search_create_index(
    project: str, location: str, display_name: str, gcs_uri: Optional[str] = None
) -> None:
    """Create a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        display_name (str): Required. The index display name
        gcs_uri (str): Optional. The Google Cloud Storage uri for index content
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location, staging_bucket=gcs_uri)

    # Create Index
    index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
        display_name=display_name,
        description="Matching Engine Index",
        dimensions=100,
        approximate_neighbors_count=150,
        leaf_node_embedding_count=500,
        leaf_nodes_to_search_percent=7,
        index_update_method="batch_update",  # Options: stream_update, batch_update
        distance_measure_type=aiplatform.matching_engine.matching_engine_index_config.DistanceMeasureType.DOT_PRODUCT_DISTANCE,
    )

    print(index.name)

Console

Folgen Sie dieser Anleitung, um einen Index für Batch-Updates zu erstellen.

  1. Wechseln Sie im Abschnitt „Vertex AI“ der Google Cloud Console zum Abschnitt Bereitstellen und verwenden. Wählen Sie Vektorsuche aus.

    Zur Vektorsuche

  2. Klicken Sie auf Neuen Index erstellen, um den Bereich Index zu öffnen. Der Bereich Neuen Index erstellen wird angezeigt.
  3. Geben Sie im Feld Anzeigename einen Namen ein, um den Index eindeutig zu identifizieren.
  4. Geben Sie im Feld Beschreibung eine Beschreibung für den Zweck des Index ein.
  5. Wählen Sie im Feld Region eine Region aus dem Drop-down-Menü aus.
  6. Suchen Sie im Cloud Storage-Feld den Cloud Storage-Ordner, in dem Ihre Vektordaten gespeichert sind, und wählen Sie ihn aus.
  7. Wählen Sie im Drop-down-Menü Algorithmustyp den Algorithmustyp aus, den die Vektorsuche für eine effiziente Suche verwendet. Wenn Sie den treeAh-Algorithmus auswählen, geben Sie die Anzahl der ungefähren Nachbarn ein.
  8. Geben Sie im Feld Dimensionen die Anzahl der Dimensionen Ihrer Eingabevektoren ein.
  9. Wählen Sie im Feld Updatemethode die Option Batch aus.
  10. Wählen Sie im Feld Shard-Größe aus dem Drop-down-Menü die gewünschte Shard-Größe aus.
  11. Klicken Sie auf Erstellen. Der neue Index wird in der Indexliste angezeigt, sobald er bereit ist. Hinweis: Die Build-Dauer kann bis zu einer Stunde dauern.

Leeren Batchindex erstellen

Wenn Sie Ihren Index sofort erstellen und bereitstellen möchten, können Sie einen leeren Batchindex erstellen. Bei dieser Option sind beim Erstellen des Index keine Einbettungsdaten erforderlich.

Ein leerer Index zu erstellen, ist fast identisch mit der Erstellung eines Index für Batch-Updates. Der Unterschied besteht darin, dass Sie das Feld contentsDeltaUri entfernen, da Sie keinen Speicherort der Daten verknüpfen. Hier ein Beispiel für einen leeren Batchindex:

Beispiel für eine Anfrage für einen leeren Index

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

Index für Streaming-Updates erstellen

Folgen Sie dieser Anleitung, um Ihren Streaming-Index zu erstellen und bereitzustellen. Wenn Sie die Einbettungen noch nicht bereit haben, fahren Sie mit Leeren Index für Streaming-Updates erstellen fort. Bei dieser Option sind beim Erstellen des Index keine Einbettungsdaten erforderlich.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • INDEX_NAME: Der Anzeigename für den Index.
  • DESCRIPTION: Eine Beschreibung des Index.
  • INPUT_DIR: Der Cloud Storage-Verzeichnispfad des Indexinhalts.
  • DIMENSIONS: Anzahl der Dimensionen des Einbettungsvektors.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • PROJECT_NUMBER: Die automatisch generierte Projektnummer Ihres Projekts.
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  displayName: "INDEX_NAME",
  description: "DESCRIPTION",
  metadata: {
     contentsDeltaUri: "INPUT_DIR",
     config: {
        dimensions: "DIMENSIONS",
        approximateNeighborsCount: 150,
        distanceMeasureType: "DOT_PRODUCT_DISTANCE",
        algorithmConfig: {treeAhConfig: {leafNodeEmbeddingCount: 10000, leafNodesToSearchPercent: 2}}
     },
  },
  indexUpdateMethod: "STREAM_UPDATE"
}

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-12-05T23:17:45.416117Z",
      "updateTime": "2023-12-05T23:17:45.416117Z",
      "state": "RUNNING",
      "worksOn": [
        "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID"
      ]
    }
  }
}

Console

Folgen Sie dieser Anleitung, um einen Index für Streaming-Updates in der Google Cloud Console zu erstellen.

Zum Erstellen eines Index, der für Streaming-Updates verfügbar ist, sind ähnliche Schritte wie zum Einrichten eines Batchupdate-Index erforderlich. Sie müssen jedoch indexUpdateMethod auf STREAM_UPDATE festlegen.

  1. Wechseln Sie im Abschnitt „Vertex AI“ der Google Cloud Console zum Abschnitt Bereitstellen und verwenden. Wählen Sie Vektorsuche aus.

    Zur Vektorsuche

  2. Klicken Sie auf Neuen Index erstellen, um den Bereich Index zu öffnen. Der Bereich Neuen Index erstellen wird angezeigt.
  3. Geben Sie im Feld Anzeigename einen Namen ein, um den Index eindeutig zu identifizieren.
  4. Geben Sie im Feld Beschreibung eine Beschreibung für den Zweck des Index ein.
  5. Wählen Sie im Feld Region eine Region aus dem Drop-down-Menü aus.
  6. Suchen Sie im Cloud Storage-Feld den Cloud Storage-Ordner, in dem Ihre Vektordaten gespeichert sind, und wählen Sie ihn aus.
  7. Wählen Sie im Drop-down-Menü Algorithmustyp den Algorithmustyp aus, den die Vektorsuche für die Suche verwenden soll. Wenn Sie den treeAh-Algorithmus auswählen, geben Sie die Anzahl der ungefähren Nachbarn ein.
  8. Geben Sie im Feld Dimensionen die Anzahl der Dimensionen der Eingabevektoren ein.
  9. Wählen Sie im Feld Aktualisierungsmethode die Option Stream aus.
  10. Wählen Sie im Feld Shard-Größe aus dem Drop-down-Menü die gewünschte Shard-Größe aus.
  11. Klicken Sie auf Erstellen. Der neue Index wird in der Indexliste angezeigt, sobald er bereit ist. Hinweis: Die Build-Dauer kann bis zu einer Stunde dauern.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Python API.

def vector_search_create_index(
    project: str, location: str, display_name: str, gcs_uri: Optional[str] = None
) -> None:
    """Create a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        display_name (str): Required. The index display name
        gcs_uri (str): Optional. The Google Cloud Storage uri for index content
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location, staging_bucket=gcs_uri)

    # Create Index
    index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
        display_name=display_name,
        description="Matching Engine Index",
        dimensions=100,
        approximate_neighbors_count=150,
        leaf_node_embedding_count=500,
        leaf_nodes_to_search_percent=7,
        index_update_method="batch_update",  # Options: stream_update, batch_update
        distance_measure_type=aiplatform.matching_engine.matching_engine_index_config.DistanceMeasureType.DOT_PRODUCT_DISTANCE,
    )

    print(index.name)

Leeren Index für Streaming-Updates erstellen

Wenn Sie Ihren Index sofort erstellen und bereitstellen möchten, können Sie einen leeren Index für das Streaming erstellen. Bei dieser Option sind beim Erstellen des Index keine Einbettungsdaten erforderlich.

Ein leerer Index zu erstellen, ist fast identisch mit der Erstellung eines Index für das Streaming. Der Unterschied besteht darin, dass Sie das Feld contentsDeltaUri entfernen, da Sie keinen Speicherort der Daten verknüpfen. Hier ein Beispiel für einen leeren Streamingindex:

Beispiel für eine Anfrage für einen leeren Index

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

Indexe auflisten

gcloud

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • INDEX_NAME: Der Anzeigename für den Index.
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

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

Windows (PowerShell)

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

Windows (cmd.exe)

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

Sie sollten eine Antwort ähnlich der folgenden erhalten:

You can poll for the status of the operation for the response
to include "done": true. Use the following example to poll the status.

  $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1

Weitere Informationen zum Befehl describe finden Sie unter gcloud ai operations.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • INDEX_NAME: Der Anzeigename für den Index.
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • PROJECT_NUMBER: Die automatisch generierte Projektnummer Ihres Projekts.

HTTP-Methode und URL:

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

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

Sie sollten in etwa folgende JSON-Antwort 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"
   }
 ]
}

Console

Verwenden Sie diese Anleitung, um eine Liste Ihrer Indexe aufzurufen.

  1. Wechseln Sie im Abschnitt „Vertex AI“ der Google Cloud Console zum Abschnitt Bereitstellen und verwenden. Wählen Sie Vektorsuche aus.

    Zur Vektorsuche

  2. Eine Liste Ihrer aktiven Indexe wird angezeigt.

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 ersten Erstellen des Index festgelegt. Sie können Brute-Force-Indexe verwenden, um den Recall zu messen.

Konfigurationsparameter, die sich auf die Leistung auswirken

Die folgenden Konfigurationsparameter können zum Zeitpunkt der Indexerstellung festgelegt werden und können sich bei der Verwendung der Vektorsuche auf die Trefferquote, Latenz, Verfügbarkeit und Kosten auswirken. Diese Empfehlung gilt in den meisten Fällen. Experimentieren Sie jedoch immer mit Ihren Konfigurationen, um sicherzustellen, dass sie für Ihren Anwendungsfall funktionieren.

Informationen zu Parameterdefinitionen finden Sie unter Parameter für die Indexkonfiguration.

Parameter Info Auswirkungen auf die Leistung
shardSize

Steuert die Datenmenge auf jedem Computer.

Bei der Auswahl einer Shard-Größe sollten Sie abschätzen, wie groß Ihr Dataset in Zukunft sein wird. Wenn die Größe Ihres Datasets eine Obergrenze hat, wählen Sie eine entsprechende Shard-Größe aus. Wenn es keine Obergrenze gibt oder Ihr Anwendungsfall sehr empfindlich auf Latenzvariabilität reagiert, wird empfohlen, eine große Shard-Größe auszuwählen.

Wenn Sie eine größere Anzahl kleinerer Shards konfigurieren, wird während der Suche eine größere Anzahl von Kandidatenergebnissen verarbeitet. Mehr Shards können die Leistung so beeinträchtigen:

  • Recall: Erhöht
  • Latenz: Potenziell erhöht, größere Variabilität
  • Verfügbarkeit: Shard-Ausfälle betreffen einen kleineren Prozentsatz der Daten
  • Kosten: Kann steigen, wenn dieselbe Maschine mit mehr Shards verwendet wird

Wenn Sie die Konfiguration für eine kleinere Anzahl größerer Shards konfigurieren, werden während der Suche weniger Kandidatenergebnisse verarbeitet. Weniger Shards können die Leistung auf folgende Weise beeinträchtigen:

  • Recall: Geringer
  • Latenz: Geringere, geringere Variabilität
  • Verfügbarkeit: Shard-Ausfälle betreffen einen größeren Prozentsatz der Daten.
  • Kosten: Kann sinken, wenn dieselbe Maschine mit weniger Shards verwendet wird
distanceMeasureType

Bestimmt den Algorithmus, der für die Entfernungsberechnung zwischen Datenpunkten und dem Abfragevektor verwendet wird.

Mit den folgenden distanceMeasureType-Einstellungen können Sie die Abfragelatenz reduzieren:

  • DOT_PRODUCT_DISTANCE ist am besten für die Reduzierung der Latenz optimiert
  • Für die Kosinus-Ähnlichkeit wird DOT_PRODUCT_DISTANCE in Kombination mit der Einstellung FeatureNormType auf UNIT_L2_NORM empfohlen.
leafNodeEmbeddingCount

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

Im Allgemeinen hat die Änderung des Werts von leafNodeEmbeddingCount weniger Auswirkungen als die Änderung des Werts anderer Parameter.

Das Erhöhen der Anzahl der Einbettungen für jeden Blattknoten kann die Latenz verringern, aber die Recall-Qualität verringern. Sie kann die Leistung folgendermaßen beeinflussen:

  • Recall: Weniger ist aufgrund von weniger zielgerichteten Suchanfragen
  • Latenz: reduziert, solange der Wert in den meisten Anwendungsfällen nicht über 15.000 liegt
  • Verfügbarkeit: Keine Auswirkung
  • Kosten: Kann sinken, da für dieselbe Abfrage pro Sekunde weniger Replikate benötigt werden

Das Verringern der Anzahl der Einbettungen für jeden Blattknoten kann die Leistung so beeinträchtigen:

  • Recall: Kann zunehmen, da präzisere Blätter erfasst werden
  • Latenz: Erhöht
  • Verfügbarkeit: Keine Auswirkung
  • Kosten: Kann steigen, da für dieselben Abfragen pro Sekunde mehr Replikate benötigt werden

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: {}
          }
       },
    },
}'

Index löschen

gcloud

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • INDEX_ID: Die ID des Index.
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

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

Windows (PowerShell)

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

Windows (cmd.exe)

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

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • INDEX_ID: Die ID des Index.
  • LOCATION: Die Region, in der Sie Vertex AI verwenden.
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID.
  • PROJECT_NUMBER: Die automatisch generierte Projektnummer Ihres Projekts.

HTTP-Methode und URL:

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

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

Sie sollten in etwa folgende JSON-Antwort 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"
  }
}

Console

Folgen Sie dieser Anleitung, um einen oder mehrere Indexe zu löschen.

  1. Wechseln Sie im Abschnitt „Vertex AI“ der Google Cloud Console zum Abschnitt Bereitstellen und verwenden. Wählen Sie Vektorsuche aus.

    Zur Vektorsuche

  2. Eine Liste Ihrer aktiven Indexe wird angezeigt.
  3. Zum Löschen eines Index rufen Sie das Menü -Optionen auf, das sich in derselben Zeile wie der Index befindet, und wählen Löschen aus.

Nächste Schritte