"Proyeksi" penyimpanan pengetahuan di Azure AI Search

Proyeksi menentukan tabel fisik, objek, dan file di penyimpanan pengetahuan yang menerima konten dari alur pengayaan Azure AI Search. Jika Anda membuat penyimpanan pengetahuan, mendefinisikan dan membentuk proyeksi adalah sebagian besar pekerjaan.

Artikel ini memperkenalkan konsep dan alur kerja proyeksi sehingga Anda memiliki beberapa latar belakang sebelum memulai pengkodean.

Proyeksi didefinisikan dalam kumpulan keterampilan Azure AI Search, tetapi hasil akhirnya adalah proyeksi file tabel, objek, dan gambar di Azure Storage.

Projections expressed in Azure Storage

Jenis proyeksi dan penggunaan

Penyimpanan pengetahuan adalah konstruksi logis yang secara fisik dinyatakan sebagai koleksi tabel yang longggar, objek JSON, atau file gambar biner dalam Azure Storage.

Proyeksi Penyimpanan Penggunaan
Tabel Penyimpanan Tabel Azure Digunakan untuk data yang paling baik direpresentasikan sebagai baris dan kolom, atau kapan pun Anda memerlukan representasi terperinci dari data Anda (misalnya, sebagai bingkai data). Proyeksi tabel memungkinkan Anda untuk menentukan bentuk skema, menggunakan keterampilan Pembentuk atau menggunakan pembentukan sebaris untuk menentukan kolom dan baris. Anda dapat mengatur konten ke dalam beberapa tabel berdasarkan prinsip normalisasi yang sudah dikenal. Tabel yang berada dalam grup yang sama secara otomatis terkait.
Objek Azure Blob Storage Digunakan saat Anda memerlukan representasi JSON lengkap dari data dan pengayaan Anda dalam satu dokumen JSON. Seperti proyeksi tabel, hanya objek JSON yang valid yang dapat diproyeksikan sebagai objek, dan pembentukan dapat membantu Anda melakukannya.
File Azure Blob Storage Digunakan saat Anda perlu menyimpan file gambar biner yang dinormalisasi.

Definisi proyeksi

Proyeksi ditentukan di bagian properti "knowledgeStore" dari set keterampilan. Definisi proyeksi digunakan selama pemanggilan pengindeks untuk membuat dan memuat objek dalam Azure Storage dengan konten yang diperkaya. Jika Anda tidak terbiasa dengan konsep ini, mulailah dengan pengayaan AI untuk pengenalan.

Contoh berikut menggambarkan penempatan proyeksi di bagian knowledgeStore, dan konstruksi dasar. Nama, jenis, dan sumber konten membentuk definisi proyeksi.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
      {
        "tables": [
          { "tableName": "ks-museums-main", "generatedKeyName": "ID", "source": "/document/tableprojection" },
          { "tableName": "ks-museumEntities", "generatedKeyName": "ID","source": "/document/tableprojection/Entities/*" }
        ],
        "objects": [
          { "storageContainer": "ks-museums", "generatedKeyName": "ID", "source": "/document/objectprojection" }
        ],
        "files": [ ]
      }
    ]

Grup proyeksi

Proyeksi adalah array koleksi yang kompleks, yang berarti bahwa Anda dapat menentukan beberapa set dari setiap jenis. Hanya menggunakan satu grup proyeksi merupakan hal umum, tetapi Anda mungkin menggunakan beberapa jika persyaratan penyimpanan menyertakan berbagai alat dan skenario dukungan. Misalnya, Anda dapat menggunakan satu grup untuk mendesain dan men-debug satu set keterampilan, sementara set kedua mengumpulkan output yang digunakan untuk aplikasi online, dengan yang ketiga untuk beban kerja ilmu data.

Output set keterampilan yang sama digunakan untuk mengisi semua grup di bagian proyeksi. Contoh berikut menunjukkan dua.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
        {
            "tables": [],
            "objects": [],
            "files": []
        }, 
        {
            "tables": [],
            "objects": [],
            "files": []
        }
    ]
}

