Topik ini menjelaskan cara membangun layanan pencarian gambar menggunakan OpenSearch Vector Search Edition ketika tidak ada data vektor yang tersedia.
Untuk mengimplementasikan kemampuan pencarian gambar seperti pencarian berdasarkan gambar atau teks tertentu, Anda dapat mengimpor data sumber gambar ke OpenSearch dan melakukan operasi seperti vektorisasi gambar serta pencarian vektor di OpenSearch.
Arsitektur

Anda dapat menggunakan salah satu dari tiga portofolio layanan berikut untuk mengunggah gambar dan membangun mesin pencari gambar:
OSS + MaxCompute + OpenSearch Vector Search Edition: Unggah gambar ke Bucket Object Storage Service (OSS) dan simpan data tabel bisnis serta URL gambar yang sesuai dengan setiap entri data di MaxCompute. URL gambar merujuk pada lokasi setiap gambar dalam bucket OSS. Contoh: /image/1.jpg.
MaxCompute + OpenSearch Vector Search Edition: Simpan gambar yang dikodekan Base64 dan data tabel terkait di MaxCompute.
API + OpenSearch Vector Search Edition: Gunakan API yang disediakan oleh OpenSearch Vector Search Edition untuk mendorong gambar yang dikodekan Base64 dan data tabel terkait ke instance OpenSearch Vector Search Edition.
Dalam contoh ini, portofolio layanan pertama digunakan untuk membangun mesin pencari gambar.
Persiapan
1. Buat pasangan AccessKey
Saat membuat akun Alibaba Cloud dan masuk ke konsol untuk pertama kali, sistem akan meminta Anda untuk membuat pasangan AccessKey sebelum melanjutkan operasi lainnya.
Buat pasangan AccessKey untuk akun Alibaba Cloud Anda karena diperlukan saat membuat dan menggunakan instance OpenSearch.
Setelah membuat pasangan AccessKey untuk akun Alibaba Cloud, Anda juga dapat membuat pasangan AccessKey untuk Pengguna Resource Access Management (RAM). Dengan cara ini, Anda dapat mengakses instance OpenSearch sebagai pengguna RAM. Untuk informasi lebih lanjut tentang cara memberikan izin kepada pengguna RAM, lihat Buat dan Otorisasi Pengguna RAM.
2. Buat Bucket OSS

Buat tag opensearch untuk bucket OSS. Baik kunci maupun nilai dari tag adalah opensearch.

Dalam contoh ini, 1.000 gambar diunggah ke bucket OSS.
Gambar berikut menunjukkan beberapa gambar yang telah diunggah.

Beli instance OpenSearch Vector Search Edition
Untuk informasi lebih lanjut, lihat Beli Instance OpenSearch Vector Search Edition.
Konfigurasikan instance
Instance yang dibeli berada dalam status Menunggu Konfigurasi. Sebelum melakukan operasi pencarian, Anda harus mengonfigurasi tabel untuk instance tersebut.

Di langkah Informasi Tabel Dasar, konfigurasikan parameter berikut dan klik Berikutnya.

Catatan:
Nama Tabel: Nama tabel. Anda dapat menyesuaikan nama tabel.
Data Shards: Jumlah shard data yang terkandung dalam tabel. Masukkan bilangan bulat positif dalam rentang 1 hingga 256. Anda dapat melakukan sharding untuk mempercepat pengindeksan penuh dan meningkatkan performa query tunggal. Jika Anda membuat beberapa tabel indeks dalam instance OpenSearch yang ada, pastikan bahwa tabel indeks tersebut berisi jumlah shard yang sama. Atau, pastikan bahwa setidaknya satu tabel indeks berisi satu shard dan tabel indeks lainnya berisi jumlah shard yang sama.
Jumlah Sumber Daya untuk Pembaruan Data: Jumlah sumber daya yang digunakan untuk pembaruan data. Secara default, OpenSearch menyediakan kuota gratis dua sumber daya untuk pembaruan data untuk setiap sumber data dalam instance OpenSearch Vector Search Edition. Setiap sumber daya terdiri dari 4 core CPU dan 8 GB memori. Anda akan dikenakan biaya untuk sumber daya yang melebihi kuota gratis. Untuk informasi lebih lanjut, lihat Ikhtisar Penagihan OpenSearch Vector Search Edition untuk Situs Internasional (alibabacloud.com).
Template Skenario: Template yang digunakan untuk membuat tabel. Dalam contoh ini, Vector: Image Search dipilih.
Pengolahan Data: Dalam contoh ini, Convert Raw Data to Vector Data dipilih.
Di langkah Sinkronisasi Data, konfigurasikan parameter berikut untuk menambahkan sumber data, dan klik Periksa untuk memverifikasi informasi sumber data. Jika informasi sumber data lulus verifikasi, klik Berikutnya.

