🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Panduan Pengguna
  • Home
  • Docs
  • Panduan Pengguna

  • Indeks

  • Indeks Skalar

  • Indeks Bitmap

BITMAP

Pengindeksan Bitmap adalah teknik pengindeksan yang efisien yang dirancang untuk meningkatkan performa kueri pada bidang skalar dengan kardinalitas rendah. Kardinalitas mengacu pada jumlah nilai yang berbeda dalam suatu bidang. Bidang dengan lebih sedikit elemen yang berbeda dianggap memiliki kardinalitas rendah.

Jenis indeks ini membantu mengurangi waktu pengambilan kueri skalar dengan merepresentasikan nilai bidang dalam format biner yang ringkas dan melakukan operasi bitwise yang efisien. Dibandingkan dengan jenis indeks lainnya, indeks bitmap biasanya memiliki efisiensi ruang yang lebih tinggi dan kecepatan kueri yang lebih cepat saat berurusan dengan bidang dengan kardinalitas rendah.

Gambaran Umum

Istilah Bitmap menggabungkan dua kata: Bit dan Peta. Bit mewakili unit data terkecil dalam komputer, yang hanya dapat menyimpan nilai 0 atau 1. Peta, dalam konteks ini, mengacu pada proses mengubah dan mengatur data sesuai dengan nilai apa yang harus diberikan pada 0 dan 1.

Indeks bitmap terdiri dari dua komponen utama: bitmap dan kunci. Kunci mewakili nilai unik dalam bidang yang diindeks. Untuk setiap nilai unik, ada bitmap yang sesuai. Panjang bitmap ini sama dengan jumlah record dalam koleksi. Setiap bit dalam bitmap berhubungan dengan sebuah record dalam koleksi. Jika nilai bidang yang diindeks dalam sebuah rekaman cocok dengan kunci, bit yang sesuai diset ke 1; jika tidak, bit tersebut diset ke 0.

Pertimbangkan sebuah koleksi dokumen dengan bidang Kategori dan Publik. Kita ingin mengambil dokumen yang termasuk dalam kategori Teknologi dan terbuka untuk Publik. Dalam kasus ini, kunci untuk indeks bitmap kita adalah Tech dan Public.

Bitmap indexing Pengindeksan bitmap

Seperti yang ditunjukkan pada gambar, indeks bitmap untuk Kategori dan Publik adalah.

  • Tech: [1, 0, 1, 0, 0], yang menunjukkan bahwa hanya dokumen ke-1 dan ke-3 yang masuk ke dalam kategori Teknologi.

  • Publik: [1, 0, 0, 1, 0], yang menunjukkan bahwa hanya dokumen ke-1 dan ke-4 yang terbuka untuk Publik.

Untuk menemukan dokumen yang sesuai dengan kedua kriteria tersebut, kita melakukan operasi bitwise AND pada kedua bitmap ini.

  • Teknologi DAN Publik: [1, 0, 0, 0, 0]

Bitmap yang dihasilkan [1, 0, 0, 0, 0] mengindikasikan bahwa hanya dokumen pertama(ID 1) yang memenuhi kedua kriteria. Dengan menggunakan indeks bitmap dan operasi bitwise yang efisien, kita dapat dengan cepat mempersempit cakupan pencarian, sehingga tidak perlu memindai seluruh kumpulan data.

Membuat indeks bitmap

Untuk membuat indeks bitmap di Milvus, gunakan metode create_index() dan atur parameter index_type ke "BITMAP".

from pymilvus import MilvusClient

index_params = client.create_index_params() # Prepare an empty IndexParams object, without having to specify any index parameters
index_params.add_index(
    field_name="category", # Name of the scalar field to be indexed
    index_type="BITMAP", # Type of index to be created
    index_name="category_bitmap_index" # Name of the index to be created
)

client.create_index(
    collection_name="my_collection", # Specify the collection name
    index_params=index_params
)

Pada contoh ini, kita membuat indeks bitmap pada bidang category dari koleksi my_collection. Metode add_index() digunakan untuk menentukan nama field, tipe indeks, dan nama indeks.

Setelah indeks bitmap dibuat, Anda dapat menggunakan parameter filter dalam operasi kueri untuk melakukan pemfilteran skalar berdasarkan bidang yang diindeks. Hal ini memungkinkan Anda mempersempit hasil pencarian secara efisien dengan menggunakan indeks bitmap. Untuk informasi lebih lanjut, lihat Pemfilteran Metadata.

Batasan

  • Indeks bitmap hanya didukung untuk bidang skalar yang bukan merupakan kunci utama.

  • Tipe data bidang harus merupakan salah satu dari yang berikut ini.

    • BOOL, INT8, INT16, INT32, INT64, VARCHAR

    • ARRAY (elemen harus salah satu dari: BOOL, INT8, INT16, INT32, INT64, VARCHAR)

  • Indeks Bitmap tidak mendukung tipe data berikut ini.

    • FLOAT, DOUBLE: Tipe floating-point tidak kompatibel dengan sifat biner indeks bitmap.

    • JSON: Tipe data JSON memiliki struktur kompleks yang tidak dapat direpresentasikan secara efisien menggunakan indeks bitmap.

  • Indeks bitmap tidak cocok untuk bidang dengan kardinalitas tinggi (yaitu, bidang dengan sejumlah besar nilai yang berbeda).

    • Sebagai pedoman umum, indeks bitmap paling efektif bila kardinalitas bidang kurang dari 500.

    • Ketika kardinalitas meningkat melebihi ambang batas ini, manfaat kinerja indeks bitmap berkurang, dan overhead penyimpanan menjadi signifikan.

    • Untuk bidang dengan kardinalitas tinggi, pertimbangkan untuk menggunakan teknik pengindeksan alternatif seperti indeks terbalik, tergantung pada kasus penggunaan dan persyaratan kueri Anda.

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?