Milvus
Zilliz
Beranda
  • Panduan Pengguna
    • Indeks
  • Home
  • Docs
  • Panduan Pengguna

  • Indeks

  • Indeks Skalar

  • STL_SORT

STL_SORT

Indeks STL_SORT adalah jenis indeks yang dirancang khusus untuk meningkatkan performa kueri pada field numerik (INT8, INT16, dsb.), field VARCHAR, atau field TIMESTAMPTZ di dalam Milvus dengan mengorganisasikan data dalam urutan yang diurutkan.

Gunakan indeks STL_SORT jika Anda sering menjalankan kueri dengan:

  • Pemfilteran perbandingan dengan operator ==, !=, >, <, >=, dan <=

  • Pemfilteran rentang dengan operator IN dan LIKE

Tipe data yang didukung

  • Bidang numerik (misalnya, INT8, INT16, INT32, INT64, FLOAT, DOUBLE). Untuk detailnya, lihat Boolean & Angka.

  • VARCHAR bidang. Untuk detailnya, lihat Bidang String.

  • TIMESTAMPTZ bidang. Untuk detailnya, lihat Bidang Waktu.

Bagaimana cara kerjanya

Milvus mengimplementasikan STL_SORT dalam dua fase:

  1. Membangun indeks

    • Selama proses ingestion, Milvus mengumpulkan semua nilai untuk bidang yang diindeks.

    • Nilai-nilai tersebut diurutkan dalam urutan menaik menggunakan std::sort C++ STL.

    • Setiap nilai dipasangkan dengan ID entitasnya, dan larik yang telah diurutkan disimpan sebagai indeks.

  2. Mempercepat kueri

    • Pada saat query, Milvus menggunakan pencarian biner(std::lower_bound dan std::upper_bound) pada larik terurut.

    • Untuk persamaan, Milvus dengan cepat menemukan semua nilai yang cocok.

    • Untuk rentang, Milvus menemukan posisi awal dan akhir dan mengembalikan semua nilai di antaranya.

    • ID entitas yang cocok diteruskan ke eksekutor kueri untuk perakitan hasil akhir.

Hal ini mengurangi kompleksitas kueri dari O(n) (pemindaian penuh) menjadi O(log n + m), di mana m adalah jumlah kecocokan.

Membuat indeks STL_SORT

Anda dapat membuat indeks STL_SORT pada bidang numerik atau TIMESTAMPTZ. Tidak ada parameter tambahan yang diperlukan.

Contoh di bawah ini menunjukkan cara membuat indeks STL_SORT pada ruas TIMESTAMPTZ:

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530") # Replace with your server address

# Assume you have defined a TIMESTAMPTZ field named "tsz" in your collection schema

# Prepare index parameters
index_params = client.prepare_index_params()

# Add RTREE index on the "tsz" field
index_params.add_index(
    field_name="tsz",
    index_type="STL_SORT",   # Index for TIMESTAMPTZ
    index_name="tsz_index",  # Optional, name your index
    params={}                # No extra params needed
)

# Create the index on the collection
client.create_index(
    collection_name="tsz_demo",
    index_params=index_params
)

Menghapus indeks

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

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

Catatan penggunaan

  • Jenis bidang: Bekerja dengan bidang numerik dan TIMESTAMPTZ. Untuk informasi lebih lanjut mengenai tipe data, lihat Bidang Boolean & Angka dan TIMESTAMPTZ.

  • Parameter: Tidak diperlukan parameter indeks.

  • Mmap tidak didukung: Mode pemetaan memori tidak tersedia untuk STL_SORT.

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?