Mit Einbettungen suchen

Wenn Sie Ihren Onlinespeicher für die Unterstützung von Einbettungen konfiguriert haben, können Sie eine Suche nach Vektorähnlichkeiten ausführen, um eine Liste semantisch ähnlicher oder verwandter Entitäten abzurufen, die auch als ungefähre nächste Nachbarn bezeichnet werden. Sie können anhand einer Entitäts-ID oder einer Einbettung suchen.

Um nach den ungefähren nächsten Nachbarn zu suchen, müssen Sie zuerst Folgendes tun:

  • Richten Sie die BigQuery-Datenquelle für die Unterstützung von Einbettungen ein, indem Sie die Spalte embedding hinzufügen. Optional können Sie Spalten mit Filtern und Mengenbeschränkungen hinzufügen. Weitere Informationen finden Sie unter Vorbereitung der Datenquelle.

  • Erstellen Sie eine Onlinespeicherinstanz, die die Einbettungsverwaltung unterstützt. Weitere Informationen zum Erstellen einer Onlinespeicherinstanz, die die Einbettungsverwaltung unterstützt, finden Sie unter Einbettungsverwaltung für einen Onlinespeicher konfigurieren.

  • Geben Sie beim Erstellen der Featureansicht die Spalte embedding an. Weitere Informationen zum Erstellen einer Featureansicht, die Einbettungen unterstützt, finden Sie unter Vektorabruf für eine Featureansicht konfigurieren.

Auf dieser Seite wird Folgendes beschrieben:

Domainnamen des öffentlichen Endpunkts für den Onlinespeicher abrufen

Wenn Sie eine Onlinespeicherinstanz für die Einbettungsverwaltung erstellen und konfigurieren, generiert Vertex AI Feature Store einen öffentlichen Endpunkt-Domainnamen für den Onlinespeicher. Bevor Sie im Feature Store nach den nächsten Nachbarn aus einer Feature-Ansicht im Onlinespeicher suchen können, müssen Sie den Domainnamen des öffentlichen Endpunkts aus den Onlinespeicherdetails abrufen.

Verwenden Sie das folgende Beispiel, um die Details einer Onlinespeicherinstanz abzurufen.

REST

Sie rufen die Details eines FeatureOnlineStore Ressource in Ihrem Projekt ab, indem Sie senden eine GET Anfrage mithilfe des featureOnlineStores.get-Methode.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Die Region, in der sich der Onlinespeicher befindet, z. B. us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATUREONLINESTORE_NAME: Der Name der Onlinespeicherinstanz.

HTTP-Methode und URL:

GET http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "publicEndpointDomainName": "PUBLIC_ENDPOINT_DOMAIN_NAME"
  },
  "optimized": {}
}

Sie benötigen die PUBLIC_ENDPOINT_DOMAIN_NAME aus der Antwort, um im nächsten Schritt die nächsten Nachbarn abzurufen.

Ungefähre nächste Nachbarn einer Einbettung abrufen

Verwenden Sie das folgende Beispiel, um mit einer Einbettung nach semantisch verwandten Entitäten zu suchen, indem Sie eine Einbettung angeben.

REST

Senden Sie eine POST-Anfrage mit der Methode featureViews.searchNearestEntities, um die nächsten Nachbarn nach einer Einbettung zu suchen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: Der Domainname des öffentlichen Endpunkts für die Onlinespeicherinstanz, die Sie mit der Methode featureOnlineStores.get abgerufen haben.
  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION_ID: Die Region, in der sich die Onlinespeicherinstanz befindet, z. B. us-central1.
  • FEATUREONLINESTORE_NAME: Der Name der Onlinespeicherinstanz mit der Featureansicht, in der Sie nach ungefähren nächsten Nachbarn-Übereinstimmungen suchen möchten.
  • FEATUREVIEW_NAME: Der Name der Featureansicht, in der Sie nach ungefähren nächsten Nachbarn-Übereinstimmungen suchen möchten.
  • EMBEDDING: Einbettung, für die Sie ungefähre nächste Nachbarn-Übereinstimmungen abrufen möchten. Eine Einbettung wird durch ein Array von double-Werten dargestellt.
  • BOOLEAN: Optional: Geben Sie an, ob Sie die Features für die Entitäten in der Antwort ein- oder ausschließen möchten. Geben Sie true ein, um die Features zusammen mit den Entitäten in die Antwort aufzunehmen. Der Standardwert ist false.
  • NEIGHBOR_COUNT: Anzahl der ungefähren nächsten Nachbarn, die Sie abrufen möchten.

