Membuat indeks untuk beberapa bahasa di Pencarian Azure AI

Jika Anda memiliki string dalam beberapa bahasa, Anda dapat menggunakan pencarian vektor untuk mewakili konten multibahasa secara matematis, yang merupakan pendekatan yang lebih modern. Atau, jika Anda tidak menggunakan vektor, Anda dapat melampirkan penganalisis bahasa yang menganalisis string menggunakan aturan linguistik bahasa tertentu selama pengindeksan dan eksekusi kueri. Dengan penganalisis bahasa, Anda mendapatkan penanganan diakritik, varian karakter, tanda baca, dan bentuk akar kata yang lebih baik.

Pencarian Azure AI mendukung penganalisis Microsoft dan Lucene. Secara default, mesin pencari menggunakan Standard Lucene, yang merupakan agnostik bahasa. Jika pengujian menunjukkan bahwa penganalisis default tidak cukup, ganti dengan penganalisis bahasa.

Dalam Pencarian Azure AI, dua pola untuk mendukung beberapa bahasa meliputi:

  • Buat indeks khusus bahasa di mana semua konten yang dapat dibaca manusia berada dalam bahasa yang sama, dan semua bidang string yang dapat dicari dikaitkan untuk menggunakan penganalisis bahasa yang sama.

  • Buat indeks campuran dengan versi khusus bahasa dari setiap bidang (misalnya, description_en, description_fr, description_ko), lalu batasi pencarian teks lengkap hanya untuk bidang tersebut pada waktu kueri. Pendekatan ini berguna untuk skenario di mana varian bahasa hanya diperlukan pada beberapa bidang, seperti deskripsi.

Artikel ini berfokus pada langkah-langkah dan praktik terbaik untuk mengonfigurasi dan mengkueri bidang khusus bahasa dalam indeks campuran:

  • Tentukan bidang string untuk setiap varian bahasa.
  • Atur penganalisis bahasa di setiap bidang.
  • Pada permintaan kueri, atur searchFields parameter ke bidang tertentu, lalu gunakan select untuk mengembalikan hanya bidang yang memiliki konten yang kompatibel.

Catatan

Jika Anda menggunakan model bahasa besar dalam pola pengambilan dengan penguatan (RAG), Anda dapat merancang perintah untuk mengembalikan string yang diterjemahkan. Skenario tersebut di luar cakupan untuk artikel ini.

Prasyarat

Analisis bahasa diterapkan pada bidang jenis Edm.String yang merupakan searchable, dan yang berisi teks yang dilokalkan. Jika Anda juga memerlukan terjemahan teks, tinjau bagian berikutnya untuk melihat apakah pengayaan AI memenuhi kebutuhan Anda.

Bidang non-string dan bidang string yang tidak dapat dicari tidak menjalani analisis leksikal dan tidak ditokenisasi. Sebaliknya, disimpan dan dikembalikan apa adanya.

Menambahkan terjemahan teks

Artikel ini mengasumsikan string yang diterjemahkan sudah ada. Jika tidak demikian, Anda dapat melampirkan Foundry Tools ke alur pengayaan, memanggil terjemahan teks selama pengindeksan. Terjemahan teks bergantung pada fitur pengindeks dan Foundry Tools, tetapi semua penyiapan dilakukan di dalam Pencarian Azure AI.

Untuk menambahkan terjemahan teks, ikuti langkah-langkah berikut:

  1. Pastikan konten Anda berada di sumber data yang didukung.

  2. Buat sumber data yang menunjuk ke konten Anda.

  3. Buat set keterampilan yang menyertakan keterampilan Terjemahan Teks.

    Keterampilan Terjemahan Teks menerima string tunggal sebagai input. Jika Anda memiliki beberapa bidang, Anda dapat membuat kumpulan keterampilan yang memanggil Terjemahan Teks beberapa kali, sekali untuk setiap bidang. Atau, Anda dapat menggunakan keterampilan Penggabungan Teks untuk mengonsolidasikan konten beberapa bidang ke dalam satu string panjang.

  4. Buat indeks yang menyertakan bidang untuk string yang diterjemahkan. Sebagian besar artikel ini membahas desain indeks dan definisi bidang untuk mengindeks dan mengkueri konten multi-bahasa.

  5. Lampirkan sumber daya Microsoft Foundry ke set keterampilan Anda.

  6. Buat dan jalankan pengindeks, lalu terapkan panduan dalam artikel ini untuk mengkueri bidang yang diminati saja.

Menentukan bidang untuk konten dalam bahasa yang berbeda

