Memfilter dengan pemahaman bahasa alami

Halaman ini menjelaskan cara menerapkan pemahaman bahasa alami untuk membuat filter secara otomatis untuk kueri penelusuran dan, oleh karena itu, untuk meningkatkan kualitas hasil yang ditampilkan.

Anda dapat menggunakan fitur ini dengan aplikasi penelusuran yang terhubung ke penyimpanan data terstruktur.

Tentang pemahaman kueri bahasa alami

Jika Anda memiliki aplikasi penelusuran kustom dengan data terstruktur, kueri bahasa alami pengguna dapat diformat ulang sebagai kueri yang difilter. Hal ini dapat menghasilkan hasil penelusuran yang lebih berkualitas daripada menelusuri kata dalam string kueri.

Misalnya, kueri bahasa alami seperti "Find a coffee shop serving banana bread" dapat diformulasikan ulang sebagai kueri dan filter: "query": "banana bread", "filter": "type": ANY(\"cafe\").

Penggunaan pemahaman kueri bahasa alami lebih mudah dan fleksibel daripada menulis ekspresi filter Anda sendiri. Untuk mengetahui informasi tentang cara menulis ekspresi filter, lihat Memfilter penelusuran kustom untuk data terstruktur atau tidak terstruktur.

Filter keras dan lunak

Ada dua jenis filter yang dapat Anda terapkan untuk pemahaman kueri bahasa alami: berat dan ringan.

  • Sulit. Secara default, filter yang diekstrak diterapkan sebagai kriteria wajib yang harus dipenuhi oleh hasil agar ditampilkan.

    Perilakunya mirip dengan kolom filter dalam pesan SearchRequest.

  • Lembut. Alternatif untuk filter ketat adalah menerapkan peningkat pada hasil penelusuran. Hasil yang dipromosikan lebih cenderung ditampilkan, tetapi hasil yang tidak memenuhi kriteria promosi juga dapat ditampilkan.

    Perilakunya mirip dengan kolom boost_spec dalam pesan SearchRequest.

Anda dapat bereksperimen dengan kedua jenis filter. Jika penelusuran tidak memberikan hasil yang cukup, coba filter ringan, bukan filter berat.

Untuk mengetahui detail tentang cara menerapkan filter halus, lihat Menelusuri dengan filter halus di bawah.

Contoh

Fitur ini paling baik dijelaskan melalui contoh:

Contoh: Ekstraksi kolom dari kueri (filter berat)

Fitur pemahaman kueri bahasa natural ini dijelaskan melalui contoh penelusuran hotel.

Pertimbangkan kueri berikut yang dibuat ke penyimpanan data terstruktur untuk situs hotel: "Cari hotel yang cocok untuk keluarga dengan minimal empat bintang yang harganya kurang dari 300 per malam, mengizinkan saya membawa, dan memiliki Wi-Fi gratis."

Tanpa pemahaman kueri bahasa alami, aplikasi penelusuran akan mencari dokumen yang berisi kata-kata dalam kueri.

Dengan pemahaman kueri bahasa alami dan data yang terstruktur dengan tepat, penelusuran menjadi lebih efektif dengan mengganti beberapa bahasa alami dalam kueri dengan filter. Jika data terstruktur memiliki kolom untuk star_rating (angka), price (angka), dan amenities (string), maka kueri dapat diformulasikan untuk menyertakan filter berikut:

   {
       "star_rating": >=4,
       "price": <=300,
       "amenities": "Wifi", "Pets Allowed"
   }

Contoh: Dengan filter geolokasi (filter berat)

Contoh ini mirip dengan contoh sebelumnya, kecuali menyertakan filter geolokasi, yang merupakan jenis filter yang diekstrak khusus. Vertex AI Search memiliki kemampuan untuk mengenali lokasi dalam kueri dan membuat filter kedekatan untuk lokasi tersebut.

Ambil kueri berikut yang dibuat ke situs bisnis di seluruh negara bagian: "Cari hotel trendi dan bergaya dengan minimal 4 bintang di San Francisco."

Dengan pemahaman kueri bahasa alami dan filter geolokasi, penelusuran diformulasikan ulang untuk menyertakan filter berikut untuk hotel dengan rating minimal 4 bintang dan dalam radius 10 km dari San Francisco:

   {
       "star_rating": >=4,
       "location": GEO_DISTANCE(\"San Francisco, CA\", 10000)
   }

Dalam contoh ini, GEO_DISTANCE adalah alamat, tetapi dalam kueri lain, GEO_DISTANCE dapat ditulis sebagai garis lintang dan bujur, meskipun kueri aslinya berisi alamat.

Contoh: Ekstraksi kolom dari kueri (filter ringan)

Fitur pemahaman kueri bahasa alami ini dijelaskan melalui contoh penelusuran hotel, tetapi menampilkan beberapa hasil yang tidak memenuhi semua kriteria.

Pertimbangkan kueri berikut yang dibuat ke situs perjalanan: "Cari hotel bintang empat yang cocok untuk keluarga dengan harga kurang dari 300 per malam, dan mengizinkan saya membawa."

Dengan pemahaman kueri bahasa alami dan data yang terstruktur dengan tepat, penelusuran menjadi lebih efektif dengan mengganti beberapa bahasa alami dalam kueri dengan filter sementara. Jika data terstruktur memiliki kolom untuk star_rating (angka), price (angka), dan amenities (string), maka kueri dapat ditulis ulang sebagai peningkatan berikut:

Kondisi peningkatan yang diekstrak dari kueri bahasa alami:

{
  "boostSpec": {
    "conditionBoostSpecs": {
      "condition": "(star_rating >= 4.5) AND (price < 200) AND ANY(amenities, \"Pets Allowed\")",
      "boost": 0.7
    }
  }
}

Dalam hal ini, mungkin beberapa hotel dengan rating lebih rendah atau hotel yang tidak menerima hewan peliharaan akan ditampilkan.

Batasan

Batasan berikut berlaku untuk pemahaman kueri bahasa alami:

  • Pemahaman kueri bahasa alami tidak dapat diterapkan ke aplikasi penelusuran gabungan. Anda akan mendapatkan error jika mencoba menggunakan pemahaman kueri bahasa alami dengan aplikasi penelusuran gabungan.

  • Pemahaman kueri bahasa alami hanya berfungsi untuk aplikasi penelusuran kustom yang menggunakan penyimpanan data terstruktur.

  • Penggunaan pemahaman kueri bahasa alami meningkatkan latensi, jadi Anda dapat memilih untuk tidak menggunakannya jika latensi menjadi masalah.

  • Untuk geolokasi, lokasi harus dijelaskan secara eksplisit. Anda tidak dapat menggunakan lokasi seperti "di dekat saya" atau "rumah".

  • Radius untuk geolokasi adalah 10 km dan tidak dapat dikonfigurasi.

  • Kolom Boolean tidak dapat digunakan dalam filter. Misalnya, jika kuerinya adalah "Cari kamar hotel bebas rokok", maka kolom boolean seperti "non_smoking": true tidak berguna, tetapi kolom string seperti "non_smoking": "YES" dapat menjadi bagian dari filter.

Sebelum memulai

Sebelum mulai menggunakan pemahaman kueri bahasa alami, Anda harus mengaktifkannya untuk penyimpanan data terstruktur yang terhubung ke aplikasi yang ingin Anda gunakan.

Untuk mengaktifkan pemahaman kueri bahasa alami, ikuti langkah-langkah berikut:

REST

  1. Temukan ID penyimpanan data Anda. Jika Anda sudah memiliki ID penyimpanan data, lanjutkan ke langkah berikutnya.

    1. Di konsol Google Cloud , buka halaman AI Applications dan di menu navigasi, klik Data Stores.

      Buka halaman Data Stores

    2. Klik nama penyimpanan data Anda.

    3. Di halaman Data untuk penyimpanan data Anda, dapatkan ID penyimpanan data.

  2. Jalankan perintah curl berikut:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID?update_mask=natural_language_query_understanding_config.mode" \
    -d '{
          "naturalLanguageQueryUnderstandingConfig": {
            "mode": "ENABLED"
          }
        }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search.
  3. Ulangi langkah 1 dan 2 untuk setiap penyimpanan data.

  4. Tunggu sekitar 24 jam.

    Jika Anda mencoba menggunakan pemahaman kueri bahasa alami sebelum penyimpanan data siap, respons yang Anda dapatkan sama seperti jika filterExtractionCondition disetel ke DISABLED.

Penelusuran, yang mengonversi kueri natural language menjadi filter

Untuk menelusuri kueri dalam bahasa natural dan mendapatkan hasil yang dioptimalkan untuk kueri bahasa natural, lakukan hal berikut:

REST

  1. Jalankan perintah curl berikut, yang memanggil metode search:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED"
            }
          }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • APP_ID: ID aplikasi Vertex AI Search yang ingin Anda kueri. Aplikasi harus terhubung ke penyimpanan data yang berisi data terstruktur. Aplikasi tidak dapat menjadi aplikasi penelusuran gabungan.
    • QUERY: kueri yang ditulis dalam bahasa alami.

