Membuat pengindeks di Azure AI Search

Gunakan pengindeks untuk mengotomatiskan impor dan pengindeksan data di Azure AI Search. Pengindeks adalah objek bernama pada layanan pencarian yang tersambung ke sumber data Azure eksternal, membaca data, dan meneruskannya ke mesin pencari untuk pengindeksan. Menggunakan pengindeks secara signifikan mengurangi kuantitas dan kompleksitas kode yang perlu Anda tulis jika Anda menggunakan sumber data yang didukung.

Pengindeks mendukung dua alur kerja:

  • Pengindeksan berbasis teks, ekstrak string dan metadata dari konten tekstual untuk skenario pencarian teks lengkap.

  • Pengindeksan berbasis keterampilan, menggunakan keterampilan bawaan atau kustom yang menambahkan pembelajaran mesin terintegrasi untuk analisis atas gambar dan konten besar yang tidak terpukul, mengekstrak atau menyimpulkan teks dan struktur. Pengindeksan berbasis keterampilan memungkinkan pencarian konten yang tidak mudah dicari teks lengkap. Untuk mempelajari selengkapnya, lihat Pengayaan AI di Azure AI Search.

Artikel ini berfokus pada langkah-langkah dasar pembuatan pengindeks. Bergantung pada sumber data dan alur kerja Anda, lebih banyak konfigurasi mungkin diperlukan.

Prasyarat

  • Sumber data yang didukung yang berisi konten yang ingin Anda serap.

  • Sumber data pengindeks yang menyiapkan koneksi ke data eksternal.

  • Indeks pencarian yang dapat menerima data masuk.

  • Berada di bawah batas maksimum untuk tingkat layanan Anda. Tingkat Gratis memungkinkan tiga objek dari setiap jenis dan 1-3 menit pemrosesan pengindeks, atau 3-10 jika ada set keterampilan.

Pola pengindeks

Saat Anda membuat pengindeks, definisinya adalah salah satu dari dua pola: pengindeksan berbasis teks atau pengayaan AI dengan keterampilan. Polanya sama, kecuali bahwa pengindeksan berbasis keterampilan memiliki lebih banyak definisi.

Contoh pengindeks untuk pengindeksan berbasis teks

Pengindeksan berbasis teks untuk pencarian teks lengkap adalah kasus penggunaan utama untuk pengindeks, dan untuk alur kerja ini, pengindeks terlihat seperti contoh ini.

{
  "name": (required) String that uniquely identifies the indexer,
  "description": (optional),
  "dataSourceName": (required) String indicating which existing data source to use,
  "targetIndexName": (required) String indicating which existing index to use,
  "parameters": {
    "batchSize": null,
    "maxFailedItems": 0,
    "maxFailedItemsPerBatch": 0,
    "base64EncodeKeys": false,
    "configuration": {}
  },
  "fieldMappings": (optional) unless field discrepancies need resolution,
  "disabled": null,
  "schedule": null,
  "encryptionKey": null
}

Pengindeks memiliki persyaratan berikut:

  • Properti "name" yang secara unik mengidentifikasi pengindeks dalam koleksi pengindeks.
  • Properti "dataSourceName" yang menunjuk ke objek sumber data. Ini menentukan koneksi ke data eksternal.
  • Properti "targetIndexName" yang menunjuk ke indeks pencarian tujuan.

Parameter lain bersifat opsional dan memodifikasi perilaku run time, seperti berapa banyak kesalahan yang harus diterima sebelum gagal seluruh pekerjaan. Parameter yang diperlukan ditentukan di semua pengindeks dan didokumenkan dalam referensi REST API.

Pengindeks khusus sumber data untuk blob, SQL, dan Azure Cosmos DB menyediakan parameter tambahan "configuration" untuk perilaku khusus sumber. Misalnya, jika sumbernya adalah Blob Storage, Anda dapat mengatur parameter yang memfilter ekstensi file: "parameters" : { "configuration" : { "indexedFileNameExtensions" : ".pdf,.docx" } }. Jika sumbernya adalah Azure SQL, Anda dapat mengatur parameter batas waktu kueri.