Dalam Pencarian Azure AI, kueri mengarahkan pada satu indeks. Pengembang yang ingin menyediakan string bahasa tertentu dalam satu pengalaman pencarian biasanya menentukan bidang khusus untuk menyimpan nilai: satu bidang untuk string bahasa Inggris, satu untuk bahasa Prancis, dan sebagainya.

Properti analyzer pada definisi bidang digunakan untuk mengatur penganalisis bahasa. Ini digunakan untuk pengindeksan dan eksekusi kueri.

{
  "name": "hotels-sample",
  "fields": [
    {
      "name": "Description",
      "type": "Edm.String",
      "retrievable": true,
      "searchable": true,
      "analyzer": "en.microsoft"
    },
    {
      "name": "Description_fr",
      "type": "Edm.String",
      "retrievable": true,
      "searchable": true,
      "analyzer": "fr.microsoft"
    }
  ]
}

Membuat dan memuat indeks

Langkah menengah adalah membangun dan mengisi indeks sebelum merumuskan kueri. Kami menyebutkan langkah ini di sini demi kelengkapan. Salah satu cara untuk menentukan ketersediaan indeks adalah dengan memeriksa daftar indeks di portal.

Membatasi kueri dan memangkas hasil

Parameter pada kueri digunakan untuk membatasi pencarian ke bidang tertentu lalu memangkas hasil semua bidang yang tidak membantu skenario Anda.

Parameter Tujuan
searchFields Membatasi pencarian teks penuh ke daftar bidang bernama.
select Memangkas respons untuk menyertakan hanya bidang yang Anda tentukan. Secara bawaan, semua bidang yang dapat diambil dikembalikan. Parameter select memungkinkan Anda memilih parameter mana yang akan dikembalikan.

Mengingat tujuan membatasi pencarian ke bidang yang berisi string Prancis, Anda akan menggunakan searchFields untuk menargetkan kueri di bidang yang berisi string dalam bahasa tersebut.

Menentukan penganalisis pada permintaan kueri tidak diperlukan. Penganalisis bahasa pada definisi bidang menentukan analisis teks selama eksekusi kueri. Untuk kueri yang menentukan beberapa bidang, masing-masing memanggil penganalisis bahasa yang berbeda, istilah atau frasa diproses secara bersamaan oleh penganalisis yang ditetapkan untuk setiap bidang.

Secara default, pencarian mengembalikan semua bidang yang ditandai sebagai dapat diambil. Dengan demikian, Anda mungkin ingin mengecualikan bidang yang tidak sesuai dengan pengalaman pencarian bahasa tertentu yang ingin Anda berikan. Secara khusus, jika Anda membatasi pencarian ke bidang dengan string bahasa Prancis, Anda mungkin ingin mengecualikan bidang dengan string bahasa Inggris dari hasil Anda. select Menggunakan parameter kueri memberi Anda kontrol atas bidang mana yang dikembalikan ke aplikasi panggilan.

Contoh dalam REST

POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-04-01
{
    "search": "animaux acceptés",
    "searchFields": "Tags, Description_fr",
    "select": "HotelName, Description_fr, Address/City, Address/StateProvince, Tags",
    "count": "true"
}

Contoh dalam C#

private static void RunQueries(SearchClient srchclient)
{
    SearchOptions options;
    SearchResults<Hotel> response;

    options = new SearchOptions()
    {
        IncludeTotalCount = true,
        Filter = "",
        OrderBy = { "" }
    };

    options.Select.Add("HotelId");
    options.Select.Add("HotelName");
    options.Select.Add("Description_fr");
    options.SearchFields.Add("Tags");
    options.SearchFields.Add("Description_fr");

    response = srchclient.Search<Hotel>("*", options);
    WriteDocuments(response);
}

Meningkatkan bidang bahasa tertentu

Terkadang bahasa agen yang mengeluarkan kueri tidak diketahui, dalam hal ini kueri dapat dikeluarkan terhadap semua bidang secara bersamaan. Preferensi IA untuk hasil dalam bahasa tertentu dapat didefinisikan menggunakan profil penilaian. Dalam contoh di bawah ini, kecocokan yang ditemukan dalam deskripsi dalam bahasa Prancis dinilai lebih tinggi relatif terhadap kecocokan dalam bahasa lain:

  "scoringProfiles": [
    {
      "name": "frenchFirst",
      "text": {
        "weights": { "description_fr": 2 }
      }
    }
  ]

Anda kemudian akan menyertakan profil penilaian dalam permintaan pencarian:

POST /indexes/hotels/docs/search?api-version=2026-04-01
{
  "search": "pets allowed",
  "searchFields": "Tags, Description_fr",
  "select": "HotelName, Tags, Description_fr",
  "scoringProfile": "frenchFirst",
  "count": "true"
}

Langkah berikutnya