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 danretrievable
diatur ke false. Dalam konfigurasi default, salinan yang dapat diambil disimpan, tetapi tidak dikembalikan secara otomatis dalam hasil. Ketikastored
benar, Anda dapat beralihretrievable
antara true dan false kapan saja tanpa harus membangun ulang indeks. Ketikastored
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:
Gunakan BUAT Indeks atau Buat atau Perbarui REST API pratinjau 2024-11-01, atau paket beta Azure SDK yang menyediakan fitur tersebut.
vectorSearch
Tambahkan bagian ke indeks Anda dengan profil, algoritma, dan kompresi.Di bawah pemadatan, tambahkan
rescoringOptions
denganenableRescoring
diatur ke true,defaultOversampling
atur ke bilangan bulat positif, danrescoreStorageMethod
atur kepreserveOriginals
.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 } ] } }