Pencarian vektor OSS memungkinkan Anda menemukan file objek dengan cepat dari sejumlah besar objek berdasarkan kriteria seperti konten semantik, metadata OSS, metadata multimedia, ETag, tag objek, dan metadata kustom. Fitur ini meningkatkan efisiensi pencarian.
Skenario
Skenario kantor pribadi dan perusahaan
Pencarian vektor memungkinkan pencarian file kantor secara langsung berdasarkan konten semantik tertentu. Sebagai contoh, Anda dapat mencari kata kunci seperti "penggunaan sistem ERP," "proses perbaikan IT," atau "analisis kinerja bisnis 2024." Hal ini menyederhanakan pencarian file dan meningkatkan efisiensi operasional kantor.
Skenario media sosial multimedia
Dalam skenario media sosial multimedia, fitur pencarian dapat digunakan untuk memberikan kemampuan pencarian konten spesifik dan data multimedia kepada pengguna. Sebagai contoh, dalam aplikasi media sosial tempat pengguna mengunggah sejumlah besar data citra, pencarian semantik memungkinkan pengguna mencari gambar berdasarkan kontennya. Mereka dapat mencari foto dengan deskripsi seperti "berlibur musim semi di pinggiran kota," "reuni Tahun Baru Imlek," atau "laut yang pernah saya lihat." Ini menambah nilai praktis dan keseruan pada aplikasi tersebut.
Skenario Cloud Drive
Sebagian besar drive cloud saat ini menawarkan pencarian file berdasarkan pengambilan skalar, yang memungkinkan pencarian berdasarkan nama file, waktu pembuatan, atau ekstensi file. Dalam skenario drive cloud pribadi atau perusahaan, fitur pencarian vektor dapat digunakan untuk mencari konten spesifik, seperti dokumen terkait atau foto dalam album.
Skema pengawasan video
Untuk data pengawasan video, perusahaan dapat menggunakan fitur pencarian vektor untuk mencari file tertentu di antara data pemantauan. Sebagai contoh, Anda dapat memasukkan kata kunci seperti "pengawasan luar ruangan pada hari bersalju" atau "kebun buah pada hari cerah" untuk mengambil file yang sesuai.
Batasan
-
Batasan Wilayah
Fitur pencarian vektor tersedia untuk bucket di Wilayah China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hangzhou), China (Shanghai), China (Shenzhen), China (Guangzhou), China (Chengdu), China (Hong Kong), Singapura, Indonesia (Jakarta), dan Jerman (Frankfurt).
CatatanPencarian audio saat ini tidak didukung di wilayah China (Hong Kong), Singapura, Indonesia (Jakarta), dan Jerman (Frankfurt).
-
Batasan Bucket
Bucket dengan fitur pencarian vektor yang diaktifkan dapat berisi maksimal 5 miliar file. Jika jumlah file dalam bucket melebihi 5 miliar, kinerja pencarian mungkin menurun. Untuk memproses data dalam jumlah lebih besar, hubungi Dukungan Teknis untuk evaluasi.
-
Unggah multipart
Untuk objek yang dibuat menggunakan unggah multi-bagian, hasil pencarian hanya menampilkan objek lengkap yang telah dirakit dari bagian-bagian menggunakan operasi CompleteMultipartUpload. Hasil tersebut tidak menampilkan bagian dari unggahan yang telah dimulai tetapi belum selesai atau dibatalkan.
Referensi Performa
Metric performa berikut untuk mode Pencarian vektor OSS hanya untuk referensi.
Bandwidth internal dan QPS yang disediakan oleh OSS
Bandwidth internal dan permintaan per detik (QPS) dapat memproses 1.250 permintaan file per detik. Kapasitas ini diberikan sebagai tambahan dari mode Pencarian vektor dan tidak mengonsumsi Quality of Service (QoS) bucket Anda.
Wilayah
Bandwidth internal
QPS Default
Cina (Beijing), Cina (Hangzhou), Cina (Shanghai), dan Cina (Shenzhen)
10 Gbps
1.250
Wilayah lainnya
1 Gbps
1.250
Referensi waktu pembuatan indeks file yang ada
Selama pembuatan indeks untuk mode Pencarian vektor, biaya permintaan dikenakan untuk panggilan API seperti List, Head, dan Get. Selain itu, pembuatan indeks untuk file video, audio, dan dokumen membutuhkan waktu lebih lama dibandingkan dengan file citra. Anda harus memperkirakan jumlah file sebelum menggunakan fitur ini.
Jika bucket berisi terutama data terstruktur dan file citra:
10 juta file dalam satu bucket: 2 hingga 3 jam
100 juta file dalam satu bucket: 1 hari
1 miliar file dalam satu bucket: sekitar 10 hari
Jika bucket berisi terutama file video, dokumen, dan audio:
10 juta file dalam satu bucket: sekitar 2 hingga 3 hari
100 juta file dalam satu bucket: sekitar 7 hingga 9 hari
Referensi waktu pembaruan indeks file tambahan
Ketika QPS untuk file baru, dimodifikasi, atau dihapus dalam bucket lebih rendah dari nilai default 1.250, latensi antara unggah atau modifikasi file dan saat file menjadi dapat dicari biasanya beberapa menit hingga beberapa jam. Jika QPS melebihi nilai default 1.250, Anda dapat menghubungi Technical Support. Kami akan mengevaluasi situasi dan memberikan dukungan teknis.
Performa tanggapan pencarian file
Hasil pencarian dikembalikan dalam hitungan detik. Timeout default adalah 30 detik.
Aktifkan pencarian vektor
Gunakan Konsol OSS
Masuk ke Konsol OSS.
Klik Buckets, lalu pilih nama bucket target.
Di panel navigasi sebelah kiri, pilih .
Pada halaman Data Indexing, jika Anda menggunakan fitur pengindeksan data untuk pertama kalinya, ikuti petunjuk untuk memberikan izin kepada peran AliyunMetaQueryDefaultRole. Ini memungkinkan layanan OSS mengelola data di bucket. Setelah memberikan izin, klik Enable Data Indexing.
Pilih Vector Search dan klik Enable.
CatatanProses pembuatan indeks metadata memerlukan waktu. Durasi tergantung pada jumlah objek dalam bucket. Jika proses ini memakan waktu terlalu lama, Anda dapat menyegarkan halaman untuk memeriksa status aktifnya.
Gunakan SDK Alibaba Cloud
Java
Hanya Java SDK versi 3.18.2 dan yang lebih baru yang mendukung fitur Pencarian Vektor. Untuk informasi lebih lanjut, lihat Pencarian Vektor (Java SDK).
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.MetaQueryMode;
public class OpenMetaQuery {
public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
// Tentukan endpoint wilayah. Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah bucket. Dalam contoh ini, wilayah China (Hangzhou) digunakan. Atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Saat instance OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Aktifkan AISearch.
ossClient.openMetaQuery(bucketName, MetaQueryMode.SEMANTIC);
} catch (OSSException oe) {
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Pesan Kesalahan: " + ce.getMessage());
} finally {
// Matikan instance OSSClient.
if(ossClient != null){
ossClient.shutdown();
}
}
}
}
Python
Untuk informasi lebih lanjut, lihat Pencarian Vektor.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah dan tambahkan deskripsi.
parser = argparse.ArgumentParser(description="contoh open meta query")
# Tambahkan argumen baris perintah --region yang diperlukan untuk menentukan wilayah tempat bucket berada.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket yang diperlukan untuk menentukan nama bucket yang akan dioperasikan.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tambahkan argumen baris perintah opsional --endpoint untuk menentukan nama domain yang digunakan untuk mengakses OSS.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
def main():
# Parsing argumen baris perintah.
args = parser.parse_args()
# Muat informasi autentikasi dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default yang disediakan oleh SDK.
cfg = oss.config.load_default()
# Tetapkan penyedia informasi autentikasi.
cfg.credentials_provider = credentials_provider
# Tetapkan wilayah berdasarkan argumen baris perintah.
cfg.region = args.region
# Jika endpoint diberikan, perbarui endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS.
client = oss.Client(cfg)
# Bangun OpenMetaQueryRequest untuk mengaktifkan fitur AISearch untuk bucket.
result = client.open_meta_query(oss.OpenMetaQueryRequest(
bucket=args.bucket,
mode='semantic',# Atur ke "semantic" untuk memilih AISearch.
))
# Cetak kode status dan ID permintaan dari permintaan.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
)
# Panggil fungsi utama saat dijalankan sebagai program utama.
if __name__ == "__main__":
main()
Go
Untuk informasi lebih lanjut, lihat Pencarian Vektor (Go SDK V2).
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string
bucketName string
)
// Fungsi init dieksekusi sebelum fungsi utama untuk menginisialisasi program.
func init() {
// Gunakan parameter baris perintah untuk menentukan wilayah.
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
// Gunakan parameter baris perintah untuk menentukan nama bucket.
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse() // Parsing parameter baris perintah.
// Periksa apakah nama bucket ditentukan. Jika nama bucket tidak ditentukan, kembalikan parameter default dan keluar dari program.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah ditentukan. Jika wilayah tidak ditentukan, kembalikan parameter default dan keluar dari program.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Buat dan konfigurasikan klien dan gunakan variabel lingkungan untuk meneruskan penyedia kredensial.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Gunakan konfigurasi klien untuk membuat instance OSSClient baru.
// Buat permintaan OpenMetaQuery untuk mengaktifkan AISearch untuk bucket tertentu.
request := &oss.OpenMetaQueryRequest{
Bucket: oss.Ptr(bucketName),
Mode: oss.Ptr("semantic"), // Atur Mode ke semantic, yang menentukan bahwa AISearch diaktifkan.
}
result, err := client.OpenMetaQuery(context.TODO(), request)
if err != nil {
log.Fatalf("gagal membuka meta query %v", err)
}
log.Printf("hasil meta query terbuka:%#v\n", result) // Tampilkan hasil permintaan.
}
PHP
Untuk informasi lebih lanjut, lihat Pencarian Vektor (PHP SDK V2).
<?php
// Sertakan file autoload untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Definisikan dan jelaskan parameter baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Wilayah tempat bucket berada.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Endpoint yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Nama bucket.
];
// Konversi deskripsi menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan untuk parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Keluar dari program jika parameter yang diperlukan hilang.
}
}
// Tetapkan nilai yang diurai dari parameter baris perintah ke variabel yang sesuai.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat kredensial akses dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk mengambil ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan endpoint jika ada yang diberikan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Aktifkan fitur AISearch.
$request = new Oss\Models\OpenMetaQueryRequest($bucket,'semantic');
$result = $client->openMetaQuery($request);
printf(
'kode status:' . $result->statusCode . PHP_EOL .
'ID permintaan:' . $result->requestId
);Gunakan ossutil
Berikut adalah contoh cara mengaktifkan fitur Pencarian Vektor untuk bucket bernama examplebucket. Perintahnya adalah sebagai berikut:
ossutil api open-meta-query --bucket examplebucket --meta-query-mode semanticUntuk informasi lebih lanjut tentang perintah ini, lihat open-meta-query.
Memulai pencarian vektor
Menggunakan Konsol OSS
Berikut adalah contoh cara mencari file yang berisi "gedung bercahaya", dalam format JPG, dengan lebar dan tinggi dalam rentang 800 × 1200 piksel. Hasil pencarian yang diharapkan adalah citra "Night view by the river.jpg", seperti yang ditunjukkan pada gambar berikut.

