Membuat kueri semantik di Azure AI Search

Dalam artikel ini, pelajari cara memanggil peringkat semantik atas kumpulan hasil, mempromosikan hasil yang paling relevan secara semantik ke bagian atas tumpukan. Anda juga bisa mendapatkan keterangan semantik, dengan sorotan atas istilah dan frasa yang paling relevan, dan jawaban semantik.

Prasyarat

  • Layanan pencarian, Tingkat dasar atau lebih tinggi, dengan peringkat semantik.

  • Indeks pencarian yang ada dengan konfigurasi semantik dan konten teks kaya.

  • Tinjau peringkat semantik jika Anda memerlukan pengenalan fitur.

Catatan

Keterangan dan jawaban diekstrak verbatim dari teks dalam dokumen pencarian. Subsistem semantik menggunakan pemahaman membaca mesin untuk mengenali konten yang memiliki karakteristik keterangan atau jawaban, tetapi tidak menyusun kalimat atau frasa baru. Untuk alasan ini, konten yang mencakup penjelasan atau definisi berfungsi paling baik untuk peringkat semantik. Jika Anda ingin interaksi gaya obrolan dengan respons yang dihasilkan, lihat Pengambilan Augmented Generation (RAG).

Memilih klien

Pilih klien pencarian yang mendukung peringkat semantik. Berikut ini adalah beberapa opsi:

Hindari fitur yang melewati penilaian relevansi

Beberapa kemampuan kueri di Azure AI Search melewati penilaian relevansi atau tidak kompatibel dengan peringkat semantik. Jika logika kueri Anda menyertakan fitur berikut, Anda tidak dapat memberi peringkat hasil Anda secara semantik:

  • Kueri dengan search=* atau string pencarian kosong, seperti kueri khusus filter murni, tidak akan berfungsi karena tidak ada yang dapat mengukur relevansi semantik. Kueri harus menyediakan istilah atau frasa yang dapat dinilai selama pemrosesan.

  • Kueri yang terdiri dalam sintaks Lucene lengkap (queryType=full) tidak kompatibel dengan peringkat semantik (queryType=semantic). Model semantik tidak mendukung sintaks Lucene penuh.

  • Pengurutan (klausa orderBy) pada bidang tertentu mengambil alih skor pencarian dan skor semantik. Mengingat bahwa skor semantik seharusnya memberikan peringkat, menambahkan klausa orderby menghasilkan kesalahan HTTP 400 jika Anda menerapkan peringkat semantik atas hasil yang diurutkan.

Menyiapkan kueri

Dalam langkah ini, tambahkan parameter ke permintaan kueri. Agar berhasil, kueri Anda harus berupa pencarian teks lengkap (menggunakan search parameter untuk meneruskan string), dan indeks harus berisi bidang teks dengan konten semantik yang kaya dan konfigurasi semantik.

Penjelajah pencarian menyertakan opsi untuk peringkat semantik.

  1. Masuk ke portal Azure.

  2. Buka indeks pencarian dan pilih Penjelajah pencarian.

  3. Pilih Opsi kueri. Jika Anda sudah menentukan konfigurasi semantik, konfigurasi tersebut dipilih secara default. Jika Anda tidak memilikinya, buat konfigurasi semantik untuk indeks Anda.

    Screenshot showing query options in Search explorer.

  4. Masukkan kueri, seperti "hotel bersejarah dengan makanan enak", dan pilih Cari.

  5. Atau, pilih tampilan JSON dan tempel definisi ke editor kueri:

    Screenshot showing JSON query syntax in the Azure portal.

    Berikut adalah beberapa teks JSON yang dapat Anda tempelkan ke dalam tampilan:

     {
         "queryType": "semantic",
         "search": "historic hotel with good food",
         "semanticConfiguration": "my-semantic-config",
         "answers": "extractive|count-3",
         "captions": "extractive|highlight-true",
         "highlightPreTag": "<strong>",
         "highlightPostTag": "</strong>",
         "select": "HotelId,HotelName,Description,Category",
         "count": true
     }
    

Mengevaluasi respons

Hanya 50 pertandingan teratas dari hasil awal yang dapat diberi peringkat semantik. Seperti semua kueri, respons terdiri dari semua bidang yang ditandai sebagai dapat diambil, atau hanya bidang yang tercantum dalam parameter pemilihan. Respons mencakup skor relevansi asli, dan mungkin juga menyertakan hitungan, atau hasil batch, tergantung pada cara Anda merumuskan permintaan.

Dalam peringkat semantik, respons memiliki lebih banyak elemen: skor relevansi peringkat semantik baru, keterangan opsional dalam teks biasa dan dengan sorotan, dan jawaban opsional. Jika hasil Anda tidak menyertakan elemen tambahan ini, maka kueri Anda mungkin salah dikonfigurasi. Sebagai langkah pertama untuk memecahkan masalah, periksa konfigurasi semantik untuk memastikannya ditentukan dalam definisi indeks dan kueri.

Di aplikasi klien, Anda dapat menyusun halaman pencarian untuk menyertakan keterangan sebagai deskripsi kecocokan, daripada seluruh konten bidang tertentu. Pendekatan ini berguna ketika bidang individual terlalu padat untuk halaman hasil pencarian.

Respons untuk contoh kueri di atas mengembalikan kecocokan berikut sebagai pilihan teratas. Keterangan dikembalikan karena properti "keterangan" diatur, dengan teks biasa dan versi yang disorot. Jawaban dihilangkan dari contoh karena tidak dapat ditentukan untuk kueri dan korpus khusus ini.

"@odata.count": 35,
"@search.answers": [],
"value": [
    {
        "@search.score": 1.8810667,
        "@search.rerankerScore": 1.1446577133610845,
        "@search.captions": [
            {
                "text": "Oceanside Resort. Luxury. New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
                "highlights": "<strong>Oceanside Resort.</strong> Luxury. New Luxury Hotel. Be the first to stay.<strong> Bay</strong> views from every room, location near the pier, rooftop pool, waterfront dining & more."
            }
        ],
        "HotelName": "Oceanside Resort",
        "Description": "New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
        "Category": "Luxury"
    },
  ...
]

Langkah berikutnya

Peringkat semantik dapat digunakan dalam kueri hibrid yang menggabungkan pencarian kata kunci dan pencarian vektor ke dalam satu permintaan dan respons terpadu.