Penelusuran, mengonversi lokasi dalam kueri menjadi filter geolokasi

Untuk menelusuri kueri dalam bahasa alami dan mendapatkan hasil yang dioptimalkan untuk kueri bahasa alami, termasuk kedekatan dengan lokasi, lakukan hal berikut:

REST

  1. Jalankan perintah curl berikut, yang memanggil metode search:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED",
              "geoSearchQueryDetectionFieldNames": ["GEO_FIELD_NAME_1", "GEO_FIELD_NAME_N"]"
            }
          }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • APP_ID: ID aplikasi Vertex AI Search yang ingin Anda kueri. Aplikasi harus terhubung ke penyimpanan data yang berisi data terstruktur. Aplikasi tidak dapat menjadi aplikasi penelusuran gabungan.
    • QUERY: kueri yang ditulis dalam bahasa alami.
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: daftar nilai berjenis geolocation. Jika jenis nilai bukan geolocation, kolom ini akan diabaikan.

Menelusuri dengan filter lembut

Untuk menerapkan filter lembut, lakukan langkah berikut:

REST

  1. Temukan ID aplikasi Anda. Jika Anda sudah memiliki ID aplikasi, lanjutkan ke langkah berikutnya.

    1. Di konsol Google Cloud , buka halaman AI Applications.

      Buka Aplikasi

    2. Di halaman Aplikasi, temukan nama aplikasi Anda dan dapatkan ID aplikasi dari kolom ID.

  2. Jalankan perintah curl berikut, yang memanggil metode search:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED",
              "extractedFilterBehavior": "SOFT_BOOST"
            }
          }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • APP_ID: ID aplikasi penelusuran Anda. Aplikasi harus terhubung ke penyimpanan data yang berisi data terstruktur. Aplikasi tidak boleh berupa aplikasi penelusuran gabungan.
    • QUERY: Kueri Anda dalam bahasa alami.