Parameter:
Sumber Data Penuh: Jenis sumber data. Nilai valid: MaxCompute + API, OSS + API, dan API. Dalam contoh ini, MaxCompute + API dipilih.
Proyek: Nama proyek MaxCompute yang ingin Anda akses.
AccessKey: ID AccessKey akun Alibaba Cloud Anda atau pengguna RAM dalam akun Alibaba Cloud.
Rahasia AccessKey: Rahasia AccessKey yang sesuai dengan ID AccessKey.
Tabel: Nama tabel MaxCompute yang ingin Anda akses.
Kunci Partisi: Kunci partisi sumber data MaxCompute. Parameter ini wajib. Contoh: ds=20170626.
Timestamp: Jika data tambahan didorong menggunakan operasi API, parameter ini menentukan titik waktu dari mana sistem mensinkronkan data tambahan dari sumber data. Anda dapat memilih tanggal dan waktu dalam 72 jam terakhir.
Reindexing Otomatis: Menentukan apakah akan mengaktifkan fitur reindexing otomatis. Jika fitur reindexing otomatis diaktifkan, sistem secara otomatis melakukan reindexing untuk tabel indeks yang mereferensikan sumber data setiap kali sistem mendeteksi perubahan data dalam sumber data.
Jika Anda mengaktifkan fitur reindexing otomatis, Anda harus membuat tabel done. Untuk informasi lebih lanjut, lihat bagian Konfigurasikan Reindexing Otomatis dari topik "Sumber Data MaxCompute".
Di langkah Konfigurasi Bidang, konfigurasikan bidang untuk tabel dan klik Berikutnya.

Anda harus mengonfigurasi setidaknya bidang kunci utama, bidang vektor, dan bidang yang memerlukan penyematan.
Gambar yang disimpan dalam bucket OSS
Jika Anda memilih template Vector: Image Search, OpenSearch secara otomatis menghasilkan bidang preset berikut: id, cate_id, vector, dan vector_source_image. Bidang id menentukan kunci utama. Bidang cate_id menentukan ID kategori. Bidang vector menentukan vektor. Bidang vector_source_image menentukan URL gambar yang disimpan. Setelah Anda mengonfigurasi sumber data MaxCompute, bidang yang disinkronkan dari sumber data ditampilkan di bawah bidang preset.
3.1. Konfigurasikan bidang vector_source_image. Anda harus menyetel parameter Tipe ke STRING dan memilih kotak centang di kolom Memerlukan Penyematan untuk bidang tersebut.
Anda dapat mengubah nama bidang preset berdasarkan bidang tabel bisnis yang sesuai. Pastikan bahwa konfigurasi lanjutan dari bidang tersebut benar.

Untuk mengonfigurasi parameter untuk konfigurasi lanjutan bidang vector_source_image, klik Edit di kolom Konfigurasi Lanjutan. Di panel yang muncul, konfigurasikan parameter berikut.

Parameter:
Model Vektorisasi
clip: Mengonversi gambar biasa menjadi vektor.
clip_ecom: Mengonversi gambar e-commerce menjadi vektor.
Tipe Data: Dalam contoh ini, image(path) dipilih.
Tipe Konten Sumber: Dalam contoh ini, oss dipilih.
Bucket OSS: Nama bucket OSS.
Catatan: Jika data sumber berasal dari bucket OSS, peran terkait layanan bernama AliyunServiceRoleForSearchEngine diperlukan.
Sebagai contoh, URL OSS sebuah gambar adalah /test image/lake.jpg. Nilai bidang vector_source_image harus /test image/lake.jpg.
3.2. Konfigurasikan bidang vector. Anda harus menyetel parameter Tipe ke FLOAT dan memilih kolom Bidang Vektor untuk bidang tersebut.

