Memfilter dengan natural language understanding

Halaman ini menjelaskan cara menerapkan pemahaman bahasa alami untuk membuat filter secara otomatis bagi 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.

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.

Fitur ini paling baik dijelaskan melalui contoh:

Contoh: Ekstraksi kolom dari kueri

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 ramah 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 natural language dan data yang terstruktur dengan tepat, penelusuran menjadi lebih efektif dengan mengganti beberapa natural language dalam kueri dengan filter. Jika data terstruktur memiliki kolom untuk star_rating (angka), price (angka), dan amenities (string), kueri dapat ditulis ulang sebagai filter berikut ditambah kueri sisa:

  • Filter yang diekstrak dari kueri bahasa alami:

    {
        "star_rating": ≥4,
        "price": ≤300,
        "amenities": "Wifi", "Pets Allowed"
    }
    
  • Kueri residual, diformulasikan ulang setelah filter diekstrak:

    family-friendly

Contoh: Dengan filter geolokasi

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.

Pertimbangkan kueri berikut yang dibuat ke situs bisnis di seluruh negara bagian: "Find me a chic and stylish hotel with at least 4 stars that is in San Francisco." (Temukan hotel trendi dan bergaya dengan minimal 4 bintang di San Francisco).

Dengan pemahaman kueri bahasa alami dan filter geolokasi, penelusuran diformulasikan ulang sebagai filter dan kueri residual:

  • Filter yang diekstrak dari kueri bahasa alami, untuk 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 asli berisi alamat.

  • Kueri residual, diformulasikan ulang setelah filter diekstrak:

    chic and stylish in San Francisco

    Meskipun filter geolokasi dibuat, nama tempat tetap ada dalam kueri residual. Hal ini berbeda dengan filter lainnya, seperti star_rating.

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, sehingga 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.

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, 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/v1beta/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 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/v1beta/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 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.