Memfilter rekomendasi

Jika memiliki aplikasi rekomendasi, Anda dapat menggunakan kolom dokumen untuk memfilter hasil rekomendasi. Halaman ini menjelaskan cara menggunakan kolom dokumen untuk memfilter rekomendasi ke sekumpulan dokumen tertentu. Meskipun contoh di halaman ini adalah untuk rekomendasi media, prinsip yang ditampilkan di sini sama untuk rekomendasi kustom. Untuk mengetahui informasi selengkapnya tentang rekomendasi media, lihat Pengantar Vertex AI Search untuk media.

Memfilter rekomendasi dan update penyimpanan data

Setelah pembaruan penyimpanan data, Anda harus menunggu hingga 8 jam saat model dilatih ulang. Hal ini karena model perlu mengetahui nilai saat ini dalam metadata dokumen, serta kolom mana yang dikonfigurasi sebagai dapat difilter. Anda harus menunggu perubahan dokumen dan perubahan skema diterapkan. Untuk rekomendasi (tidak seperti untuk penelusuran), pemfilteran tidak dilakukan secara real time.

Setelan filter dan diversifikasi (Khusus rekomendasi media)

Selain filter, setelan diversifikasi aplikasi juga memengaruhi hasil yang ditampilkan dalam respons rekomendasi media. Efek filter dan diversifikasi digabungkan. Diversifikasi dilakukan terlebih dahulu dan pemfilteran dilakukan kedua.

Menggabungkan keragaman berbasis aturan yang tinggi dan pemfilteran atribut berbasis kategori sering kali menghasilkan output kosong. Hal ini karena keragaman yang tinggi membatasi aplikasi untuk menampilkan satu hasil untuk setiap kategori.

Misalnya, Anda ingin merekomendasikan film berdasarkan Toy Story. Anda menetapkan tingkat keragaman berbasis aturan ke tinggi. Karena tingkat keragamannya tinggi, meskipun banyak film yang direkomendasikan, hanya satu film (misalnya, WALL·E) dalam kategori film anak-anak yang ditampilkan. Jika filter untuk film anak-anak diterapkan, hanya WALL·E yang ditampilkan sebagai rekomendasi.

Untuk mengetahui informasi umum tentang keragaman, lihat Memperbanyak rekomendasi media.

Sebelum memulai

Pastikan Anda telah membuat aplikasi dan penyimpanan data rekomendasi. Untuk mengetahui informasi selengkapnya, lihat Membuat aplikasi media atau Membuat penyimpanan data rekomendasi kustom.

Contoh dokumen

Tinjau contoh dokumen media ini. Anda dapat merujuk kembali ke contoh dokumen ini saat membaca halaman ini.