Grup proyeksi memiliki karakteristik utama yang mencakup eksklusivitas bersama dan keterkaitan.

Prinsip Deskripsi
Eksklusivitas bersama Setiap grup sepenuhnya terisolasi dari grup lain untuk mendukung skenario pembentukan data yang berbeda. Misalnya, jika Anda menguji struktur dan kombinasi tabel yang berbeda, Anda akan menempatkan setiap set dalam grup proyeksi yang berbeda untuk pengujian AB. Setiap kelompok memperoleh data dari sumber yang sama (pohon pengayaan) tetapi sepenuhnya terisolasi dari kombinasi tabel-objek-file dari setiap kelompok proyeksi serekan.
Keterkaitan Dalam grup proyeksi, konten dalam tabel, objek, dan file terkait. Penyimpanan pengetahuan menggunakan kunci yang dihasilkan sebagai titik referensi ke node induk umum. Misalnya, pertimbangkan skenario saat Anda memiliki dokumen yang berisi gambar dan teks. Anda dapat memproyeksikan teks ke tabel dan gambar ke file biner, dan tabel dan objek memiliki kolom/properti yang berisi URL file.

"Sumber" proyeksi

Parameter sumber adalah komponen ketiga dari definisi proyeksi. Karena proyeksi menyimpan data dari alur pengayaan AI, sumber proyeksi selalu merupakan output dari keterampilan. Dengan demikian, output mungkin bidang tunggal (misalnya, bidang teks yang diterjemahkan), tetapi seringkali itu adalah referensi ke bentuk data.

Bentuk data berasal dari set keterampilan Anda. Di antara semua keterampilan bawaan yang disediakan dalam Azure AI Search, ada keterampilan utilitas yang disebut keterampilan Shaper yang digunakan untuk membuat bentuk data. Anda dapat menyertakan keterampilan Pembentuk (sebanyak yang Anda butuhkan) untuk mendukung proyeksi di penyimpanan pengetahuan.

Bentuk sering digunakan dengan proyeksi tabel, di mana bentuk tidak hanya menentukan baris mana yang masuk ke tabel, tetapi juga kolom mana yang dibuat (Anda juga dapat meneruskan bentuk ke proyeksi objek).

Bentuk bisa rumit dan di luar cakupan untuk membahasnya secara mendalam di sini, tetapi contoh berikut secara singkat menggambarkan bentuk dasar. Output dari keterampilan Pembentuk ditentukan sebagai sumber proyeksi tabel. Di dalam proyeksi tabel itu sendiri akan berupa kolom untuk "metadata-storage_path", "reviews_text", "reviews_title", dan sebagainya, seperti yang ditentukan dalam bentuk.

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "name": "ShaperForTables",
    "description": null,
    "context": "/document",
    "inputs": [
        {
            "name": "metadata_storage_path",
            "source": "/document/metadata_storage_path",
            "sourceContext": null,
            "inputs": []
        },
        {
          "name": "reviews_text",
          "source": "/document/reviews_text"
        }, 
        {
          "name": "reviews_title",
          "source": "/document/reviews_title"
        },
        {
          "name": "reviews_username",
          "source": "/document/reviews_username"
        },
    ],
    "outputs": [
      {
        "name": "output",
        "targetName": "mytableprojection"
      }
    ]
}

Siklus hidup proyeksi

Proyeksi memiliki siklus hidup yang terkait dengan data sumber di sumber data Anda. Saat data sumber diperbarui dan diindeks ulang, proyeksi diperbarui dengan hasil pengayaan, memastikan proyeksi Anda pada akhirnya konsisten dengan data di sumber data Anda. Namun, proyeksi juga disimpan secara independen di Azure Storage. Mereka tidak akan dihapus ketika pengindeks atau layanan pencarian itu sendiri dihapus.