Pemetaan bidang digunakan untuk secara eksplisit memetakan bidang sumber-ke-tujuan jika ada perbedaan berdasarkan nama atau jenis antara bidang di sumber data dan bidang dalam indeks pencarian.

Secara default, pengindeks segera berjalan saat Anda membuatnya di layanan pencarian. Jika Anda tidak ingin eksekusi pengindeks, atur "disabled" ke true saat membuat pengindeks.

Anda juga dapat menentukan jadwal atau mengatur kunci enkripsi untuk enkripsi tambahan definisi pengindeks.

Contoh pengindeks untuk pengindeksan berbasis keterampilan

Pengindeks juga mendorong pengayaan AI. Semua properti dan parameter di atas untuk diterapkan, tetapi properti tambahan berikut khusus untuk pengayaan AI: "skillSetName", "cache", "outputFieldMappings".

{
  "name": (required) String that uniquely identifies the indexer,
  "dataSourceName": (required) String, provides raw content that will be enriched,
  "targetIndexName": (required) String, name of an existing index,
  "skillsetName" : (required for AI enrichment) String, name of an existing skillset,
  "cache":  {
    "storageConnectionString" : (required if you enable the cache) Connection string to a blob container,
    "enableReprocessing": true
    },
  "parameters": { },
  "fieldMappings": (optional) Maps fields in the underlying data source to fields in an index,
  "outputFieldMappings" : (required) Maps skill outputs to fields in an index,
}

Pengayaan AI adalah area subjeknya sendiri dan berada di luar cakupan untuk artikel ini. Untuk informasi selengkapnya, mulailah dengan pengayaan AI, Skillsets di Azure AI Search, Buat set keterampilan, Bidang output pengayaan peta, dan Aktifkan penembolokan untuk pengayaan AI.

Menyiapkan data eksternal

Pengindeks bekerja dengan himpunan data. Saat Anda menjalankan pengindeks, pengindeks terhubung ke sumber data Anda, mengambil data dari kontainer atau folder, secara opsional menserialisasikannya ke JSON sebelum meneruskannya ke mesin pencari untuk pengindeksan. Bagian ini menjelaskan persyaratan data masuk untuk pengindeksan berbasis teks.

Data sumber Tugas
Dokumen JSON Pastikan struktur atau bentuk data masuk sesuai dengan skema indeks pencarian Anda. Sebagian besar indeks pencarian cukup datar, di mana kumpulan bidang terdiri dari bidang pada tingkat yang sama. Namun, struktur hierarkis atau berlapis dimungkinkan melalui bidang dan koleksi yang kompleks.
Relasional Berikan sebagai kumpulan baris yang diratakan, di mana setiap baris menjadi dokumen pencarian penuh atau parsial dalam indeks.

Untuk meratakan data relasional ke dalam himpunan baris, Anda harus membuat tampilan SQL, atau membangun kueri yang menampilkan rekaman induk dan anak di baris yang sama. Misalnya, himpunan data sampel hotel bawaan adalah database SQL yang memiliki 50 rekaman (satu untuk setiap hotel), ditautkan ke rekaman kamar dalam tabel terkait. Kueri yang meratakan data kolektif ke dalam himpunan baris menyematkan semua informasi kamar dalam dokumen JSON di setiap rekaman hotel. Informasi ruangan yang disematkan adalah kueri yang dihasilkan oleh kueri yang menggunakan klausul FOR JSON AUTO.

Anda dapat mempelajari lebih lanjut teknik ini dalam menentukan kueri yang menampilkan JSON yang disematkan. Ini hanyalah salah satu contoh; Anda dapat menemukan pendekatan lain yang menghasilkan hasil yang sama.
File Pengindeks umumnya membuat satu dokumen pencarian untuk setiap file, di mana dokumen pencarian terdiri dari bidang untuk konten dan metadata. Bergantung pada jenis file, pengindeks terkadang dapat mengurai satu file ke dalam beberapa dokumen pencarian. Misalnya, dalam file CSV, setiap baris dapat menjadi dokumen pencarian mandiri.

