Pencarian vektor OSS membantu Anda menemukan file tertentu dalam dataset besar berdasarkan kriteria seperti konten semantik, metadata OSS, metadata multimedia, ETag objek, tag, dan metadata kustom.
Kasus penggunaan
Skenario kantor pribadi dan perusahaan
Pencarian vektor memungkinkan Anda mencari file kantor berdasarkan konten semantiknya. Misalnya, Anda dapat mencari frasa seperti "cara menggunakan sistem ERP", "proses perbaikan IT", atau "analisis kinerja bisnis 2024". Fitur ini menyederhanakan pencarian file dan meningkatkan efisiensi kerja.
Skenario media sosial multimedia
Dalam aplikasi media sosial multimedia, pencarian vektor membantu pengguna menemukan konten dan data multimedia tertentu. Misalnya, pada platform tempat pengguna mengunggah banyak gambar, pencarian semantik memungkinkan mereka menemukan foto berdasarkan isinya, seperti "jalan-jalan musim semi di pinggiran kota", "reuni Tahun Baru Imlek", atau "laut yang pernah saya lihat". Hal ini meningkatkan nilai praktis dan pengalaman pengguna aplikasi Anda.
Skenario cloud drive
Pencarian vektor meningkatkan cloud drive pribadi atau perusahaan dengan memungkinkan pencarian file berdasarkan kontennya, seperti dokumen atau foto tertentu dalam album.
Skenario pengawasan video
Anda dapat menggunakan pencarian vektor untuk menemukan file video tertentu dari data pengawasan video Anda. Misalnya, dengan memasukkan kata kunci seperti "pengawasan luar ruangan saat hari bersalju" atau "kebun buah saat hari cerah", Anda dapat mengambil file yang sesuai.
Batasan
Ketersediaan wilayah
Fitur pencarian vektor tersedia untuk bucket di wilayah Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Shenzhen), Tiongkok (Guangzhou), Tiongkok (Chengdu), Tiongkok (Hong Kong), Singapura, Indonesia (Jakarta), dan Jerman (Frankfurt).
CatatanPencarian audio tidak didukung di wilayah Tiongkok (Hong Kong), Singapura, Indonesia (Jakarta), dan Jerman (Frankfurt).
Batasan bucket
Bucket yang telah diaktifkan fitur pencarian vektor dapat berisi maksimal 5 miliar file. Jika jumlah file dalam bucket melebihi batas ini, performa pencarian mungkin menurun. Untuk memproses volume data yang lebih besar, hubungi Technical Support untuk evaluasi.
Unggah multi-bagian
Saat Anda menggunakan unggah multi-bagian, hasil pencarian hanya mencakup objek yang telah sepenuhnya dirakit melalui operasi CompleteMultipartUpload. Hasil tersebut tidak mencakup bagian dari unggahan yang telah dimulai tetapi belum diselesaikan atau dibatalkan.
Referensi performa
Metrik performa berikut untuk OSS vector search disediakan sebagai referensi.
Bandwidth internal dan QPS yang disediakan oleh OSS
OSS menyediakan bandwidth internal dan permintaan per detik (QPS) khusus untuk pencarian vektor. Kapasitas ini, yang menangani hingga 1.250 permintaan file per detik, tidak mengonsumsi kuota quality of service (QoS) bucket Anda.
Wilayah
Internal Bandwidth
Default QPS
Tiongkok (Beijing), Tiongkok (Hangzhou), Tiongkok (Shanghai), dan Tiongkok (Shenzhen)
10 Gbps
1250
Wilayah lainnya
1 Gbps
1250
Perkiraan waktu pengindeksan file yang sudah ada
Pencarian vektor dikenai biaya permintaan API untuk operasi seperti List, Head, dan Get selama pembuatan indeks. Untuk informasi lebih lanjut, lihat Biaya permintaan API. Selain itu, pengindeksan file video, audio, dan dokumen memerlukan waktu lebih lama dibandingkan pengindeksan file gambar. Kami menyarankan Anda memperkirakan jumlah file sebelum mengaktifkan fitur ini.
Jika bucket terutama berisi data terstruktur dan file gambar:
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 terutama berisi 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
Perkiraan waktu pembaruan indeks untuk file tambahan
Saat QPS untuk file baru, dimodifikasi, atau dihapus dalam bucket lebih rendah dari nilai default 1.250, file biasanya dapat dicari dalam hitungan menit hingga jam setelah diunggah atau dimodifikasi. Jika QPS Anda melebihi nilai default, hubungi Technical Support. Kami akan mengevaluasi situasi Anda dan memberikan bantuan.
Performa respons pencarian file
Pencarian mengembalikan hasil dalam hitungan detik. Waktu timeout default adalah 30 detik.
Aktifkan pencarian vektor
Konsol OSS
Masuk ke Konsol OSS.
Klik Buckets, lalu klik nama bucket target.
Di panel navigasi kiri, pilih .
Pada halaman Data Indexing, jika Anda pertama kali menggunakan fitur pengindeksan data, ikuti petunjuk di layar untuk memberikan izin kepada role AliyunMetaQueryDefaultRole. Hal ini memungkinkan OSS mengelola data dalam bucket. Setelah memberikan izin, klik Enable Data Indexing.
Pilih Vector Search dan klik Enable.
CatatanPembuatan indeks metadata memerlukan waktu. Durasi tergantung pada jumlah objek dalam bucket. Jika proses berlangsung lama, Anda dapat merefresh halaman untuk memeriksa statusnya.
Alibaba Cloud SDK
Java
Hanya Java SDK versi 3.18.2 ke atas yang mendukung pencarian vektor. Untuk informasi lebih lanjut, lihat Pencarian vektor (Java SDK V1).
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 {
// Titik akhir diatur ke Tiongkok (Hangzhou) dalam contoh ini. Ganti dengan titik akhir aktual.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket, misalnya examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada. Contoh ini menggunakan cn-hangzhou, yang menunjukkan wilayah Tiongkok (Hangzhou).
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Saat instance OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Aktifkan fitur pencarian vektor.
ossClient.openMetaQuery(bucketName, MetaQueryMode.SEMANTIC);
} 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 {
// Matikan 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="open meta query sample")
# Tambahkan argumen baris perintah wajib --region untuk menentukan wilayah tempat bucket berada.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# Tambahkan argumen baris perintah wajib --bucket untuk menentukan nama bucket yang akan dioperasikan.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# Tambahkan argumen baris perintah opsional --endpoint untuk menentukan nama domain yang digunakan untuk mengakses OSS.
parser.add_argument('--endpoint', help='The domain names that other services can use to access 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()
# Atur penyedia informasi autentikasi.
cfg.credentials_provider = credentials_provider
# Atur wilayah berdasarkan argumen baris perintah.
cfg.region = args.region
# Jika endpoint disediakan, 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 pada 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'status code: {result.status_code},'
f' request id: {result.request_id},'
)
# Panggil fungsi main 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
)
func init() {
// Atur flag baris perintah untuk menentukan wilayah.
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
// Atur flag baris perintah untuk menentukan nama bucket.
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
// Periksa apakah nama bucket disediakan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah disediakan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Buat konfigurasi klien dan gunakan kredensial dari variabel lingkungan.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Buat klien OSS.
// Buat permintaan untuk mengaktifkan AISearch pada bucket yang ditentukan.
request := &oss.OpenMetaQueryRequest{
Bucket: oss.Ptr(bucketName),
Mode: oss.Ptr("semantic"), // Atur mode ke "semantic" untuk mengaktifkan kemampuan pencarian semantik.
}
result, err := client.OpenMetaQuery(context.TODO(), request)
if err != nil {
log.Fatalf("failed to open meta query %v", err)
}
log.Printf("open meta query result:%#v\n", result)
}
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' => 'The region in which the bucket is located.', 'required' => True], // (Wajib) Wilayah tempat bucket berada.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // (Opsional) Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // (Wajib) Nama bucket.
];
// Konversi deskripsi menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan tanda 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 wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan untuk parameter.
echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
exit(1); // Keluar dari program jika parameter wajib tidak ada.
}
}
// Tetapkan nilai yang di-parse 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 titik akhir jika disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Aktifkan fitur AISearch.
$request = new Oss\Models\OpenMetaQueryRequest($bucket,'semantic');
$result = $client->openMetaQuery($request);
printf(
'status code:' . $result->statusCode . PHP_EOL .
'request id:' . $result->requestId
);ossutil
Perintah berikut memberikan contoh cara mengaktifkan pencarian vektor untuk bucket bernama examplebucket:
ossutil api open-meta-query --bucket examplebucket --meta-query-mode semanticUntuk informasi lebih lanjut tentang cara menggunakan ossutil untuk melakukan pencarian vektor, lihat open-meta-query.
Lakukan pencarian vektor
Konsol OSS
Bagian ini memberikan contoh cara mencari file yang berisi "bangunan bercahaya", berformat JPG, dan memiliki dimensi dalam rentang 800 × 1.200 piksel. Hasil pencarian yang diharapkan adalah gambar "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 kiri, pilih .
Atur Search Criteria. Biarkan pengaturan default untuk parameter lainnya.
Pada bagian Semantic Content, masukkan deskripsi gambar, misalnya glowing buildings.

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