{"id":"1","schemaId":"default_schema","structData":{"title":"Toy Story (1995)","categories":["Adventure","Animation","Children","Comedy","Fantasy"],"uri":"http://mytestdomain.movie/content/1","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"88125","schemaId":"default_schema","structData":{"title":"Harry Potter and the Deathly Hallows: Part 2 (2011)","categories":["Action","Adventure","Drama","Fantasy","Mystery","IMAX"],"uri":"http://mytestdomain.movie/content/88125","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"2857","schemaId":"default_schema","structData":{"title":"Yellow Submarine (1968)","categories":["Adventure","Animation","Comedy","Fantasy","Musical"],"uri":"http://mytestdomain.movie/content/2857","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"60069","schemaId":"default_schema","structData":{"title":"WALL·E (2008)","categories":["Adventure","Animation","Children","Romance","Sci-Fi"],"uri":"http://mytestdomain.movie/content/60069","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}

Ekspresi filter

Gunakan ekspresi filter untuk menentukan filter rekomendasi Anda.

Sintaksis ekspresi filter

Extended Backus–Naur form berikut merangkum sintaksis ekspresi filter yang dapat Anda gunakan untuk menentukan filter rekomendasi.

  # A single expression or multiple expressions that are joined by "AND" or "OR".
  filter = expression, { " AND " | "OR", expression };
  # An expression can be prefixed with "-" or "NOT" to express a negation.
  expression = [ "-" | "NOT " ],
    # A parenthesized expression
    | "(", expression, ")"
    # A simple expression applying to a textual field.
    # Function "ANY" returns true if the field contains any of the literals.
    textual_field, ":", "ANY", "(", literal, { ",", literal }, ")"
    # OR filter by "available"
    available, ":", "true",
  # A literal is any double-quoted string. You must escape backslash (\) and
  # quote (") characters.
  literal = double-quoted string;
  textual_field = see the tables below;

Batasan ekspresi filter

Batasan berikut berlaku untuk ekspresi filter untuk rekomendasi:

  • Kedalaman penyematan operator AND dan OR dalam tanda kurung dibatasi. Ekspresi logis dalam filter harus dalam bentuk normal konjungtif (CNF). Ekspresi logis yang didukung paling kompleks dapat berupa daftar klausa yang terhubung dengan AND yang hanya berisi operator OR, seperti: (... OR ... OR ...) AND (... OR ...) AND (... OR ...)
  • Ekspresi dapat dinegasi dengan kata kunci NOT atau dengan -. Ini hanya berfungsi dengan ekspresi ANY() dengan satu argumen.

  • Pembatasan available harus berada di tingkat teratas. Kata tersebut tidak dapat digunakan sebagai bagian dari klausa OR atau negasi (NOT). Anda hanya dapat menggunakan available: true. Jika Anda menghilangkan filter ini, dokumen yang sudah habis masa berlakunya dan dokumen yang belum tersedia mungkin ditampilkan sebagai rekomendasi.

    Kolom available dipetakan ke logika berikut:

    datetime.now >= available_time AND datetime.now <= expire_time

    Jika expire_time tidak ditetapkan, datetime.now <= expire_time akan ditetapkan ke true.

  • Jumlah maksimum istilah dalam klausa AND tingkat teratas adalah 20.

  • Klausul OR dapat memiliki hingga 100 argumen yang disertakan dalam ekspresi ANY(). Jika klausa OR memiliki beberapa ekspresi ANY(), semua argumennya dihitung dalam batas ini. Misalnya, categories: ANY("drama", "comedy") OR categories: ANY("adventure") memiliki tiga argumen.

Contoh ekspresi filter

Tabel berikut menunjukkan contoh ekspresi filter yang valid dan tidak valid. Selain itu, model ini memberikan alasan mengapa contoh yang tidak valid tidak valid.

Ekspresi Berlaku Catatan
language_code: ANY("en", "fr") Ya
NOT language_code: ANY("en") Ya
NOT language_code: ANY("en", "fr") Tidak Menyanggah ANY() dengan lebih dari satu argumen.
language_code: ANY("en", "fr") OR categories: ANY("drama") Ya
(language_code: ANY("en") OR language_code: ANY("fr")) AND categories: ANY("drama") Ya
(language_code: ANY("en") AND language_code: ANY("fr")) OR categories: ANY("drama") Tidak Tidak dalam bentuk normal konjungtif.
(language_code: ANY("en")) AND (available: true) Ya
(language_code: ANY("en")) OR (available: true) Tidak Menggabungkan available dalam ekspresi OR dengan kondisi lain.

Ekspresi filter berikut memfilter dokumen yang berada dalam kategori drama atau aksi, yang tidak dalam bahasa Inggris, dan yang tersedia:

categories: ANY("drama", "action") AND NOT language_code: ANY("en") AND available: true

Batas pemfilteran

Setiap kolom dokumen yang dapat difilter menggunakan sejumlah memori di setiap model Anda. Batas berikut membantu mencegah efek negatif pada performa penayangan:

  • Hingga 10 kolom kustom dapat ditetapkan sebagai dapat difilter dalam skema Anda.

    Jika lebih dari 10 kolom kustom ditemukan selama pelatihan aplikasi, hanya 10 yang digunakan.

  • Hingga 100.000.000 nilai kolom yang dapat difilter dapat ada dalam skema Anda.

    Anda dapat memperkirakan jumlah total nilai kolom yang dapat difilter dalam skema dengan mengalikan jumlah dokumen dalam skema dengan jumlah kolom yang dapat difilter. Jika Anda melebihi batas ini, hal berikut akan terjadi:

    • Anda tidak dapat menetapkan kolom tambahan sebagai dapat difilter.
    • Pelatihan aplikasi gagal.

Memfilter rekomendasi

Untuk memfilter rekomendasi media, ikuti langkah-langkah berikut:

  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. Tentukan kolom dokumen yang ingin Anda filter. Misalnya, untuk dokumen di Sebelum Anda memulai, Anda dapat menggunakan kolom categories sebagai filter.

  3. Agar kolom categories dapat difilter, lakukan hal berikut:

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

      Aplikasi AI

    2. Klik aplikasi rekomendasi Anda.

    3. Klik tab Schema. Tab ini menampilkan setelan kolom saat ini.

    4. Klik Edit.

    5. Jika belum dipilih, centang kotak Dapat difilter di baris kategori, lalu klik Simpan.

    6. Tunggu enam jam agar pengeditan skema Anda diterapkan. Setelah enam jam, Anda dapat melanjutkan ke langkah berikutnya.

  4. Untuk mendapatkan rekomendasi dan memfilter kolom categories, jalankan kode berikut di command line:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d '{
         "userEvent": {
           "eventType": "EVENT_TYPE",
           "userPseudoId": "USER_PSEUDO_ID",
           "documents": {
             "id": "DOCUMENT_ID"
           }
         },
         "params": {
           "returnDocument": true,
           "attributeFilteringSyntax": true,
           "strictFiltering": true
         },
         "filter": "FILTER"
       }' \
    "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/SERVING_CONFIG_ID:recommend"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • DATA_STORE_ID: ID penyimpanan data Anda.
    • DOCUMENT_ID: ID dokumen yang ingin Anda pratinjau rekomendasinya. Gunakan ID yang Anda gunakan untuk dokumen ini pada saat Anda menyerap data.
    • EVENT_TYPE: jenis peristiwa pengguna. Untuk nilai eventType, lihat UserEvent.
    • USER_PSEUDO_ID: ID pengguna yang disamarkan. Anda dapat menggunakan cookie HTTP untuk kolom ini, yang mengidentifikasi pengunjung secara unik di satu perangkat. Jangan tetapkan kolom ini ke ID yang sama untuk beberapa pengguna. Hal ini akan menggabungkan histori peristiwanya dan menurunkan kualitas model. Jangan menyertakan informasi identitas pribadi (PII) di kolom ini.
    • SERVING_CONFIG_ID: ID konfigurasi penayangan Anda. ID konfigurasi penayangan Anda sama dengan ID mesin telusur Anda, jadi gunakan ID mesin telusur Anda di sini.
    • FILTER: kolom teks yang memungkinkan Anda memfilter pada sekumpulan kolom tertentu, menggunakan sintaksis ekspresi filter. Nilai defaultnya adalah string kosong, yang berarti tidak ada filter yang diterapkan.

    Misalnya, anggaplah Anda menginginkan rekomendasi untuk peristiwa pengguna pemutar media tertentu, dan Anda ingin memfilter hasil rekomendasi agar hanya berisi dokumen yang: (1) Berada dalam kategori Anak-Anak, dan (2) Tersedia saat ini. Anda dapat melakukannya dengan menyertakan pernyataan berikut dalam panggilan Anda:

    • "eventType": "media-play"
    • "filter": "categories: ANY(\"Children\") AND available: true"

    Untuk mengetahui informasi selengkapnya, lihat metode recommend.

    Klik untuk melihat contoh respons.

    Jika membuat permintaan rekomendasi seperti di atas, Anda dapat mengharapkan mendapatkan respons yang mirip dengan berikut. Perhatikan bahwa respons mencakup dua dokumen yang memiliki nilai categories Children dan nilai availability_start_time yang lebih baru dari tanggal saat ini.

    {
    "results": [
      {
        "id":"1",
        "schemaId":"default_schema",
        "structData":{"title":"Toy Story (1995)","categories":["Adventure","Animation","Children","Comedy","Fantasy"],"uri":"http://mytestdomain.movie/content/1",
        "availability_start_time":"2023-01-01T00:00:00Z",
        "media_type":"movie"
        }
      },
      {
        "id":"60069",
        "schemaId":"default_schema",
        "structData":{"title":"WALL·E (2008)","categories":["Adventure","Animation","Children","Romance","Sci-Fi"],"uri":"http://mytestdomain.movie/content/60069",
        "availability_start_time":"2023-01-01T00:00:00Z",
        "media_type":"movie"
        }
      }
    ],
    "attributionToken": "ChMzMDk3NTQ4MzQxOTcxOTE0ODM1GglhZi10ZXN0LTEiDmFmLXRlc3QtMTE0NTE0KAAwBg"
    }