Topik ini menjelaskan cara mengimplementasikan alur kerja aplikasi lengkap secara cepat, mulai dari persiapan data hingga pengambilan vektor. Proses ini mencakup empat langkah inti: membuat bucket vektor, membuat indeks vektor, mengunggah data vektor, dan melakukan pengambilan vektor.
Sebelum memulai, pastikan bahwa:
Anda telah mengaktifkan Object Storage Service (OSS).
OSS Vectors saat ini tersedia di wilayah berikut: China (Shenzhen), China (Qingdao), China (Beijing), China (Hangzhou), China (Shanghai), China (Ulanqab), Singapura, China (Hong Kong), Indonesia (Jakarta), Jerman (Frankfurt), AS (Silicon Valley), dan AS (Virginia).
Langkah 1: Buat bucket vektor
Buat bucket vektor untuk menyimpan seluruh data dan indeks vektor Anda.
Di halaman Vector Buckets, klik Create a Vector Bucket.
Konfigurasikan informasi bucket:
Vector Bucket Name: Masukkan nama bucket yang unik dalam Akun Alibaba Cloud Anda di suatu wilayah. Nama harus terdiri dari 3 hingga 32 karakter dan hanya boleh berisi huruf kecil, angka, serta tanda hubung (-). Nama tidak boleh dimulai atau diakhiri dengan tanda hubung.
Region: Pilih wilayah yang sesuai dengan bisnis Anda, misalnya "China (Shenzhen)".
Klik OK untuk membuat bucket.
Langkah 2: Buat indeks vektor
Setelah bucket dibuat, buat indeks vektor di dalamnya. Indeks ini menentukan struktur vektor Anda, seperti dimensinya, serta metode pengambilannya, seperti metrik jarak. Indeks ini menjadi dasar untuk menyimpan dan mengkueri data vektor.
Di halaman Vector Buckets, klik nama bucket vektor yang telah Anda buat.
Di halaman Vector Indexes, klik Create Index Table.
Konfigurasikan parameter indeks:
Index Table Name: Masukkan nama indeks yang unik dalam bucket tersebut. Nama harus terdiri dari 1 hingga 63 karakter, hanya berisi huruf dan angka, serta dimulai dengan huruf.
Vector Data Type: Nilai default-nya adalah
float32(floating-point 32-bit).Vector Dimension: Tetapkan dimensi vektor, misalnya
128. Nilainya harus berupa bilangan bulat antara 1 hingga 4.096. Semua vektor yang Anda unggah ke indeks ini harus memiliki dimensi yang sama.Distance Metric Function: Pilih metode perhitungan jarak berdasarkan kasus penggunaan Anda.
Euclidean distance: Jarak garis lurus antara dua titik dalam ruang. Metrik ini ideal untuk mengukur perbedaan numerik.
Cosine distance: Mengukur perbedaan arah antara dua vektor. Metrik ini cocok untuk menghitung kemiripan semantik pada data berdimensi tinggi seperti teks dan gambar.
Klik OK untuk membuat indeks.
Langkah 3: Unggah data vektor
Setelah indeks siap, Anda dapat mengunggah data vektor ke dalamnya.
Di daftar indeks, temukan indeks yang baru saja Anda buat dan klik View Data di sebelah kanan.
Di halaman indeks, klik Vector Data Insertion.
Konfigurasikan data vektor. Anda dapat menambahkan beberapa entri vektor sekaligus:
Primary Key Value: Tetapkan pengenal unik untuk vektor tersebut.
Vector Data: Masukkan nilai vektor sebagai daftar angka yang dipisahkan koma. Dimensi vektor (jumlah nilai) harus persis sesuai dengan Vector Dimension yang ditetapkan pada Langkah 2.
Metadata: Anda dapat menambahkan metadata opsional, seperti kategori, judul, atau stempel waktu. Metadata memungkinkan penyaringan yang lebih tepat selama pengambilan.
Klik OK untuk memasukkan data.
Langkah 4: Lakukan pengambilan vektor
Setelah data disiapkan, Anda dapat melakukan pengambilan vektor, yang merupakan bagian inti dari alur kerja ini. Biasanya, Anda memanggil API dari aplikasi menggunakan SDK untuk melakukan pengambilan vektor dan dengan cepat menemukan data target.
Contoh SDK Python berikut menunjukkan cara mengambil 10 entri data teratas yang paling mirip dengan vektor target dan bidang type-nya bukan "comedy" atau "documentary".
import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.vectors as oss_vectors
parser = argparse.ArgumentParser(description="vector query vectors 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')
parser.add_argument('--index_name', help='The name of the vector index.', required=True)
parser.add_argument('--account_id', help='The account id.', required=True)
def main():
args = parser.parse_args()
# Memuat nilai kredensial dari variabel lingkungan
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Menggunakan konfigurasi default SDK
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
cfg.account_id = args.account_id
cfg.use_internal_endpoint = True # Untuk mengakses layanan melalui jaringan publik, atur ke False atau hapus baris ini.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
vector_client = oss_vectors.Client(cfg)
query_filter = {
"$and": [{
"type": {
"$nin": ["comedy", "documentary"]
}
}]
}
query_vector = {"float32": [0.1] * 128}
result = vector_client.query_vectors(oss_vectors.models.QueryVectorsRequest(
bucket=args.bucket,
index_name=args.index_name,
filter=query_filter,
query_vector=query_vector,
return_distance=True,
return_metadata=True,
top_k=10
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
)
if result.vectors:
for vector in result.vectors:
print(f'vector: {vector}')
if __name__ == "__main__":
main()Langkah selanjutnya
Anda dapat melakukan semua operasi pada bucket vektor menggunakan Konsol, SDK OSS, ossutil, atau panggilan API langsung. Panduan cepat ini menunjukkan cara tercepat untuk memulai. Untuk detail tentang konfigurasi lanjutan dan penggunaan, lihat topik-topik berikut: