Bagikan melalui


Menghilangkan instans vektor opsional dari penyimpanan

Azure AI Search menyimpan beberapa salinan bidang vektor yang digunakan dalam beban kerja tertentu. Jika Anda tidak perlu mendukung perilaku tertentu, seperti mengembalikan vektor mentah dalam respons kueri, Anda dapat mengatur properti dalam indeks yang menghilangkan penyimpanan untuk beban kerja tersebut.

Prasyarat

  • Bidang vektor dalam indeks pencarian dengan vectorSearch konfigurasi, menggunakan algoritma Hierarkis Navigable Small Worlds (HNSW) atau algoritma K-nearest (KNN) lengkap dan profil vektor baru.

Bagaimana bidang vektor disimpan

Untuk setiap bidang vektor, mungkin ada tiga salinan vektor, masing-masing melayani tujuan yang berbeda:

Instans Penggunaan Dikontrol menggunakan
Vektor sumber yang menyimpan JSON yang diterima selama pengindeksan dokumen Digunakan untuk refresh data inkremental dengan merge atau mergeOrUpload selama pengindeksan dokumen. Juga digunakan jika Anda ingin vektor "dapat diambil" dikembalikan dalam respons kueri. stored properti pada bidang vektor
Vektor presisi penuh asli Dalam indeks yang ada, ini digunakan untuk operasi indeks internal dan untuk pencarian KNN yang lengkap. Untuk vektor yang menggunakan kompresi, vektor juga digunakan untuk penilaian ulang (jika diaktifkan) pada sekumpulan hasil kandidat oversampled dari pencarian ANN pada bidang vektor menggunakan kompresi kuantisasi skalar atau biner. rescoringOptions.rescoreStorageMethod properti dalam vectorSearch.compressions. Untuk bidang vektor yang tidak dikompresi pada indeks yang dibuat dengan 2024-11-01-Preview versi API dan yang lebih baru, ini akan dihilangkan secara default tanpa berdampak pada aktivitas pencarian atau kualitas.
Vektor dalam grafik HNSW untuk pencarian Perkiraan Tetangga Terdekat (ANN) Digunakan untuk eksekusi kueri ANN. Terdiri dari vektor presisi penuh (ketika tidak ada kompresi yang diterapkan) atau vektor berkuantisasi (ketika kompresi diterapkan) Hanya berlaku untuk HNSW. Struktur data ini diperlukan untuk pencarian ANN yang efisien.

Anda dapat mengatur properti yang secara permanen membuang dua instans pertama dari penyimpanan vektor.

Instans terakhir (vektor dan grafik) diperlukan untuk eksekusi kueri vektor ANN. Jika ada teknik kompresi seperti skalar atau kuantisasi biner yang digunakan, mereka akan diterapkan ke kumpulan data ini. Jika Anda ingin mengimbangi kompresi lossy, Anda harus menyimpan instans kedua untuk tujuan penilaian ulang untuk meningkatkan kualitas pencarian ANN.

stored Mengatur properti

Properti stored adalah properti boolean pada definisi bidang vektor yang menentukan apakah penyimpanan dialokasikan untuk konten bidang vektor yang dapat diambil (instans sumber). Properti stored benar secara default. Jika Anda tidak memerlukan konten vektor mentah dalam respons kueri, Anda bisa menyimpan penyimpanan hingga 50 persen per bidang dengan mengubah stored ke false.

Pertimbangan untuk mengatur stored ke false:

  • Karena vektor tidak dapat dibaca manusia, Anda dapat menghilangkannya dari hasil yang dikirim ke LLM dalam skenario RAG, dan dari hasil yang dirender di halaman pencarian. Namun, simpan jika Anda menggunakan vektor dalam proses hilir yang menggunakan konten vektor.

  • Namun, jika strategi pengindeksan Anda menyertakan pembaruan dokumen parsial, seperti "gabungkan" atau "mergeOrUpload" pada dokumen yang ada, pengaturan stored=false mencegah pembaruan konten ke bidang tersebut selama penggabungan. Pada setiap operasi "gabung" atau "mergeOrUpload" ke dokumen pencarian, Anda harus menyediakan bidang vektor secara keseluruhan, bersama dengan bidang nonvektor yang Anda perbarui, atau vektor dihilangkan.

Penting

stored=false Mengatur atribusi tidak dapat diubah. Properti ini hanya dapat diatur ketika Anda membuat indeks dan hanya diizinkan pada bidang vektor. Memperbarui indeks yang ada dengan bidang vektor baru tidak dapat mengatur properti ini ke false. Jika Anda ingin konten vektor yang dapat diambil nanti, Anda harus menghilangkan dan membangun kembali indeks, atau membuat dan memuat bidang baru yang memiliki atribusi baru.

