• Tentang Milvus
  • Memulai
  • Konsep
  • Panduan Pengguna
    • Koleksi
    • Bidang Skema & Data
    • Menyisipkan & Menghapus
    • Indeks
    • Pencarian
    • Penyematan & Pemeringkatan Ulang
    • Optimalisasi Penyimpanan
  • Impor Data
  • Alat AI
  • Panduan Administrasi
  • Peralatan
  • Integrasi
  • Tutorial
  • Pertanyaan Umum
  • API Reference

TERBALIK

Ketika Anda perlu melakukan kueri filter yang sering pada data Anda, indeks INVERTED dapat meningkatkan kinerja kueri secara dramatis. Alih-alih memindai semua dokumen, Milvus menggunakan indeks terbalik untuk menemukan dengan cepat catatan yang sesuai dengan kondisi filter Anda.

Kapan menggunakan indeks INVERTED

Gunakan indeks INVERTED saat Anda membutuhkannya:

  • Memfilter berdasarkan nilai tertentu: Menemukan semua rekaman di mana suatu bidang sama dengan nilai tertentu (misalnya, category == "electronics")

  • Memfilter konten teks: Melakukan pencarian yang efisien pada bidang VARCHAR

  • Menanyakan nilai bidang JSON: Memfilter kunci tertentu dalam struktur JSON

Manfaat kinerja: Indeks INVERTED dapat mengurangi waktu kueri dari beberapa detik menjadi milidetik pada kumpulan data yang besar dengan meniadakan kebutuhan untuk pemindaian koleksi secara penuh.

Cara kerja indeks INVERTED

Indeks INVERTED di Milvus memetakan setiap nilai bidang (istilah) yang unik ke himpunan ID dokumen di mana nilai tersebut muncul. Struktur ini memungkinkan pencarian cepat untuk bidang dengan nilai yang berulang atau nilai kategorikal.

Seperti yang ditunjukkan pada diagram, prosesnya bekerja dalam dua langkah:

  1. Pemetaan maju (ID → Istilah): Setiap ID dokumen menunjuk ke nilai bidang yang dikandungnya.

  2. Pemetaan terbalik (Istilah → ID): Milvus mengumpulkan istilah-istilah unik dan membuat pemetaan terbalik dari setiap istilah ke semua ID yang mengandungnya.

Sebagai contoh, nilai "elektronik" dipetakan ke ID 1 dan 3, sementara "buku" dipetakan ke ID 2 dan 5.

How Inverted Index Works Cara Kerja Indeks Terbalik

Ketika Anda memfilter nilai tertentu (misalnya, category == "electronics"), Milvus cukup mencari istilah tersebut di dalam indeks dan mengambil ID yang cocok secara langsung. Hal ini untuk menghindari pemindaian dataset secara keseluruhan dan memungkinkan pemfilteran yang cepat, terutama untuk nilai kategorikal atau nilai yang berulang.

Indeks INVERTED mendukung semua jenis bidang skalar, seperti BOOL, INT8, INT16, INT32, INT64, FLOAT, DOUBLE, VARCHAR, JSON, dan ARRAY. Namun, parameter indeks untuk mengindeks bidang JSON sedikit berbeda dari bidang skalar biasa.

Membuat indeks pada bidang non-JSON

Untuk membuat indeks pada bidang non-JSON, ikuti langkah-langkah berikut:

  1. Siapkan parameter indeks Anda:

    from pymilvus import MilvusClient
    
    client = MilvusClient(uri="http://localhost:19530") # Replace with your server address
    
    # Create an empty index parameter object
    index_params = client.prepare_index_params()
    
  2. Tambahkan indeks INVERTED:

    index_params.add_index(
        field_name="category",           # Name of the field to index
        index_type="INVERTED",          # Specify INVERTED index type
        index_name="category_index"     # Give your index a name
    )
    
  3. Buat indeks:

    client.create_index(
        collection_name="my_collection", # Replace with your collection name
        index_params=index_params
    )
    

Membuat indeks pada bidang JSONCompatible with Milvus 2.5.11+

Anda juga dapat membuat indeks INVERTED pada jalur tertentu di dalam bidang JSON. Hal ini memerlukan parameter tambahan untuk menentukan jalur JSON dan tipe data:

# Build index params
index_params.add_index(
    field_name="metadata",                    # JSON field name
    index_type="INVERTED",
    index_name="metadata_category_index",
    params={
        "json_path": "metadata[\"category\"]",    # Path to the JSON key
        "json_cast_type": "varchar"              # Data type to cast to during indexing
    }
)

# Create index
client.create_index(
    collection_name="my_collection", # Replace with your collection name
    index_params=index_params
)

Untuk informasi rinci tentang pengindeksan bidang JSON, termasuk jalur yang didukung, tipe data, dan batasan, lihat Pengindeksan JSON.

Menghapus indeks

Gunakan metode drop_index() untuk menghapus indeks yang ada dari koleksi.

  • Pada v2.6.3 atau yang lebih lama, Anda harus melepaskan koleksi sebelum membuang indeks skalar.

  • Mulai v2.6.4 atau yang lebih baru, Anda dapat membuang indeks skalar secara langsung setelah indeks tersebut tidak lagi diperlukan-tidak perlu melepaskan koleksi terlebih dahulu.

client.drop_index(
    collection_name="my_collection",   # Name of the collection
    index_name="category_index" # Name of the index to drop
)

Praktik terbaik

  • Buat indeks setelah memuat data: Buat indeks pada koleksi yang sudah berisi data untuk kinerja yang lebih baik

  • Gunakan nama indeks yang deskriptif: Pilih nama yang dengan jelas menunjukkan bidang dan tujuannya

  • Memantau kinerja indeks: Memeriksa kinerja kueri sebelum dan sesudah membuat indeks

  • Pertimbangkan pola kueri Anda: Buat indeks pada bidang yang sering Anda filter

Langkah selanjutnya

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?