Melakukan penelusuran menggunakan embedding

Jika telah mengonfigurasi toko online Anda untuk mendukung embedding, Anda dapat melakukan penelusuran kesamaan vektor untuk mengambil daftar entity yang serupa atau terkait secara semantik, yang juga disebut sebagai perkiraan terdekat. Anda dapat menelusuri berdasarkan ID entity atau embedding.

Untuk mencari perkiraan terdekat, Anda harus melakukan langkah-langkah berikut terlebih dahulu:

Halaman ini menjelaskan cara melakukan tindakan berikut:

Mengambil nama domain endpoint publik untuk toko online

Saat Anda membuat dan mengonfigurasi instance toko online untuk pengelolaan penyematan, Vertex AI Feature Store akan menghasilkan nama domain endpoint publik untuk toko online tersebut. Sebelum dapat mulai mencari tetangga terdekat dari tampilan fitur di toko online, Anda harus mengambil nama domain endpoint publik dari detail toko online.

Gunakan contoh berikut untuk mengambil detail instance toko online.

REST

Untuk mengambil detail resource FeatureOnlineStore dalam project Anda, kirim permintaan GET menggunakan metode featureOnlineStores.get.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION_ID: Region tempat toko online berada, seperti us-central1.
  • PROJECT_ID: Project ID Anda.
  • FEATUREONLINESTORE_NAME: Nama instance toko online.

Metode HTTP dan URL:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

Jalankan perintah berikut:

$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

Anda akan melihat respons JSON seperti berikut:

{
  "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": {}
}

Anda memerlukan PUBLIC_ENDPOINT_DOMAIN_NAME dari respons untuk mengambil perkiraan tetangga terdekat pada langkah berikut.

Mengambil perkiraan embedding terdekat

Gunakan contoh berikut agar dapat menggunakan embedding untuk melakukan penelusuran entity yang terkait secara semantik dengan menentukan embedding.

REST

Untuk menelusuri embedding terdekat, kirim permintaan POST menggunakan metode featureViews.searchNearestEntities.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: Nama domain endpoint publik untuk instance toko online yang Anda ambil menggunakan metode featureOnlineStores.get.
  • PROJECT_ID: Project ID Anda.
  • LOCATION_ID: Region tempat instance toko online berada, seperti us-central1.
  • FEATUREONLINESTORE_NAME: Nama instance toko online yang berisi tampilan fitur, tempat Anda ingin menelusuri perkiraan kecocokan terdekat.
  • FEATUREVIEW_NAME: Nama tampilan fitur tempat Anda ingin menelusuri perkiraan kecocokan terdekat.
  • EMBEDDING: Embedding yang ingin Anda ambil perkiraan kecocokan terdekatnya. Embedding diwakili oleh array nilai double.
  • BOOLEAN: Opsional: Tentukan apakah Anda ingin menyertakan atau mengecualikan fitur untuk entity dalam respons. Untuk menyertakan fitur serta entity dalam respons, masukkan true. Nilai defaultnya adalah false.
  • NEIGHBOR_COUNT: Jumlah perkiraan terdekat yang ingin Anda ambil.

Metode HTTP dan URL:

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

Isi JSON permintaan:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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

Anda akan melihat respons JSON seperti berikut:

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

Mengambil perkiraan entity terdekat

Gunakan contoh berikut agar dapat menggunakan embedding untuk melakukan penelusuran entity yang terkait secara semantik dengan menentukan ID entity.

REST

Untuk menelusuri ID entity terdekat, kirim permintaan POST menggunakan metode featureViews.searchNearestEntities.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PUBLIC_ENDPOINT_DOMAIN_NAME: Nama domain endpoint publik untuk instance toko online yang Anda ambil menggunakan metode featureOnlineStores.get.
  • PROJECT_ID: Project ID Anda.
  • LOCATION_ID: Region tempat instance toko online berada, seperti us-central1.
  • FEATUREONLINESTORE_NAME: Nama instance toko online yang berisi tampilan fitur, tempat Anda ingin menelusuri perkiraan kecocokan terdekat.
  • FEATUREVIEW_NAME: Nama tampilan fitur tempat Anda ingin menelusuri perkiraan kecocokan terdekat.
  • ENTITY_ID: ID entity dari entity yang ingin Anda ambil perkiraan kecocokan terdekatnya.
  • BOOLEAN: Opsional: Tentukan apakah Anda ingin menyertakan atau mengecualikan fitur untuk entity dalam respons. Untuk menyertakan fitur serta entity dalam respons, masukkan true. Nilai defaultnya adalah false.
  • NEIGHBOR_COUNT: Jumlah perkiraan terdekat yang ingin Anda ambil.

Metode HTTP dan URL:

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

Isi JSON permintaan:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

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