Bagikan melalui


Membuat pengindeks 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.

Anda dapat menggunakan 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 konten mentah (teks biasa atau vektor): Ekstrak string dan metadata dari konten tekstual untuk skenario pencarian teks lengkap. Mengekstrak konten vektor mentah untuk pencarian vektor (misalnya, vektor dalam database Azure SQL atau koleksi Azure Cosmos DB). Dalam alur kerja ini, pengindeksan hanya terjadi melalui konten yang sudah ada yang Anda sediakan.

  • Pengindeksan berbasis keterampilan: Memperluas pengindeksan melalui keterampilan bawaan atau kustom yang membuat atau menghasilkan konten baru yang dapat dicari. Misalnya, Anda dapat menambahkan pembelajaran mesin terintegrasi untuk analisis atas gambar dan teks yang tidak terstruktur, mengekstrak atau menyimpulkan teks dan struktur. Atau, gunakan keterampilan untuk memotong dan mem-vektorisasi konten dari teks dan gambar. Pengindeksan berbasis keterampilan membuat atau menghasilkan konten baru yang tidak ada di sumber data eksternal Anda. Konten baru menjadi bagian dari indeks Anda saat Anda menambahkan bidang ke skema indeks yang menerima data masuk. Untuk mempelajari selengkapnya, lihat Pengayaan AI di Azure AI Search.

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 menit jika ada set keterampilan.

Pola pengindeks

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

Contoh pengindeks untuk pengindeksan berbasis konten

Pengindeksan berbasis konten untuk pencarian teks lengkap atau vektor adalah kasus penggunaan utama untuk pengindeks. 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, seperti:

"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

Pengindeksan berbasis keterampilan menggunakan pengayaan AI untuk memproses konten yang tidak dapat dicari dalam bentuk mentahnya. Semua properti dan parameter di atas berlaku, tetapi properti tambahan berikut khusus untuk pengayaan AI: skillSetName, , cacheoutputFieldMappings.

{
  "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, Membuat set keterampilan, Memetakan bidang output yang diperkaya, dan Mengaktifkan 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 Dokumen JSON dapat berisi teks, angka, dan vektor. 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 data 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 atau vektor
  • Data yang dapat difilter adalah teks dan angka (bidang non-vektor)

Pencarian Azure AI tidak dapat melakukan pencarian teks lengkap melalui 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. Ini juga dapat melakukan pencarian vektor atas penyematan, termasuk penyematan terkuantisasi dalam format biner.

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. Sumber data berikut adalah beberapa sumber 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 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, lalu temukan layanan pencarian Anda.

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

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

      Cuplikan layar yang memperlihatkan wizard Impor data.

    • Tambahkan pengindeks: Editor visual untuk menentukan definisi pengindeks.

      Cuplikan layar yang memperlihatkan tombol Tambahkan pengindeks.

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 dokumen 0/0 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.