Ingatlah bahwa Anda hanya perlu menarik data yang dapat dicari dan dapat difilter:

  • Data yang dapat dicari adalah teks.
  • Data yang dapat difilter adalah alfanumerik.

Pencarian Azure AI tidak dapat mencari data biner dalam format apa pun, meskipun dapat mengekstrak dan menyimpulkan deskripsi teks file gambar (lihat pengayaan AI) untuk membuat konten yang dapat dicari. Demikian juga, teks besar dapat dipecah dan dianalisis oleh model bahasa alami untuk menemukan struktur atau informasi yang relevan, menghasilkan konten baru yang dapat Anda tambahkan ke dokumen pencarian.

Mengingat bahwa pengindeks tidak memperbaiki masalah data, bentuk pembersihan atau manipulasi data lainnya mungkin diperlukan. Untuk informasi lebih lanjut, Anda harus merujuk ke dokumentasi produk database Azure Anda.

Menyiapkan sumber data

Pengindeks memerlukan sumber data yang menentukan jenis, kontainer, dan koneksi.

  1. Pastikan Anda menggunakan jenis sumber data yang didukung.

  2. Membuat definisi sumber data. Daftar berikut adalah beberapa sumber data yang lebih sering digunakan:

  3. Jika sumber data adalah database, seperti Azure SQL atau Cosmos DB, aktifkan pelacakan perubahan. Azure Storage memiliki pelacakan perubahan bawaan melalui LastModified properti pada setiap blob, file, dan tabel. Tautan di atas untuk berbagai sumber data menjelaskan metode pelacakan perubahan mana yang didukung oleh pengindeks.

Menyiapkan indeks

Pengindeks juga memerlukan indeks pencarian. Ingat bahwa pengindeks meneruskan data ke mesin pencari untuk pengindeksan. Sama seperti pengindeks memiliki properti yang menentukan perilaku eksekusi, skema indeks memiliki properti yang sangat mempengaruhi bagaimana string diindeks (hanya string yang dianalisis dan yang diberikan token).

  1. Mulailah dengan Buat indeks pencarian.

  2. Siapkan kumpulan bidang dan atribut bidang.

    Bidang adalah satu-satunya reseptor konten eksternal. Bergantung pada bagaimana bidang dikaitkan dalam skema, nilai untuk setiap bidang dianalisis, ditokenisasi, atau disimpan sebagai string verbatim untuk filter, pencarian fuzzy, dan kueri typeahead.

    Pengindeks dapat secara otomatis memetakan bidang sumber ke bidang indeks target saat nama dan jenisnya setara. Jika bidang tidak dapat dipetakan secara implisit, ingatlah bahwa Anda dapat menentukan pemetaan bidang eksplisit yang memberi tahu pengindeks cara merutekan konten.

  3. Tinjau penetapan penganalisis di setiap bidang. Penganalisis dapat mengubah string. Dengan demikian, string terindeks mungkin berbeda dari apa yang Anda lewati. Anda dapat mengevaluasi efek penganalisis menggunakan Analyze Text (REST). Untuk informasi lebih lanjut penganalisis, lihat Penganalisis untuk pemrosesan teks.

Selama pengindeksan, pengindeks hanya memeriksa nama dan jenis bidang. Tidak ada langkah validasi yang memastikan konten masuk sudah benar untuk bidang pencarian terkait dalam indeks.

Membuat pengindeks

Saat Anda siap untuk membuat pengindeks di layanan pencarian jarak jauh, Anda memerlukan klien pencarian. Klien pencarian dapat menjadi portal Azure, klien REST, atau kode yang membuat instans klien pengindeks. Kami merekomendasikan portal Microsoft Azure atau REST API untuk pengembangan awal dan pengujian bukti konsep.

  1. Masuk ke portal Azure.

  2. Pada halaman Gambaran Umum layanan pencarian, pilih dari dua opsi:

    • Wizard impor data. Wizard tersebut unik karena membuat semua elemen yang diperlukan. Pendekatan lain memerlukan sumber data dan indeks yang telah ditentukan sebelumnya.

    • Pengindeks Baru, editor visual untuk menentukan definisi pengindeks.

    Cuplikan layar berikut memperlihatkan tempat Anda agar dapat menemukan fitur tersebut di portal.

    pengindeks hotel

