Indexe verwalten

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

Index – Übersicht

Ein Index besteht aus einer oder mehreren Dateien mit Ihren Einbettungsvektoren. Diese Vektoren werden aus großen Datenmengen erstellt, die Sie mit der Vektorsuche bereitstellen und abfragen möchten. Mit der Vektorsuche können Sie je nach Art der Aktualisierung mit Ihren Daten zwei Arten von Indexen erstellen. Sie können einen Index für Batch-Updates oder einen Index für das Streaming von 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. Bei einem Streamingindex sollen Indexdaten aktualisiert werden, wenn dem Datenspeicher neue Daten hinzugefügt werden. Das ist beispielsweise der Fall, wenn Sie eine Buchhandlung haben und neues Inventar so schnell wie möglich online präsentieren möchten. Die Wahl des Typs ist wichtig, da Einrichtung und 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,
        "fractionLeafNodesToSearch": 0.03
      }
    }
  }
}

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

Index erstellen

Indexgröße

Indexdaten werden zur Verarbeitung in gleiche Teile, sogenannte Shards, aufgeteilt. Wenn Sie einen Index erstellen, müssen Sie die Größe der zu verwendenden Shards angeben. Folgende 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. In der folgenden Tabelle sind die Shardgrößen aufgeführt, die von den einzelnen Maschinentypen 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. Weitere Informationen dazu, wie sich die Größe des Shards auf die Leistung auswirkt, finden Sie unter Konfigurationsparameter, die sich auf die Leistung auswirken.

Index für Batch-Update erstellen

Folgen Sie dieser Anleitung, um Ihren Index zu erstellen und bereitzustellen. Wenn Sie Ihre Embeds noch nicht haben, können Sie mit Einen leeren Batch-Index 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 Batch-Aktualisierungen 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
) -> aiplatform.MatchingEngineIndex:
    """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

    Returns:
        The created MatchingEngineIndex.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create Index
    index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
        display_name=display_name,
        contents_delta_uri=gcs_uri,
        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,
    )

    return index

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

    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 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 Update-Methode 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. Ihr neuer Index wird in der Liste der Indexe angezeigt, sobald er fertig ist. Hinweis: Die Build-Dauer kann bis zu einer Stunde dauern.

Leeren Batchindex erstellen

Wenn Sie den 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.

Die Anfrage zum Erstellen eines leeren Index ist fast identisch mit der zum Erstellen 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 leere Indexanfrage

{
  "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 einen Streamingindex zu erstellen und bereitzustellen. Wenn Sie Ihre Einbettungen noch nicht 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"
      ]
    }
  }
}

Terraform

Im folgenden Beispiel wird die Terraform-Ressource google_vertex_ai_index verwendet, um einen Index für Streaming-Updates 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" "default" {
  byte_length = 8
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "bucket" {
  name                        = "vertex-ai-index-bucket-${random_id.default.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" "streaming_index" {
  region       = "us-central1"
  display_name = "sample-index-streaming-update"
  description  = "A sample index for streaming 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 = "STREAM_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_streaming_index(
    project: str, location: str, display_name: str, gcs_uri: Optional[str] = None
) -> aiplatform.MatchingEngineIndex:
    """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

    Returns:
        The created MatchingEngineIndex.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

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

    return index

Console

Folgen Sie dieser Anleitung, um einen Index für Streamingupdates 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 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 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 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. Ihr neuer Index wird in der Liste der Indexe angezeigt, sobald er fertig ist. Hinweis: Die Build-Dauer kann bis zu einer Stunde dauern.

Leeren Index für Streaming-Updates erstellen

Wenn Sie den 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.

Die Anfrage zum Erstellen eines leeren Index entspricht fast genau der zum Erstellen 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 leere Indexanfrage

{
  "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 müssten 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"
   }
 ]
}

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_list_index(
    project: str, location: str
) -> List[aiplatform.MatchingEngineIndex]:
    """List vector search indexes.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name

    Returns:
        List of aiplatform.MatchingEngineIndex
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # List Indexes
    return aiplatform.MatchingEngineIndex.list()

Console

Folgen Sie dieser 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

    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 derselbe Maschinentyp 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: Verringert
  • 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 müssten 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"
  }
}

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_delete_index(
    project: str, location: str, index_name: str
) -> None:
    """Delete a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_name (str): Required. The index to update. A fully-qualified index
          resource name or a index ID.  Example:
          "projects/123/locations/us-central1/indexes/my_index_id" or
          "my_index_id".
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index instance from an existing index
    index = aiplatform.MatchingEngineIndex(index_name=index_name)

    # Delete the index
    index.delete()

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

    Zur Vektorsuche

  2. Eine Liste Ihrer aktiven Indexe wird angezeigt.
  3. Wenn Sie einen Index löschen möchten, klicken Sie auf das -Optionsmenü, das sich in derselben Zeile wie der Index befindet, und wählen Sie Löschen aus.

Nächste Schritte