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:
Richten Sie die BigQuery-Datenquelle so ein, dass Einbettungen unterstützt werden. Dazu fügen Sie die Spalte
embedding
ein. Optional können Sie Filter- und Crowding-Spalten einfügen. Weitere Informationen finden Sie unter Richtlinien für die Vorbereitung von Datenquellen.Erstellen Sie eine Onlinespeicherinstanz für die optimierte Onlinebereitstellung.
Erstellen Sie eine Featureansicht, die Einbettungen unterstützt, indem Sie die BigQuery-Datenquelle direkt verknüpfen. Beim Erstellen der Feature-Ansicht können Sie entweder die Standardkonfiguration des Dienstkontos verwenden oder eine Dienstkontokonfiguration angeben (Vorabversion).
Außerdem müssen Sie die Spalte
embedding
für die Feature-Ansicht angeben. Weitere Informationen zum Erstellen einer Feature-Ansicht, die Einbettungen unterstützt, finden Sie unter Vektorabruf für eine Feature-Ansicht konfigurieren.
Auf dieser Seite wird Folgendes beschrieben:
Hinweise
Authentifizieren Sie sich bei Vertex AI, sofern nicht bereits geschehen.
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
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. Ein Einbettungselement wird durch ein Array von
double
-Werten dargestellt. - RETURN_FULL_ENTITY: Optional. Geben Sie an, ob die Features für die Entitäten in die Antwort ein- oder ausgeschlossen werden sollen. Geben Sie
true
ein, um die Features zusammen mit den Entitäten in die Antwort aufzunehmen. Der Standardwert istfalse
. - 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": RETURN_FULL_ENTITY }
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.
- RETURN_FULL_ENTITY: Optional. Geben Sie an, ob die Features für die Entitäten in die Antwort ein- oder ausgeschlossen werden sollen. Geben Sie
true
ein, um die Features zusammen mit den Entitäten in die Antwort aufzunehmen. Der Standardwert istfalse
. - 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": RETURN_FULL_ENTITY }
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 eine JSON-Antwort ähnlich wie diese 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 } ] } }