Untuk bidang vektor baru dalam indeks pencarian, atur stored ke false untuk menghapus penyimpanan yang dapat diambil secara permanen untuk bidang vektor. Contoh berikut menunjukkan definisi bidang vektor dengan stored properti .

PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01 
  Content-Type: application/json  
  api-key: [admin key]  

    { 
      "name": "demo-index", 
      "fields": [ 
        { 
          "name": "vectorContent", 
          "type": "Collection(Edm.Single)", 
          "retrievable": false, 
          "stored": false, 
          "dimensions": 1536, 
          "vectorSearchProfile": "vectorProfile" 
        } 
      ] 
    } 

Ringkasan poin utama

  • Berlaku untuk bidang yang memiliki tipe data vektor.

  • Mempengaruhi penyimpanan pada disk, bukan memori, dan tidak berpengaruh pada kueri. Eksekusi kueri menggunakan indeks vektor terpisah yang tidak terpengaruh oleh stored properti karena salinan vektor selalu disimpan.

  • Properti stored diatur selama pembuatan indeks pada bidang vektor dan tidak dapat diubah. Jika Anda ingin mengambil konten nanti, Anda harus menghilangkan dan membangun kembali indeks, atau membuat dan memuat bidang baru yang memiliki atribusi baru.

  • Default diatur stored ke true dan retrievable diatur ke false. Dalam konfigurasi default, salinan yang dapat diambil disimpan, tetapi tidak dikembalikan secara otomatis dalam hasil. Ketika stored benar, Anda dapat beralih retrievable antara true dan false kapan saja tanpa harus membangun ulang indeks. Ketika stored salah, retrievable harus false dan tidak dapat diubah.

rescoreStorageMethod Mengatur properti

Catatan

Fitur ini masih dalam pratinjau umum. Pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Properti rescoreStorageMethod mengontrol penyimpanan vektor presisi penuh saat pemadatan digunakan.

Untuk bidang vektor yang tidak dikompresi pada indeks yang dibuat dengan 2024-11-01-Preview versi API dan yang lebih baru, ini akan dihilangkan secara default tanpa berdampak pada aktivitas pencarian atau kualitas. Untuk bidang vektor yang ada yang dibuat sebelum versi API ini, tidak ada kemampuan di tempat untuk menghapus salinan data ini.

Pada kompresi vektor, rescoreStorageMethod properti diatur ke preserveOriginals secara default, yang mempertahankan vektor presisi penuh untukkemampuan pengambilan sampel dan penilaian ulang berlebih untuk mengurangi efek kompresi lossy pada grafik HNSW. Jika Anda tidak menggunakan kemampuan ini, Anda dapat mengurangi penyimpanan vektor dengan mengatur rescoreStorageMethod ke discardOriginals.

Penting

rescoreStorageMethod Mengatur properti tidak dapat diubah dan akan memiliki tingkat kehilangan kualitas pencarian yang berbeda tergantung pada metode kompresi. Ini dapat diatur pada indeks yang dibuat dengan 2024-11-01-Preview atau yang lebih baru, baik selama pembuatan indeks atau menambahkan bidang vektor baru.

Jika Anda ingin menggunakan kuantisasi skalar atau biner, sebaiknya pertahankan rescoreStorageMethod diatur ke preserveOriginals untuk memaksimalkan kualitas pencarian.

Untuk mengatur properti ini:

  1. Gunakan BUAT Indeks atau Buat atau Perbarui REST API pratinjau 2024-11-01, atau paket beta Azure SDK yang menyediakan fitur tersebut.

  2. vectorSearch Tambahkan bagian ke indeks Anda dengan profil, algoritma, dan kompresi.

  3. Di bawah pemadatan, tambahkan rescoringOptions dengan enableRescoring diatur ke true, defaultOversampling atur ke bilangan bulat positif, dan rescoreStorageMethod atur ke preserveOriginals.

    PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview
    
    {
        "name": "demo-index",
        "fields": [. . . ],
        . . .
        "vectorSearch": {
            "profiles": [
                {
                "name": "myVectorProfile",
                "algorithm": "myHnsw",
                "compression": "myScalarQuantization"
                }
            ],
            "algorithms": [
              {
                "name": "myHnsw",
                "kind": "hnsw",
                "hnswParameters": {
                  "metric": "cosine",
                  "m": 4,
                  "efConstruction": 400,
                  "efSearch": 500
                },
                "exhaustiveKnnParameters": null
              }
            ],
            "compressions": [
                {
                    "name": "myScalarQuantization",
                    "kind": "scalarQuantization",
                    "rescoringOptions": {
                        "enableRescoring": true,
                        "defaultOversampling": 10,
                        "rescoreStorageMethod": "preserveOriginals"
                    },
                    "scalarQuantizationParameters": {
                        "quantizedDataType": "int8"
                    },
                    "truncationDimension": null
                }
            ]
        }
    }