Masuk ke Konsol OSS.
Klik Buckets, lalu klik nama bucket target.
Di panel navigasi sebelah kiri, pilih .
Atur Search Criteria. Pertahankan pengaturan default untuk parameter lainnya.
Di bagian Semantic Content, masukkan deskripsi gambar, misalnya gedung bercahaya.

Untuk Multimedia Type, pilih Image.
Atur Image Format menjadi JPG/JPEG.
Atur Image Width menjadi kurang dari 800 px.
Atur Image Height menjadi kurang dari 1200 px.

Klik Search Now. Hasil pencarian sesuai dengan yang diharapkan. File berhasil ditemukan berdasarkan deskripsi fitur.

Untuk informasi lebih lanjut tentang kriteria pencarian lengkap dan pengaturan output, lihat Kriteria Pencarian dan Pengaturan Output.
Menggunakan SDK Alibaba Cloud
Java
Hanya Java SDK 3.18.2 dan versi terbaru yang mendukung fitur pencarian vektor. Untuk informasi lebih lanjut, lihat Pencarian Vektor (Java SDK).
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;
public class DoMetaQuery {
public static void main(String[] args) throws Exception {
// Tentukan endpoint wilayah. Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah bucket. Dalam contoh ini, wilayah China (Hangzhou) digunakan. Atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Saat instance OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
int maxResults = 20;
List mediaTypes = new ArrayList();
mediaTypes.add("image");
String query = "Snow";
String simpleQuery = "{\"Operation\":\"gt\", \"Field\": \"Size\", \"Value\": \"30\"}";
String sort = "Size";
DoMetaQueryRequest doMetaQueryRequest = new DoMetaQueryRequest(bucketName, maxResults, query, sort, MetaQueryMode.SEMANTIC, mediaTypes, simpleQuery);
DoMetaQueryResult doMetaQueryResult = ossClient.doMetaQuery(doMetaQueryRequest);
} catch (OSSException oe) {
System.out.println("Error Message: " + oe.getErrorMessage());
System.out.println("Error Code: " + oe.getErrorCode());
System.out.println("Request ID: " + oe.getRequestId());
System.out.println("Host ID: " + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Error Message: " + ce.getMessage());
} finally {
if(ossClient != null){
ossClient.shutdown();
}
}
}
}
Python
Untuk informasi lebih lanjut, lihat Pencarian Vektor.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah untuk memproses input baris perintah.
parser = argparse.ArgumentParser(description="do meta query semantic sample")
# Tambahkan argumen baris perintah yang diperlukan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True) # Wilayah tempat bucket berada.
parser.add_argument('--bucket', help='Nama bucket.', required=True) # Nama bucket.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS') # Nama domain OSS, opsional.
def main():
# Parsing argumen baris perintah.
args = parser.parse_args()
# Muat kredensial akses dari variabel lingkungan.
# Sebelum menjalankan, Anda harus menyetel variabel lingkungan: OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default SDK.
cfg = oss.config.load_default()
# Setel penyedia kredensial.
cfg.credentials_provider = credentials_provider
# Setel wilayah.
cfg.region = args.region
# Jika endpoint disediakan, perbarui endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat instance klien OSS.
client = oss.Client(cfg)
# Mulai permintaan kueri metadata dalam mode AISearch.
result = client.do_meta_query(oss.DoMetaQueryRequest(
bucket=args.bucket,
mode='semantic',
meta_query=oss.MetaQuery(
max_results=1000,
query='Pemandangan udara hutan bersalju',
order='desc',
media_types=oss.MetaQueryMediaTypes(
media_type=['image']
),
simple_query='{"Operation":"gt", "Field": "Size", "Value": "30"}',
),
))
# Cetak hasil pengambilan.
print(vars(result))
if __name__ == "__main__":
main()
Go
Untuk informasi lebih lanjut, lihat Pencarian Vektor (Go SDK V2).
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string
bucketName string
)
func init() {
// Gunakan parameter baris perintah untuk menentukan wilayah. Secara default, parameternya adalah string kosong.
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
// Gunakan parameter baris perintah untuk menentukan nama bucket. Secara default, parameternya adalah string kosong.
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse() // Parsing parameter baris perintah.
// Periksa apakah nama bucket ditentukan. Jika nama bucket tidak ditentukan, kembalikan parameter default dan keluar dari program.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah ditentukan. Jika wilayah tidak ditentukan, kembalikan parameter default dan keluar dari program.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Buat dan konfigurasikan klien dan gunakan variabel lingkungan untuk menyampaikan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Gunakan konfigurasi klien untuk membuat instance OSSClient baru.
// Lakukan AISearch untuk menanyakan objek yang memenuhi kondisi semantik tertentu.
request := &oss.DoMetaQueryRequest{
Bucket: oss.Ptr(bucketName),
Mode: oss.Ptr("semantic"),
MetaQuery: &oss.MetaQuery{
MaxResults: oss.Ptr(int64(99)),
Query: oss.Ptr("Melihat hutan bersalju dari atas"), // Tentukan konten semantik.
MediaType: oss.Ptr("image"), // Tentukan tipe media yang akan ditanyakan. Dalam contoh ini, tipe media diatur ke image.
SimpleQuery: oss.Ptr(`{"Operation":"gt", "Field": "Size", "Value": "30"}`),
},
}
result, err := client.DoMetaQuery(context.TODO(), request)
if err != nil {
log.Fatalf("gagal melakukan meta query %v", err)
}
log.Printf("hasil meta query:%#v\n", result)
}
PHP
Untuk informasi lebih lanjut, lihat Pencarian Vektor (PHP SDK V2).
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Definisikan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];
// Ubah deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Setel penyedia kredensial.
$cfg->setRegion($region); // Setel wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika endpoint disediakan, setel endpoint.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Lakukan kueri AISearch untuk objek yang memenuhi kondisi tertentu.
$request = new Oss\Models\DoMetaQueryRequest($bucket, new Oss\Models\MetaQuery(
maxResults: 99,
query: "Melihat hutan bersalju dari atas",
mediaTypes: new Oss\Models\MetaQueryMediaTypes('image'),
simpleQuery: '{"Operation":"gt", "Field": "Size", "Value": "30"}',
), 'semantic');
$result = $client->doMetaQuery($request);
printf(
'status code:' . $result->statusCode . PHP_EOL .
'request id:' . $result->requestId . PHP_EOL .
'result:' . var_export($result, true)
);Menggunakan ossutil
Berikut adalah contoh cara menanyakan file yang memenuhi kondisi tertentu di bucket bernama examplebucket.
ossutil api do-meta-query --bucket examplebucket --meta-query "{\"Query\":\"Overlooking the snow covered forest\",\"MediaTypes\":{\"MediaType\":\"image\"},\"SimpleQuery\":\"{\\\"Operation\\\":\\\"gt\\\", \\\"Field\\\": \\\"Size\\\", \\\"Value\\\": \\\"1\\\"}\"}" --meta-query-mode semanticUntuk informasi lebih lanjut tentang perintah ini, lihat do-meta-query.
Nonaktifkan pencarian vektor
Menonaktifkan fitur ini tidak memengaruhi data yang sudah tersimpan di OSS. Jika Anda mengaktifkannya kembali di kemudian waktu, sistem akan memindai ulang file yang ada dan membangun kembali indeks. Proses ini memerlukan waktu, tergantung pada jumlah file.
Penagihan akan berhenti dalam satu jam setelah fitur dinonaktifkan. Namun, mungkin ada penundaan dalam pembuatan tagihan. Oleh karena itu, Anda disarankan untuk memantau tagihan Anda.
Gunakan Konsol OSS
Masuk ke Konsol OSS. Di halaman Pengindeksan Data, klik Disable di bagian Pencarian Vektor dan konfirmasi aksi sesuai petunjuk.