Menentukan kolom untuk kueri bahasa alami

Agar kolom dapat digunakan sebagai filter dalam pemahaman kueri bahasa alami, kolom tersebut harus ditandai sebagai dapat diindeks dalam skema. (Untuk informasi umum tentang cara melihat dan mengedit skema, lihat Memperbarui skema.)

Vertex AI Search menentukan kolom yang dapat diindeks dalam skema yang masuk akal untuk digunakan dalam filter pemahaman kueri natural language. Namun, jika kolom yang tidak Anda inginkan disertakan, Anda perlu membuat daftar yang diizinkan untuk menentukan kolom mana yang dapat digunakan.

Pertimbangkan situs pemesanan hotel, yang memiliki kolom seperti amenities, id, price_per_night, rating, dan room_types. Dari jumlah tersebut, jika id adalah string karakter dan angka, Vertex AI Search kemungkinan akan mengecualikannya dari kolom yang digunakan untuk pemahaman kueri bahasa alami.

Namun, jika Anda mengamati bahwa Vertex AI Search menampilkan hasil kueri berkualitas buruk karena tidak mengecualikan kolom yang seharusnya, Anda perlu menentukan kolom mana yang dapat digunakan. Misalnya, jika skema hotel memiliki kolom untuk renovation_status yang tidak berguna bagi pelanggan dan mungkin memalukan bagi jaringan hotel, Anda dapat mengecualikannya dari daftar kolom yang diizinkan.

Contoh data dari penyimpanan data terstruktur untuk data hotel.

{
  "title": "Miller-Jones",
  "rating": 1.7,
  "price_per_night": 115.16,
  "id": 2902,
    
  ],
  "amenities": [
    "Spa",
    "Parking",
    "Restaurant"
    
  ],
  "renovation_status": "Restaurant and spa renovation planned for 2027"
}

Daftar yang diizinkan yang sesuai untuk kolom dalam contoh ini adalah ["amenities", "price_per_night", "rating", "title"]. renovation_status tidak ada dalam daftar.

Untuk menentukan daftar yang diizinkan dari kolom yang dapat digunakan dalam pemahaman kueri bahasa alami dalam penelusuran, lakukan hal berikut:

REST

  1. Temukan ID aplikasi Anda. Jika Anda sudah memiliki ID aplikasi, lanjutkan ke langkah berikutnya.

    1. Di konsol Google Cloud , buka halaman AI Applications.

      Buka Aplikasi

    2. Di halaman Aplikasi, temukan nama aplikasi Anda dan dapatkan ID aplikasi dari kolom ID.

  2. Jalankan perintah curl berikut, yang memanggil metode search:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "allowedFieldNames": ["FIELD_1", "FIELD_2"],
        }
      }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • APP_ID: ID aplikasi penelusuran Anda. Aplikasi harus terhubung ke penyimpanan data yang berisi data terstruktur. Aplikasi tidak boleh berupa aplikasi penelusuran gabungan.
    • QUERY: Kueri Anda dalam bahasa alami.
    • FIELD_N: Kolom yang dapat diindeks dalam skema yang dapat digunakan untuk pemahaman kueri bahasa alami.