全部产品
Search
文档中心

OpenSearch:Bangun solusi pencarian gambar ujung ke ujung

更新时间:Jul 02, 2025

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

image_409b3ae0cc76

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

image_409ce896ccx9

  1. Mulai Menggunakan Konsol OSS.

  2. Mulai Menggunakan Konsol OSS.

  3. Mulai Menggunakan Konsol OSS.

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

image

Dalam contoh ini, 1.000 gambar diunggah ke bucket OSS.

Gambar berikut menunjukkan beberapa gambar yang telah diunggah.

image_409d84d0cc9c

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.

image.png

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

image.png

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.

  1. 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.

image

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.

Catatan
  • 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".

  1. Di langkah Konfigurasi Bidang, konfigurasikan bidang untuk tabel dan klik Berikutnya.

image.png

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.

image.png

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

image

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.

Penting

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.

image.png

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.

image.png

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

image.png

  • 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.

image.png

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

image.png

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.

Catatan

Dimensi default vektor yang dihasilkan dari gambar adalah 512 dan tidak dapat dimodifikasi.

  1. Setelah Anda menyelesaikan konfigurasi, klik Konfirmasi.

image.png

  1. 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

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.