Gunakan Alibaba Cloud SDK
Java
Hanya Java SDK 3.18.2 dan versi lebih baru yang mendukung fitur Pencarian Vektor. Untuk informasi lebih lanjut, lihat Pencarian Vektor (Java SDK).
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class CloseMetaQuery {
public static void main(String[] args) throws Exception {
// Tentukan endpoint wilayah. Dalam contoh ini, endpoint wilayah Cina (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah bucket. Dalam contoh ini, wilayah Cina (Hangzhou) digunakan. Atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Saat instance OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepaskan sumber daya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Nonaktifkan AISearch untuk bucket.
ossClient.closeMetaQuery(bucketName);
} catch (OSSException oe) {
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Pesan Kesalahan: " + ce.getMessage());
} finally {
// Matikan instance OSSClient.
if(ossClient != null){
ossClient.shutdown();
}
}
}
}
Python
Untuk informasi lebih lanjut, lihat Pencarian Vektor.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah untuk memproses argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh close meta query")
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
def main():
# Parse argumen baris perintah.
args = parser.parse_args()
# Muat informasi kredensial dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default dari SDK.
cfg = oss.config.load_default()
# Setel penyedia kredensial ke kredensial yang diperoleh dari variabel lingkungan.
cfg.credentials_provider = credentials_provider
# Setel informasi wilayah dalam konfigurasi.
cfg.region = args.region
# Jika endpoint disediakan, setel endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS.
client = oss.Client(cfg)
# Panggil metode close_meta_query untuk menonaktifkan fitur pengambilan untuk bucket.
result = client.close_meta_query(oss.CloseMetaQueryRequest(
bucket=args.bucket,
))
# Cetak kode status dan ID permintaan dari tanggapan.
print(f'kode status: {result.status_code}, id permintaan: {result.request_id}')
# Jalankan fungsi utama saat skrip ini dijalankan langsung.
if __name__ == "__main__":
main()
Go
Untuk informasi lebih lanjut, lihat Pencarian Vektor (Go SDK V2).
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string
bucketName string
)
func init() {
// Gunakan parameter baris perintah untuk menentukan wilayah.
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
// Gunakan parameter baris perintah untuk menentukan nama bucket.
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse() // Parse parameter baris perintah.
// Periksa apakah nama bucket ditentukan. Jika nama bucket tidak ditentukan, kembalikan parameter default dan keluar dari program.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan") // Catat kesalahan dan keluar dari program.
}
// Periksa apakah wilayah ditentukan. Jika wilayah tidak ditentukan, kembalikan parameter default dan keluar dari program.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Buat dan konfigurasikan klien dan gunakan variabel lingkungan untuk menyampaikan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Buat instance OSSClient baru.
// Buat permintaan CloseMetaQuery untuk menonaktifkan fitur manajemen metadata untuk bucket tertentu.
request := &oss.CloseMetaQueryRequest{
Bucket: oss.Ptr(bucketName), // Tentukan nama bucket.
}
result, err := client.CloseMetaQuery(context.TODO(), request) // Eksekusi permintaan untuk menonaktifkan fitur manajemen metadata untuk bucket.
if err != nil {
log.Fatalf("gagal menutup meta query %v", err)
}
log.Printf("hasil meta query tutup:%#v\n", result)
}PHP
Untuk informasi lebih lanjut, lihat Pencarian Vektor (PHP SDK V2).
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Definisikan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];
// Konversi deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parse argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan dari argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang telah di-parse.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Setel penyedia kredensial.
$cfg->setRegion($region); // Setel wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika endpoint disediakan, setel endpoint.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek CloseMetaQueryRequest untuk menonaktifkan fitur pengambilan untuk bucket.
$request = new \AlibabaCloud\Oss\V2\Models\CloseMetaQueryRequest(
bucket: $bucket
);
// Eksekusi operasi untuk menonaktifkan fitur pengambilan.
$result = $client->closeMetaQuery($request);
// Cetak hasil dari menonaktifkan fitur pengambilan.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan bahwa permintaan berhasil.
'id permintaan:' . $result->requestId . PHP_EOL // ID permintaan, yang digunakan untuk debugging atau pelacakan permintaan.
);
Gunakan ossutil
Berikut adalah contoh perintah untuk menonaktifkan fitur manajemen metadata untuk bucket examplebucket:
ossutil api close-meta-query --bucket examplebucketUntuk informasi lebih lanjut tentang perintah ini, lihat close-meta-query.
Kriteria pencarian dan pengaturan output
Pengaturan kriteria pencarian
Berikut adalah kriteria pencarian lengkap. Anda dapat menetapkan satu atau lebih kriteria sesuai kebutuhan.
Pengaturan output hasil
Setelah menetapkan "Kriteria pencarian konten semantik", Anda tidak dapat menentukan metode pengurutan atau agregasi data.
Anda dapat mengurutkan dan melakukan statistik sederhana pada hasil output.
Object Sorting Method: Anda dapat mengurutkan hasil berdasarkan waktu modifikasi terakhir, nama file, atau ukuran file dalam urutan naik atau turun. Urutkan hasil pencarian sesuai kebutuhan untuk menemukan file dengan cepat.
Data Aggregation: Anda dapat melakukan perhitungan pada hasil pencarian, seperti menghitung nilai unik, menghitung berdasarkan kelompok, serta menentukan nilai maksimum, minimum, rata-rata, dan jumlah. Ini memungkinkan analisis dan manajemen data yang efisien.
Operasi API terkait
Operasi sebelumnya didasarkan pada Operasi API. Jika program Anda memiliki persyaratan yang sangat spesifik, Anda dapat langsung memanggil REST API. Untuk memanggil REST API secara langsung, Anda perlu menulis kode secara manual untuk menghitung tanda tangan.
Untuk informasi lebih lanjut tentang cara mengaktifkan fitur manajemen metadata, lihat OpenMetaQuery.
Untuk informasi lebih lanjut tentang cara menanyakan file yang memenuhi kondisi tertentu, lihat DoMetaQuery.
Untuk informasi lebih lanjut tentang cara menonaktifkan fitur manajemen metadata, lihat CloseMetaQuery.
Penagihan
Biaya pencarian vektor terdiri dari dua komponen berikut:
Biaya fitur pencarian vektor (gratis selama pratinjau publik)
Komponen ini mencakup biaya manajemen metadata objek. Fitur ini saat ini dalam tahap pratinjau publik dan tidak dikenakan biaya. Penagihan resmi akan dimulai setelah periode pratinjau publik berakhir pada 25 Agustus 2025. Setelah itu, Anda akan dikenakan biaya sesuai dengan tarif pengindeksan data OSS. Untuk informasi lebih lanjut, lihat Biaya pengindeksan data.
Biaya permintaan API
Biaya permintaan API timbul selama pembuatan indeks untuk file yang ada dan pembaruan indeks untuk file tambahan. Anda akan dikenakan biaya berdasarkan jumlah panggilan API. Permintaan API yang relevan meliputi:
Perilaku
API
Membuat indeks untuk file di bucket
HeadObject dan GetObject
Bucket berisi file dengan tag
GetObjectTag
Bucket berisi file dengan metadata kustom
GetObjectMeta
Bucket berisi file tautan simbolik
GetSymlink
Memindai file di bucket
ListObjects
Untuk detail lebih lanjut mengenai biaya permintaan API OSS, lihat Biaya permintaan.
Jika Anda ingin menghentikan biaya ini, Anda harus menonaktifkan pencarian vektor.
FAQ
Mengapa saya tidak dapat menemukan file segera setelah diunggah?
Setelah file diunggah, diperlukan waktu untuk membuat indeksnya. Akibatnya, ada penundaan sebelum file muncul dalam hasil pencarian. Anda mungkin tidak dapat menemukannya secara langsung. Silakan tunggu beberapa saat dan coba lagi.