HTTP-Methode und URL:

POST http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities

JSON-Text der Anfrage:

{
  "query": {
    "embedding": {
      "value": EMBEDDING
    },
    "neighbor_count": NEIGHBOR_COUNT
  },
  "return_full_entity": BOOLEAN
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "nearestNeighbors": {
    "neighbors": [
    {
      "entityId": "305281",
      "distance": -41.115459442138672
    },
    {
      "entityId": "80280",
      "distance": -38.703567504882812
    },
    {
      "entityId": "80280",
      "distance":-38.703567504882812
    },
    {
      "entityId": "903779",
      "distance": -38.214759826660156
    },
    {
      "entityId": "1008145",
      "distance": -36.271354675292969
    },
    {
      "entityId": "606431",
      "distance": -34.791431427001953
    } ]
  }
}

Ungefähre nächste Nachbarn einer Entität abrufen

Im folgenden Beispiel wird mithilfe einer Einbettung die Suche nach semantisch verwandten Entitäten ausgeführt. Dazu wird eine Entitäts-ID angegeben.

REST

Senden Sie eine POST-Anfrage mit der Methode featureViews.searchNearestEntities, um die nächsten Nachbarn nach einer Entitäts-ID zu suchen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: Der Domainname des öffentlichen Endpunkts für die Onlinespeicherinstanz, die Sie mit der Methode featureOnlineStores.get abgerufen haben.
  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION_ID: Die Region, in der sich die Onlinespeicherinstanz befindet, z. B. us-central1.
  • FEATUREONLINESTORE_NAME: Der Name der Onlinespeicherinstanz mit der Featureansicht, in der Sie nach ungefähren nächsten Nachbarn-Übereinstimmungen suchen möchten.
  • FEATUREVIEW_NAME: Der Name der Featureansicht, in der Sie nach ungefähren nächsten Nachbarn-Übereinstimmungen suchen möchten.
  • ENTITY_ID: Entitäts-ID der Entität, für die Sie ungefähre nächste Nachbar-Übereinstimmungen abrufen möchten.
  • BOOLEAN: Optional: Geben Sie an, ob Sie die Features für die Entitäten in der Antwort ein- oder ausschließen möchten. Geben Sie true ein, um die Features zusammen mit den Entitäten in die Antwort aufzunehmen. Der Standardwert ist false.
  • NEIGHBOR_COUNT: Anzahl der ungefähren nächsten Nachbarn, die Sie abrufen möchten.

HTTP-Methode und URL:

POST http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities

JSON-Text der Anfrage:

{
  "query": {
    "entity_id": ENTITY_ID,
    "neighbor_count": NEIGHBOR_COUNT
  },
  "return_full_entity": BOOLEAN
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:searchNearestEntities" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "nearestNeighbors": {
    "neighbors": [
    {
      "entityId": "305281",
      "distance": -41.115459442138672
    },
    {
      "entityId": "80280",
      "distance": -38.703567504882812
    },
    {
      "entityId": "80280",
      "distance":-38.703567504882812
    },
    {
      "entityId": "903779",
      "distance": -38.214759826660156
    },
    {
      "entityId": "1008145",
      "distance": -36.271354675292969
    },
    {
      "entityId": "606431",
      "distance": -34.791431427001953
    } ]
  }
}