Jalankan atau atur ulang pengindeks, keterampilan, atau dokumen
Di Azure AI Search, ada beberapa cara untuk menjalankan pengindeks:
- Jalankan segera setelah pembuatan pengindeks, dengan asumsi tidak dibuat dalam mode "dinonaktifkan".
- Jalankan sesuai jadwal untuk memanggil eksekusi secara berkala.
- Jalankan sesuai permintaan, dengan atau tanpa "reset".
Artikel ini menjelaskan cara menjalankan pengindeks sesuai permintaan, dengan dan tanpa reset. Ini juga menjelaskan eksekusi, durasi, dan konkurensi pengindeks.
Cara pengindeks tersambung ke sumber daya Azure
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.
Eksekusi pengindeks
Layanan pencarian menjalankan satu pekerjaan pengindeks per unit pencarian. Setiap layanan pencarian dimulai dengan satu unit pencarian, tetapi setiap partisi atau replika baru meningkatkan unit pencarian layanan Anda. Anda dapat memeriksa jumlah unit pencarian di bagian Penting portal dari halaman Gambaran Umum . Jika Anda memerlukan pemrosesan bersamaan, pastikan unit pencarian Anda menyertakan replika yang memadai. Pengindeks tidak berjalan di latar belakang, sehingga Anda mungkin mendeteksi lebih banyak pembatasan kueri daripada biasanya jika layanan berada di bawah tekanan.
Cuplikan layar berikut menunjukkan jumlah unit pencarian, yang menentukan berapa banyak pengindeks yang dapat berjalan sekaligus.
Setelah eksekusi pengindeks dimulai, Anda tidak dapat menjeda atau menghentikannya. Eksekusi pengindeks berhenti ketika tidak ada lagi dokumen untuk dimuat atau di-refresh, atau ketika batas waktu berjalan maksimum tercapai.
Anda dapat menjalankan beberapa pengindeks pada satu waktu dengan asumsi kapasitas yang memadai, tetapi setiap pengindeks itu sendiri adalah instans tunggal. Memulai instans baru saat pengindeks sudah dalam eksekusi menghasilkan kesalahan ini: "Failed to run indexer "<indexer name>" error: "Another indexer invocation is currently in progress; concurrent invocations are not allowed."
Pekerjaan pengindeks berjalan di lingkungan eksekusi terkelola. Saat ini, ada dua lingkungan:
Lingkungan eksekusi privat berjalan pada kluster pencarian yang khusus untuk layanan pencarian Anda. Jika layanan pencarian Anda adalah Standard2 atau nigher, Anda dapat mengatur
executionEnvironment
parameter dalam definisi pengindeks untuk selalu menjalankan pengindeks di lingkungan eksekusi privat.Lingkungan multipenyewa memiliki prosesor konten yang dikelola dan diamankan oleh Microsoft tanpa biaya tambahan. Lingkungan ini digunakan untuk melakukan offload pada pemrosesan komputasi yang intensif, sehingga sumber daya khusus layanan tersedia untuk operasi rutin. Jika memungkinkan, sebagian besar set keterampilan dijalankan di lingkungan multipenyewa. Ini adalah default.
Pemrosesan intensif komputasi mencakup set keterampilan yang berjalan pada prosesor konten, dan pekerjaan pengindeks volume tinggi atau pekerjaan pengindeks dengan dokumen besar. Pemrosesan non-skillset pada prosesor konten multipenyewa ditentukan oleh hueristik dan informasi sistem dan tidak berada di bawah kontrol pelanggan. Layanan S2 dan dukungan yang lebih tinggi menyematkan pengindeks dan pemrosesan skillset secara eksklusif ke kluster pencarian Anda melalui
executionEnvironment
parameter .Catatan
Firewall IP memblokir lingkungan multipenyewa, jadi jika Anda memiliki firewall, buat aturan yang memungkinkan pemrosesan multipenyewa.
Batas pengindeks bervariasi untuk setiap lingkungan:
Beban kerja | Durasi maksimum | Pekerjaan maksimum | Lingkungan eksekusi |
---|---|---|---|
Eksekusi privat | 24 jam | Satu pekerjaan pengindeks per unit pencarian 1. | Pengindeksan tidak berjalan di latar belakang. Sebagai gantinya, layanan pencarian akan menyeimbangkan semua pekerjaan pengindeksan terhadap kueri yang sedang berlangsung dan tindakan manajemen objek (seperti membuat atau memperbarui indeks). Saat menjalankan pengindeks, Anda akan mengharapkan untuk melihat beberapa latensi kueri jika volume pengindeksan besar. |
Multi penyewa | 2 jam 2 | Tidak ditentukan 3 | Karena kluster pemrosesan konten multipenyewa, prosesor konten ditambahkan untuk memenuhi permintaan. Jika Anda mengalami penundaan eksekusi sesuai permintaan atau terjadwal, mungkin karena sistem menambahkan prosesor atau menunggu prosesor tersedia. |
1 Unit pencarian dapat berupa kombinasi partisi dan replika yang fleksibel, tetapi pekerjaan pengindeks tidak terkait dengan satu atau yang lain. Dengan kata lain, jika Anda memiliki 12 unit, Anda dapat memiliki 12 pekerjaan pengindeks yang berjalan bersamaan dalam eksekusi privat, tidak peduli bagaimana unit pencarian disebarkan.
2 Jika lebih dari dua jam diperlukan untuk memproses semua data, aktifkan deteksi perubahan dan jadwalkan pengindeks untuk berjalan pada interval 5 menit untuk melanjutkan pengindeksan dengan cepat jika berhenti karena waktu habis. Lihat Mengindeks himpunan data besar untuk strategi lainnya.
3 "Tidak ditentukan" berarti bahwa batas tidak diukur oleh jumlah pekerjaan. Beberapa beban kerja, seperti pemrosesan set keterampilan, dapat berjalan secara paralel, yang dapat mengakibatkan banyak pekerjaan meskipun hanya satu pengindeks yang terlibat. Meskipun lingkungan tidak memberlakukan batasan, batas pengindeks untuk layanan pencarian Anda masih berlaku.
Jalankan tanpa reset
Operasi Jalankan Pengindeks akan mendeteksi dan memproses hanya apa yang diperlukan untuk menyinkronkan indeks pencarian dengan perubahan di sumber data yang mendasarinya. Pengindeksan inkremental dimulai dengan menemukan tanda air tinggi internal untuk menemukan dokumen pencarian terakhir yang diperbarui, yang menjadi titik awal eksekusi pengindeks melalui dokumen baru dan yang diperbarui di sumber data.
Deteksi perubahan sangat penting untuk menentukan apa yang baru atau diperbarui di sumber data. Pengindeks menggunakan kemampuan deteksi perubahan sumber data yang mendasar untuk menentukan apa yang baru atau diperbarui di sumber data.
Azure Storage memiliki deteksi perubahan bawaan melalui properti LastModified-nya.
Sumber data lain, seperti Azure SQL atau Azure Cosmos DB, harus dikonfigurasi untuk deteksi perubahan sebelum pengindeks dapat membaca baris baru dan yang diperbarui.
Jika konten yang mendasarinya tidak berubah, operasi eksekusi tidak berpengaruh. Dalam hal ini, riwayat eksekusi pengindeks akan menunjukkan 0\0
dokumen yang diproses.
Anda harus mengatur ulang pengindeks, seperti yang dijelaskan di bagian berikutnya, untuk memproses ulang secara penuh.
Mereset pengindeks
Setelah eksekusi awal, pengindeks melacak dokumen pencarian mana yang telah diindeks melalui tanda air tinggi internal. Penanda tidak pernah diekspos, tetapi secara internal pengindeks tahu di mana pengindeks terakhir berhenti.
Jika Anda perlu membangun kembali semua atau sebagian indeks, Anda dapat menghapus tanda air tinggi pengindeks melalui reset. API reset tersedia di tingkat penurunan dalam hierarki objek:
- Reset Pengindeks menghapus tanda air tinggi dan melakukan pengindeksan ulang penuh semua dokumen
- Reset Dokumen (pratinjau) mengindeks ulang dokumen atau daftar dokumen tertentu
- Reset Keterampilan (pratinjau) memanggil pemrosesan keterampilan untuk keterampilan tertentu
Setelah reset, ikuti perintah Jalankan untuk memproses ulang dokumen baru dan yang sudah ada. Dokumen pencarian tanpa inti yang tidak memiliki mitra di sumber data tidak dapat dihapus melalui reset/eksekusi. Jika Anda perlu menghapus dokumen, lihat Dokumen - Indeks sebagai gantinya.
Cara mengatur ulang dan menjalankan pengindeks
Reset membersihkan tanda air tinggi. Semua dokumen dalam indeks pencarian akan ditandai untuk penimpaan penuh, tanpa pembaruan sebaris atau penggabungan ke dalam konten yang ada. Untuk pengindeks dengan set keterampilan dan penembolokan pengayaan, mengatur ulang indeks juga akan secara implisit mengatur ulang set keterampilan.
Pekerjaan aktual terjadi saat Anda mengikuti reset dengan perintah Jalankan:
- Semua dokumen baru yang menemukan sumber yang mendasar ditambahkan ke indeks pencarian.
- Semua dokumen yang ada di sumber data dan indeks pencarian akan ditimpa dalam indeks pencarian.
- Setiap konten yang diperkaya yang dibuat dari set keterampilan akan dibangun kembali. Cache pengayaan, jika diaktifkan, akan disegarkan.
Seperti yang disebutkan sebelumnya, reset adalah operasi pasif: Anda harus menindaklanjuti permintaan Jalankan untuk membangun kembali indeks.
Mengatur ulang/menjalankan operasi berlaku untuk indeks pencarian atau penyimpanan pengetahuan, untuk dokumen atau proyeksi tertentu, dan untuk pengayaan cache jika reset secara eksplisit atau implisit menyertakan keterampilan.
Reset juga berlaku untuk membuat dan memperbarui operasi. Ini tidak akan memicu penghapusan atau pembersihan dokumen tanpa institusi dalam indeks pencarian. Untuk informasi selengkapnya tentang menghapus dokumen, lihat Dokumen - Indeks.
Setelah mengatur ulang pengindeks, Anda tidak dapat membatalkan tindakan.
Masuk ke portal Azure dan buka halaman layanan pencarian.
Pada halaman Gambaran Umum, pilih tab Pengindeks.
Pilih pengindeks.
Pilih perintah Reset, lalu pilih Ya untuk mengonfirmasi tindakan.
Refresh halaman untuk memperlihatkan status. Anda dapat memilih item untuk melihat detailnya.
Pilih Jalankan untuk memulai pemrosesan pengindeks, atau tunggu eksekusi terjadwal berikutnya.
Cara mengatur ulang keterampilan (pratinjau)
Untuk pengindeks yang memiliki keterampilan, Anda dapat mengatur ulang keterampilan individual untuk memaksa pemrosesan hanya keterampilan itu dan keterampilan hilir apa pun yang bergantung pada outputnya. Cache pengayaan, jika Anda mengaktifkannya, juga disegarkan.
Reset Keterampilan saat ini hanya REST, tersedia hingga 2020-06-30-preview atau yang lebih baru. Kami merekomendasikan API pratinjau terbaru.
POST /skillsets/[skillset name]/resetskills?api-version=2024-05-01-preview
{
"skillNames" : [
"#1",
"#5",
"#6"
]
}
Anda bisa menentukan keterampilan individu, seperti yang ditunjukkan dalam contoh di atas, tetapi jika salah satu keterampilan tersebut memerlukan output dari keterampilan yang tidak terdaftar (#2 hingga #4), keterampilan yang tidak terdaftar akan berjalan kecuali cache dapat memberikan informasi yang diperlukan. Agar ini benar, pengayaan cache untuk keterampilan #2 melalui #4 tidak boleh memiliki dependensi pada #1 (terdaftar untuk reset).
Jika tidak ada keterampilan yang ditentukan, seluruh skillset dijalankan dan jika penembolokan diaktifkan, cache juga di-refresh.
Ingatlah untuk menindaklanjuti dengan Jalankan Pengindeks untuk memanggil pemrosesan aktual.
Cara mengatur ulang dokumen (pratinjau)
Dokumen Pengindeks - Reset menerima daftar kunci dokumen sehingga Anda dapat me-refresh dokumen tertentu. Jika ditentukan, parameter reset akan menjadi penentu tunggal dari apa yang akan diproses, terlepas dari perubahan lain dalam data yang mendasarinya. Misalnya, jika 20 blob ditambahkan atau diperbarui sejak pengindeks terakhir dijalankan, tetapi Anda hanya mengatur ulang satu dokumen, hanya dokumen tersebut yang diproses.
Pada basis per dokumen, semua bidang dalam dokumen pencarian tersebut di-refresh dengan nilai dari sumber data. Anda tidak dapat memilih dan memilih bidang mana yang akan di-refresh.
Jika dokumen diperkaya melalui set keterampilan dan memiliki data cache, set keterampilan dipanggil hanya untuk dokumen yang ditentukan, dan cache diperbarui untuk dokumen yang diolah ulang.
Saat Anda menguji API ini untuk pertama kalinya, API berikut dapat membantu Anda memvalidasi dan menguji perilaku. Anda dapat menggunakan pratinjau API versi 2020-06-30-preview dan yang lebih baru. Kami merekomendasikan API pratinjau terbaru.
Pengindeks Panggilan - Dapatkan Status dengan versi API pratinjau untuk memeriksa status reset dan status eksekusi. Anda bisa menemukan informasi tentang permintaan reset di akhir respons status.
Pengindeks Panggilan - Reset Dokumen dengan versi API pratinjau untuk menentukan dokumen mana yang akan diproses .
POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2024-05-01-preview { "documentKeys" : [ "1001", "4452" ] }
Kunci dokumen yang disediakan dalam permintaan adalah nilai dari indeks pencarian, yang bisa berbeda dengan bidang terkait di sumber data. Jika Anda tidak yakin dengan nilai kunci, kirim kueri untuk mengembalikan nilai. Anda dapat menggunakan
select
untuk mengembalikan bidang kunci dokumen saja.Untuk blob yang diurai ke dalam beberapa dokumen pencarian (di mana parsingMode diatur ke jsonLines atau jsonArrays, atau delimitedText), kunci dokumen dihasilkan oleh pengindeks dan mungkin tidak diketahui oleh Anda. Dalam skenario ini, kueri untuk kunci dokumen mengembalikan nilai yang benar.
Panggil Run Indexer (versi API apa pun) untuk memproses dokumen yang Anda tentukan. Hanya dokumen tertentu yang diindeks.
Panggil Run Indexer untuk kedua kalinya untuk memproses dari tanda air tinggi terakhir.
Panggil Cari Dokumen untuk memeriksa nilai yang diperbarui, dan juga untuk mengembalikan kunci dokumen jika Anda tidak yakin dengan nilainya. Gunakan
"select": "<field names>"
jika Anda ingin membatasi bidang mana yang muncul dalam respons.
Menimpa daftar kunci dokumen
Memanggil Reset Documents API beberapa kali dengan kunci yang berbeda menambahkan kunci baru ke daftar reset kunci dokumen. Memanggil API dengan parameter yang overwrite
diatur ke true akan menimpa daftar saat ini dengan yang baru:
POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
{
"documentKeys" : [
"200",
"630"
],
"overwrite": true
}
Periksa status reset "currentState"
Untuk memeriksa status reset dan melihat kunci dokumen mana yang diantrekan untuk diproses, ikuti langkah-langkah ini.
Panggil Dapatkan Status Pengindeks dengan API pratinjau.
API pratinjau akan mengembalikan bagian
currentState
, yang ditemukan di akhir respons."currentState": { "mode": "indexingResetDocs", "allDocsInitialTrackingState": "{\"LastFullEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"LastAttemptedEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"NameHighWaterMark\":null}", "allDocsFinalTrackingState": "{\"LastFullEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"LastAttemptedEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"NameHighWaterMark\":null}", "resetDocsInitialTrackingState": null, "resetDocsFinalTrackingState": null, "resetDocumentKeys": [ "200", "630" ] }
Periksa "mode":
Untuk Reset Keterampilan, "mode" harus diatur ke
indexingAllDocs
(karena berpotensi semua dokumen terpengaruh, dalam hal bidang yang diisi melalui pengayaan AI).Untuk Reset Dokumen, "mode" harus diatur ke
indexingResetDocs
. Pengindeks mempertahankan status ini sampai semua kunci dokumen yang disediakan dalam panggilan dokumen reset diproses, di mana tidak ada pekerjaan pengindeks lain yang akan dijalankan saat operasi sedang berlangsung. Menemukan semua dokumen dalam daftar kunci dokumen memerlukan peretasan setiap dokumen untuk menemukan dan mencocokkan pada kunci, dan ini bisa memakan waktu cukup lama jika himpuan datanya besar. Jika kontainer blob berisi ratusan b, dan blob, dan dokumen yang ingin Anda reset berada di ujung, pengindeks tidak akan menemukan blob yang cocok sampai semua yang lain telah diperiksa terlebih dahulu.Setelah dokumen diolah ulang, jalankan Dapatkan Status Pengindeks lagi. Pengindeks kembali ke
indexingAllDocs
mode dan akan memproses dokumen baru atau yang diperbarui pada eksekusi berikutnya.
Langkah berikutnya
Reset API digunakan untuk menginformasikan cakupan eksekusi pengindeks berikutnya. Untuk pemrosesan aktual, Anda harus memanggil pengindeks sesuai permintaan atau mengizinkan pekerjaan terjadwal untuk menyelesaikan tugasnya. Setelah eksekusi selesai, pengindeks kembali ke pemrosesan normal, apakah itu sesuai jadwal atau pemrosesan sesuai permintaan.
Setelah mengatur ulang dan menjalankan ulang pekerjaan pengindeks, Anda dapat memantau status dari layanan pencarian, atau mendapatkan informasi terperinci melalui pengelogan sumber daya.