Mithilfe von Einbettungen suchen

Bei Onlinespeicherinstanzen, die für die optimierte Onlinebereitstellung erstellt wurden, können Sie eine Suche nach Vektorähnlichkeiten durchführen, um eine Liste von semantisch ähnlichen oder verwandten Entitäten, auch als ungefähre nächste Nachbarn bezeichnet, abzurufen. Sie können die Suche anhand der Entitäts-ID oder einer Einbettung durchführen.

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

Auf dieser Seite wird beschrieben, wie Sie Folgendes tun können:

Domainnamen des öffentlichen Endpunkts für den Onlinespeicher abrufen

Wenn Sie eine Onlinespeicher-Instanz für optimierte Onlinebereitstellung erstellen, 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 https://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)" \
"https://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 "https://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 folgenden Schritt die ungefähren nächsten Nachbarn abrufen.

Ungefähre nächste Nachbarn einer Einbettung abrufen

Verwenden Sie das folgende Beispiel, um mithilfe einer Einbettung eine Suche nach semantisch verwandten Entitäten durchzuführen, indem Sie eine Einbettung angeben.

REST

Um die nächsten Nachbarn einer Einbettung zu suchen, senden Sie eine POST-Anfrage mithilfe der Methode featureViews.searchNearestEntities.

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 mit 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 https://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 \
"https://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 "https://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

Verwenden Sie das folgende Beispiel, um mithilfe einer Einbettung eine Suche nach semantisch verwandten Entitäten durchzuführen, indem Sie eine Entitäts-ID angeben.

REST

Um die nächsten Nachbarn einer Entitäts-ID zu suchen, senden Sie eine POST-Anfrage mithilfe der Methode featureViews.searchNearestEntities.

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 https://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 \
"https://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 "https://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
    } ]
  }
}