Klik Search Now. Hasil pencarian sesuai harapan. File berhasil ditemukan berdasarkan deskripsi fiturnya.

Untuk informasi tentang semua kriteria pencarian dan pengaturan output, lihat Kriteria pencarian dan pengaturan output.
Alibaba Cloud SDK
Java
Hanya Java SDK versi 3.18.2 ke atas yang mendukung pencarian vektor. Untuk informasi lebih lanjut, lihat Pencarian vektor (Java SDK V1).
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 {
// Titik akhir diatur ke Tiongkok (Hangzhou) dalam contoh ini. Ganti dengan titik akhir aktual.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket, misalnya examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada. Contoh ini menggunakan cn-hangzhou, yang menunjukkan wilayah Tiongkok (Hangzhou).
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Saat instance OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
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<String> mediaTypes = new ArrayList<String>();
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():
# Uraikan argumen baris perintah.
args = parser.parse_args()
# Muat kredensial akses dari variabel lingkungan.
# Sebelum menjalankan, Anda perlu mengatur variabel lingkungan: OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi SDK default.
cfg = oss.config.load_default()
# Atur penyedia kredensial.
cfg.credentials_provider = credentials_provider
# Atur wilayah.
cfg.region = args.region
# Jika endpoint disediakan, perbarui endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat instans 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 yang tertutup salju',
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() {
// Atur flag baris perintah untuk menentukan wilayah.
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
// Atur flag baris perintah untuk menentukan nama bucket.
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
// Periksa apakah nama bucket disediakan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah disediakan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Buat konfigurasi klien dan gunakan kredensial dari variabel lingkungan dan wilayah yang ditentukan.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Buat klien OSS.
// Lakukan operasi AISearch.
request := &oss.DoMetaQueryRequest{
Bucket: oss.Ptr(bucketName),
Mode: oss.Ptr("semantic"),
MetaQuery: &oss.MetaQuery{
MaxResults: oss.Ptr(int64(99)),
Query: oss.Ptr("Overlook the snow-covered forest"), // Berikan string kueri semantik. Ini adalah contoh.
MediaTypes: &oss.MetaQueryMediaTypes{
MediaTypes: []string{"image"}, // Tentukan jenis media yang akan dicari. Dalam contoh ini, "image".
},
SimpleQuery: oss.Ptr(`{"Operation":"gt", "Field": "Size", "Value": "30"}`),
},
}
result, err := client.DoMetaQuery(context.TODO(), request)
if err != nil {
log.Fatalf("failed to do meta query %v", err)
}
log.Printf("do meta query result:%#v\n", result)
}
PHP
Untuk informasi lebih lanjut, lihat Pencarian vektor (PHP SDK V2).
<?php
// Impor file autoloader untuk memastikan 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' => 'The region in which the bucket is located.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'The name of the 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 memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen wajib ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan argumen.
echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen wajib tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang di-parse.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID Access Key dan Rahasia Access Key dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, atur titik akhir.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Lakukan kueri AISearch untuk objek yang memenuhi kondisi yang ditentukan.
$request = new Oss\Models\DoMetaQueryRequest($bucket, new Oss\Models\MetaQuery(
maxResults: 99,
query: "Overlook the snow-covered forest",
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)
);ossutil
Perintah berikut memberikan contoh cara mengkueri file yang memenuhi kondisi tertentu dalam 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 disimpan di OSS. Jika Anda mengaktifkan kembali fitur ini, sistem akan memindai ulang file yang ada dan membangun kembali indeks. Proses ini memerlukan waktu, tergantung pada jumlah file Anda.
Penagihan berhenti pada jam setelah fitur dinonaktifkan. Namun, mungkin terjadi penundaan dalam pembuatan tagihan. Pantau tagihan Anda untuk informasi terbaru.
Konsol OSS
Masuk ke Konsol OSS. Pada halaman Data Indexing, klik Disable di samping Vector Search dan konfirmasi tindakan sesuai petunjuk.

Alibaba Cloud SDK
Java
Hanya Java SDK versi 3.18.2 ke atas yang mendukung pencarian vektor. Untuk informasi lebih lanjut, lihat Pencarian vektor (Java SDK V1).
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 {
// Titik akhir diatur ke Tiongkok (Hangzhou) dalam contoh ini. Ganti dengan titik akhir aktual.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket, misalnya examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada. Contoh ini menggunakan cn-hangzhou, yang menunjukkan wilayah Tiongkok (Hangzhou).
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Saat instance OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Nonaktifkan fitur pencarian vektor untuk bucket.
ossClient.closeMetaQuery(bucketName);
} 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 {
// Matikan 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="close meta query sample")
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
def main():
// Parsing argumen baris perintah.
args = parser.parse_args()
// Muat informasi kredensial dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
// Gunakan konfigurasi default SDK.
cfg = oss.config.load_default()
// Atur penyedia kredensial ke kredensial yang diperoleh dari variabel lingkungan.
cfg.credentials_provider = credentials_provider
// Atur informasi wilayah dalam konfigurasi.
cfg.region = args.region
// Jika titik akhir disediakan, atur titik akhir 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 respons.
print(f'status code: {result.status_code}, request id: {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() {
// Atur flag baris perintah untuk menentukan wilayah.
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
// Atur flag baris perintah untuk menentukan nama bucket.
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
flag.Parse()
// Periksa apakah nama bucket disediakan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Periksa apakah wilayah disediakan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Buat konfigurasi klien dan gunakan kredensial dari variabel lingkungan dan wilayah yang ditentukan.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Buat klien OSS.
// Buat permintaan untuk menonaktifkan AISearch pada bucket yang ditentukan.
request := &oss.CloseMetaQueryRequest{
Bucket: oss.Ptr(bucketName), // Tentukan bucket target.
}
result, err := client.CloseMetaQuery(context.TODO(), request)
if err != nil {
log.Fatalf("failed to close meta query %v", err)
}
log.Printf("close meta query result:%#v\n", result)
}PHP
Untuk informasi lebih lanjut, lihat Pencarian vektor (PHP SDK V2).
<?php
// Impor file autoloader untuk memastikan 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' => 'The region in which the bucket is located.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'The name of the 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 memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen wajib ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan argumen.
echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen wajib tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang di-parse.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID Access Key dan Rahasia Access Key dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, atur titik akhir.
}
// 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
);
// Jalankan operasi untuk menonaktifkan fitur pengambilan.
$result = $client->closeMetaQuery($request);
// Cetak hasil menonaktifkan fitur pengambilan.
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan permintaan berhasil.
'request id:' . $result->requestId . PHP_EOL // ID permintaan, digunakan untuk debugging atau pelacakan permintaan.
);
ossutil
Perintah berikut memberikan contoh cara menonaktifkan fitur pencarian vektor untuk bucket bernama examplebucket:
ossutil api close-meta-query --bucket examplebucketUntuk informasi lebih lanjut tentang perintah ini, lihat close-meta-query.
Kriteria pencarian dan pengaturan output
Kriteria pencarian
Berikut adalah semua kriteria pencarian yang tersedia. Anda dapat mengatur satu atau beberapa kriteria pencarian sesuai kebutuhan.
Pengaturan output hasil
Saat Anda mencari berdasarkan konten semantik, Anda tidak dapat menentukan metode pengurutan atau menggunakan agregasi data.
Anda dapat mengurutkan hasil output dan melakukan analisis statistik sederhana.
Object Sorting Method: Anda dapat mengurutkan hasil berdasarkan waktu modifikasi terakhir, nama file, atau ukuran file secara ascending atau descending. Anda dapat mengurutkan hasil pencarian sesuai kebutuhan untuk menemukan file yang diperlukan secara cepat.
Data Aggregation: Anda dapat melakukan perhitungan pada hasil pencarian, seperti menghitung nilai unik, menghitung berdasarkan kelompok, serta menghitung maksimum, minimum, rata-rata, dan jumlah. Hal ini memungkinkan analisis dan manajemen data yang efisien.
Referensi API
Operasi di atas diimplementasikan berdasarkan operasi API. Jika aplikasi Anda memiliki persyaratan khusus, Anda dapat langsung memanggil REST API. Jika Anda langsung memanggil REST API, Anda harus menulis kode secara manual untuk menghitung signature.
Untuk informasi lebih lanjut tentang cara mengaktifkan fitur pencarian vektor, lihat OpenMetaQuery.
Untuk informasi lebih lanjut tentang cara mengkueri file yang memenuhi kondisi tertentu, lihat DoMetaQuery.
Untuk informasi lebih lanjut tentang cara menonaktifkan fitur pencarian vektor, lihat CloseMetaQuery.
Penagihan
Biaya pencarian vektor terdiri dari dua bagian utama:
Biaya fitur pencarian vektor
Ini mencakup biaya untuk mengelola metadata objek. Anda dikenai biaya berdasarkan harga pengindeksan data OSS. Untuk informasi lebih lanjut, lihat Biaya pengindeksan data.
Biaya permintaan API
Biaya permintaan API dikenakan selama pembuatan indeks untuk file yang sudah ada dan pembaruan indeks untuk file tambahan. Anda dikenai biaya berdasarkan jumlah panggilan API. Operasi API yang dipanggil meliputi:
Aksi
API
Bangun indeks untuk file dalam bucket.
HeadObject dan GetObject
Bucket berisi file yang memiliki tag.
GetObjectTag
Bucket berisi file yang memiliki metadata kustom.
GetObjectMeta
Bucket berisi file tautan simbolik.
GetSymlink
Pindai file dalam bucket.
ListObjects
Untuk informasi lebih lanjut tentang biaya permintaan API OSS, lihat Biaya permintaan.
Jika Anda ingin berhenti dikenai biaya terkait, nonaktifkan pencarian vektor tepat waktu.
FAQ
Mengapa saya tidak dapat menemukan file segera setelah diunggah?
Pembuatan indeks untuk file yang baru diunggah memerlukan waktu, sehingga terjadi penundaan sebelum file tersebut muncul dalam hasil pencarian. Jika Anda tidak dapat menemukan file segera, tunggu beberapa saat dan coba pencarian Anda lagi.