Jalankan pemberi indeks

Secara default, pengindeks segera berjalan saat Anda membuatnya di layanan pencarian. Anda dapat mengambil alih perilaku ini dengan mengatur "disabled" ke true dalam definisi pengindeks. Eksekusi pengindeks adalah momen kebenaran di mana Anda mengetahui apakah ada masalah dengan koneksi, pemetaan lapangan, atau konstruksi set keterampilan.

Ada beberapa cara untuk menjalankan pengindeks:

Eksekusi terjadwal biasanya diimplementasikan ketika Anda memiliki kebutuhan untuk pengindeksan bertahap sehingga Anda dapat mengambil perubahan terbaru. Dengan demikian, penjadwalan memiliki dependensi pada deteksi perubahan.

Pengindeks adalah salah satu dari beberapa subsistem yang melakukan panggilan keluar berlebihan ke sumber daya Azure lainnya. Dalam hal peran Azure, pengindeks tidak memiliki identitas terpisah: koneksi dari mesin pencari ke sumber daya Azure lain dibuat menggunakan sistem atau identitas terkelola yang ditetapkan pengguna dari layanan pencarian. Jika pengindeks tersambung ke sumber daya Azure di jaringan virtual, Anda harus membuat tautan privat bersama untuk koneksi tersebut. Untuk informasi selengkapnya tentang koneksi aman, lihat Keamanan di Pencarian Azure AI.

Memeriksa hasil

Pantau status pengindeks untuk memeriksa status. Eksekusi yang berhasil masih dapat mencakup peringatan dan pemberitahuan. Pastikan untuk memeriksa pemberitahuan status yang berhasil dan gagal untuk detail tentang pekerjaan tersebut.

Untuk verifikasi konten, jalankan kueri pada indeks yang diisi yang mengembalikan seluruh dokumen atau bidang yang dipilih.

Deteksi perubahan dan status internal

Jika sumber data Anda mendukung deteksi perubahan, pengindeks dapat mendeteksi perubahan yang mendasari data dan hanya memproses dokumen baru atau yang diperbarui pada setiap pengindeks yang dijalankan, meninggalkan konten yang tidak berubah apa adanya. Jika riwayat eksekusi pengindeks mengatakan bahwa eksekusi berhasil dengan 0/0 dokumen yang diproses, itu berarti bahwa pengindeks tidak menemukan baris atau blob baru atau yang diubah di sumber data yang mendasarinya.

Logika deteksi perubahan dibangun ke dalam platform data. Cara pengindeks mendukung deteksi perubahan bervariasi menurut sumber data:

Pengindeks melacak dokumen terakhir yang diproses dari sumber data melalui tanda air tinggi internal. Penanda tersebut tidak pernah terekspos dalam API, tetapi pengindeks melacak di mana dokumen tersebut berhenti secara internal. Saat pengindeksan berlanjut, baik melalui eksekusi terjadwal atau pemanggilan sesuai permintaan, pengindeks mereferensikan marka air tinggi sehingga dapat melanjutkan dari eksekusi selanjutnya.

Jika Anda perlu menghapus tanda air tinggi untuk mengindeks ulang secara penuh, Anda dapat menggunakan Reset Indexer. Untuk pengindektan ulang yang lebih selektif, gunakan Reset Keterampilan atau Reset Dokumen. Melalui API pengaturan ulang, Anda dapat menghapus status internal dan juga membersihkan cache jika Anda mengaktifkan pengayaan bertambah bertahap. Untuk latar belakang dan perbandingan lainnya dari setiap opsi atur ulang, lihat Menjalankan atau mengatur ulang pengindeks, keterampilan, dan dokumen.

Langkah berikutnya