Mengkonsumsi dalam aplikasi

Setelah pengindeks dijalankan, sambungkan ke proyeksi dan konsumsi data di aplikasi dan beban kerja lain.

  • Gunakan portal Azure untuk memverifikasi pembuatan objek dan konten di Azure Storage.

  • Gunakan Power BI untuk eksplorasi data. Alat ini bekerja paling baik ketika data berada di Azure Table Storage. Dalam Power BI, Anda dapat memanipulasi data ke dalam tabel baru yang lebih mudah untuk mengkueri dan menganalisis.

  • Gunakan data yang diperkaya dalam kontainer blob dalam alur ilmu data. Misalnya, Anda dapat memuat data dari blob ke dalam DataFrame Pandas.

  • Terakhir, jika Anda perlu mengekspor data Anda dari penyimpanan pengetahuan, Azure Data Factory memiliki konektor untuk mengekspor data dan mendaratkannya dalam database pilihan Anda.

Daftar periksa untuk memulai

Ingat bahwa proyeksi eksklusif untuk penyimpanan pengetahuan, dan tidak digunakan untuk menyusun indeks pencarian.

  1. Di Azure Storage, dapatkan string koneksi dari Kunci Akses dan verifikasi bahwa akun adalah StorageV2 (tujuan umum V2).

  2. Saat berada di Azure Storage, biasakan diri Anda dengan konten yang ada dalam kontainer dan tabel sehingga Anda memilih nama yang tidak berkonflik untuk proyeksi. Penyimpanan pengetahuan adalah koleksi tabel dan kontainer yang longgar. Pertimbangkan untuk mengadopsi konvensi penamaan untuk melacak objek terkait.

  3. Di Azure AI Search, aktifkan penembolokan pengayaan (pratinjau) di pengindeks lalu jalankan pengindeks untuk menjalankan set keterampilan dan mengisi cache. Ini adalah fitur pratinjau, jadi pastikan untuk menggunakan REST API pratinjau (api-version=2020-06-30-preview atau yang lebih baru) pada permintaan pengindeks. Setelah cache diisi, Anda dapat memodifikasi definisi proyeksi di penyimpanan pengetahuan secara gratis (selama keterampilan itu sendiri tidak dimodifikasi).

  4. Dalam kode Anda, semua proyeksi didefinisikan semata-mata dalam set keterampilan. Tidak ada properti pengindeks (seperti pemetaan lapangan atau pemetaan bidang output) yang berlaku untuk proyeksi. Dalam definisi skillset, Anda akan fokus pada dua area: properti knowledgeStore dan array keterampilan.

    1. Di bagian knowledgeStore, tentukan tabel, objek, proyeksi file di bagian projections tersebut. Jenis objek, nama objek, dan kuantitas (sesuai jumlah proyeksi yang Anda tentukan) ditentukan di bagian ini.

    2. Dari array keterampilan, tentukan output keterampilan mana yang harus direferensikan dalam source setiap proyeksi. Semua proyeksi memiliki sumber. Sumbernya bisa menjadi output dari keterampilan upstram, tetapi sering merupakan output dari keterampilan Pembentuk. Komposisi proyeksi Anda ditentukan melalui bentuk.

  5. Jika Anda menambahkan proyeksi ke set keterampilan yang ada, perbarui set keterampilan dan jalankan pengindeks.

  6. Periksa hasil Anda di Azure Storage. Pada jalankan berikutnya, hindari tabrakan penamaan dengan menghapus objek di Azure Storage atau mengubah nama proyek di set keterampilan.

  7. Jika Anda menggunakan proyeksi Tabel, periksa Memahami model data Layanan Tabel dan Skalabilitas dan target performa untuk penyimpanan Tabel untuk memastikan persyaratan data Anda berada dalam batas penyimpanan Tabel yang didokumenkan.

Langkah berikutnya

Meninjau sintaks dan contoh untuk setiap jenis proyeksi.