Gambar yang dikodekan Base64
Jika Anda memilih template Vector: Image Search, OpenSearch secara otomatis menghasilkan bidang preset berikut: id, cate_id, vector, dan vector_source_image. Bidang id menentukan kunci utama. Bidang cate_id menentukan ID kategori. Bidang vector menentukan vektor. Bidang vector_source_image menentukan URL gambar yang disimpan. Setelah Anda mengonfigurasi sumber data MaxCompute, bidang yang disinkronkan dari sumber data ditampilkan di bawah bidang preset.
3.1. Konfigurasikan bidang vector_source_image. Anda harus menyetel parameter Tipe ke STRING dan memilih kotak centang di kolom Memerlukan Penyematan untuk bidang tersebut.
Anda dapat mengubah nama bidang preset berdasarkan bidang tabel bisnis yang sesuai. Pastikan bahwa konfigurasi lanjutan dari bidang tersebut benar.

Untuk mengonfigurasi parameter untuk konfigurasi lanjutan bidang vector_source_image, klik Edit di kolom Konfigurasi Lanjutan. Di panel yang muncul, konfigurasikan parameter berikut.

Model Vektorisasi: Anda dapat memilih model untuk mengonversi gambar biasa atau gambar e-commerce menjadi vektor. Nilai valid:
clip: Mengonversi gambar biasa menjadi vektor.
clip_ecom: Mengonversi gambar e-commerce menjadi vektor.
Tipe Data: Dalam contoh ini, Image (Base64-encoded) dipilih.
3.2. Konfigurasikan bidang vector. Anda harus menyetel parameter Tipe ke FLOAT dan memilih kolom Bidang Vektor untuk bidang tersebut.

Di langkah Skema Indeks, konfigurasikan skema indeks dan klik Berikutnya.

Catatan:
Nama indeks vektor sama dengan nama bidang vektor.
Bagian Bidang yang Termasuk berisi bidang berikut: Bidang Kunci Utama, Bidang Vektor, dan Namespace. Bidang Namespace bersifat opsional.
Konfigurasikan parameter untuk konfigurasi lanjutan berdasarkan kebutuhan bisnis Anda.
Dimensi default vektor yang dihasilkan dari gambar adalah 512 dan tidak dapat dimodifikasi.
Setelah Anda menyelesaikan konfigurasi, klik Konfirmasi.

Klik Riwayat Perubahan di panel kiri halaman detail instance untuk melihat kemajuan pembuatan tabel.
Setelah data penuh disinkronkan, Anda dapat melakukan tes pencarian.
Lakukan tes kueri
Lakukan tes kueri di konsol OpenSearch
Untuk informasi lebih lanjut tentang cara mengkueri data di konsol OpenSearch, lihat Tes Kueri.
Gunakan SDK untuk melakukan tes kueri
Contoh Permintaan Kueri: Untuk informasi lebih lanjut, lihat bagian Kueri Berbasis Prediksi dari topik "Kueri Data".
Contoh Hasil:
{
"totalCount": 5,
"result": [
{
"id": 5,
"score": 1.103209137916565
},
{
"id": 3,
"score": 1.1278988122940064
},
{
"id": 2,
"score": 1.1326735019683838
}
],
"totalTime": 242.615
}result: Hasil yang dikembalikan.
Sintaksis
Untuk informasi lebih lanjut tentang sintaksis untuk kueri berbasis prediksi, lihat bagian Kueri Berbasis Vektorisasi Gambar dari topik "Kueri Berbasis Prediksi".
Untuk informasi lebih lanjut tentang sintaksis untuk kueri berbasis kunci utama, lihat Kueri Berbasis Kunci Utama.
Untuk informasi lebih lanjut tentang sintaksis untuk ekspresi filter, lihat Ekspresi Filter.
Gunakan SDK untuk melakukan kueri berbasis vektor
Gunakan SDK untuk melakukan kueri berbasis vektor atau kueri berbasis kunci utama. Untuk informasi lebih lanjut, lihat Kueri Data.
Gunakan SDK untuk menambah atau menghapus dokumen. Untuk informasi lebih lanjut, lihat Perbarui Data.