🚀 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

  • Bidang Skalar Indeks

Bidang Skalar Indeks

Di Milvus, indeks skalar digunakan untuk mempercepat penyaringan metafilter berdasarkan nilai bidang non-vektor tertentu, mirip dengan indeks basis data tradisional. Panduan ini akan memandu Anda dalam membuat dan mengonfigurasi indeks skalar untuk bidang seperti bilangan bulat, string, dll.

Jenis pengindeksan skalar

  • Pengindeksan otomatis: Milvus secara otomatis menentukan tipe indeks berdasarkan tipe data dari field skalar. Ini cocok bila Anda tidak perlu mengontrol jenis indeks tertentu.

  • Pengindeksan khusus: Anda menentukan jenis indeks yang tepat, seperti indeks terbalik atau indeks bitmap. Ini memberikan kontrol lebih besar atas pemilihan jenis indeks.

Pengindeksan otomatis

Untuk menggunakan pengindeksan otomatis, hilangkan parameter index_type di add_index()sehingga Milvus dapat menyimpulkan jenis indeks berdasarkan jenis bidang skalar.

Untuk menggunakan pengindeksan otomatis, hilangkan parameter indexType dalam IndexParamagar Milvus dapat menyimpulkan tipe indeks berdasarkan tipe field skalar.

Untuk menggunakan pengindeksan otomatis, hilangkan parameter index_type dalam createIndex()sehingga Milvus dapat menyimpulkan tipe indeks berdasarkan tipe field skalar.

Untuk pemetaan antara tipe data skalar dan algoritme pengindeksan default, lihat Algoritme pengindeksan bidang skalar.

# Auto indexing
client = MilvusClient(
    uri="http://localhost:19530"
)

index_params = MilvusClient.prepare_index_params() # Prepare an empty IndexParams object, without having to specify any index parameters

index_params.add_index(
    field_name="scalar_1", # Name of the scalar field to be indexed
    index_type="", # Type of index to be created. For auto indexing, leave it empty or omit this parameter.
    index_name="default_index" # Name of the index to be created
)

client.create_index(
  collection_name="test_scalar_index", # Specify the collection name
  index_params=index_params
)
import io.milvus.v2.common.IndexParam;
import io.milvus.v2.service.index.request.CreateIndexReq;

IndexParam indexParamForScalarField = IndexParam.builder()
    .fieldName("scalar_1") // Name of the scalar field to be indexed
    .indexName("default_index") // Name of the index to be created
    .indexType("") // Type of index to be created. For auto indexing, leave it empty or omit this parameter.
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForVectorField);

CreateIndexReq createIndexReq = CreateIndexReq.builder()
    .collectionName("test_scalar_index") // Specify the collection name
    .indexParams(indexParams)
    .build();

client.createIndex(createIndexReq);
await client.createIndex({
    collection_name: "test_scalar_index", // Specify the collection name
    field_name: "scalar_1", // Name of the scalar field to be indexed
    index_name: "default_index", // Name of the index to be created
    index_type: "" // Type of index to be created. For auto indexing, leave it empty or omit this parameter.
})

Pengindeksan khusus

Untuk menggunakan pengindeksan khusus, tentukan jenis indeks tertentu menggunakan parameter index_type di add_index().

Untuk menggunakan pengindeksan khusus, tentukan jenis indeks tertentu menggunakan parameter indexType di dalam file . IndexParam.

Untuk menggunakan pengindeksan khusus, tentukan jenis indeks tertentu menggunakan parameter index_type di createIndex().

Contoh di bawah ini membuat indeks terbalik untuk bidang skalar scalar_2.

index_params = MilvusClient.prepare_index_params() #  Prepare an IndexParams object

index_params.add_index(
    field_name="scalar_2", # Name of the scalar field to be indexed
    index_type="INVERTED", # Type of index to be created
    index_name="inverted_index" # Name of the index to be created
)

client.create_index(
  collection_name="test_scalar_index", # Specify the collection name
  index_params=index_params
)
import io.milvus.v2.common.IndexParam;
import io.milvus.v2.service.index.request.CreateIndexReq;

IndexParam indexParamForScalarField = IndexParam.builder()
    .fieldName("scalar_1") // Name of the scalar field to be indexed
    .indexName("inverted_index") // Name of the index to be created
    .indexType("INVERTED") // Type of index to be created
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForVectorField);

CreateIndexReq createIndexReq = CreateIndexReq.builder()
    .collectionName("test_scalar_index") // Specify the collection name
    .indexParams(indexParams)
    .build();

client.createIndex(createIndexReq);
await client.createIndex({
    collection_name: "test_scalar_index", // Specify the collection name
    field_name: "scalar_1", // Name of the scalar field to be indexed
    index_name: "inverted_index", // Name of the index to be created
    index_type: "INVERTED" // Type of index to be created
})

Metode dan Parameter

  • prepare_index_params ()

    Mempersiapkan objek IndexParams.

  • add_index()

    Menambahkan konfigurasi indeks ke objek IndexParams.

    • field_name(string)

      Nama bidang skalar yang akan diindeks.

    • index_type(string):

      Jenis indeks skalar yang akan dibuat. Untuk pengindeksan implisit, biarkan kosong atau hilangkan parameter ini.

      Untuk pengindeksan khusus, nilai yang valid adalah:

      • INVERTED: (Disarankan) Indeks terbalik terdiri dari kamus istilah yang berisi semua kata bertanda yang diurutkan menurut abjad. Untuk detailnya, lihat Indeks Skalar.

      • STL_SORT: Mengurutkan bidang skalar menggunakan algoritme pengurutan pustaka templat standar. Hanya mendukung bidang numerik (misalnya, INT8, INT16, INT32, INT64, FLOAT, DOUBLE).

      • Trie: Struktur data pohon untuk pencarian dan pengambilan awalan yang cepat. Mendukung bidang VARCHAR.

    • nama_indeks(string)

      Nama indeks skalar yang akan dibuat. Setiap bidang skalar mendukung satu indeks.

  • create_index ()

    Membuat indeks dalam koleksi yang ditentukan.

    • nama_koleksi(string)

      Nama koleksi yang akan dibuat indeksnya.

    • index_params

      Objek IndexParams yang berisi konfigurasi indeks.

Metode dan Parameter

  • IndexParamMempersiapkan objek IndexParam.
    • fieldName(String) Nama bidang skalar yang akan diindeks.
    • indexName(String) Nama indeks skalar yang akan dibuat. Setiap bidang skalar mendukung satu indeks.
    • indexType(String) Jenis indeks skalar yang akan dibuat. Untuk pengindeksan implisit, biarkan kosong atau hilangkan parameter ini. Untuk pengindeksan khusus, nilai yang valid adalah:
      • INVERTED: (Disarankan) Indeks terbalik terdiri dari kamus istilah yang berisi semua kata bertanda yang diurutkan menurut abjad. Untuk detailnya, lihat Indeks Skalar.
      • STL_SORT: Mengurutkan bidang skalar menggunakan algoritme pengurutan pustaka templat standar. Mendukung bidang Boolean dan numerik (misalnya, INT8, INT16, INT32, INT64, FLOAT, DOUBLE).
      • Trie: Struktur data pohon untuk pencarian dan pengambilan awalan yang cepat. Mendukung bidang VARCHAR.
  • CreateIndexReqMembuat indeks dalam koleksi yang ditentukan.
    • collectionName(String) Nama koleksi tempat indeks dibuat.
    • indexParams(Daftar) Daftar objek IndexParam yang berisi konfigurasi indeks.

Metode dan Parameter

  • createIndex

    Membuat indeks dalam koleksi yang ditentukan.

    • collection_name(string) Nama koleksi tempat indeks dibuat.
    • field_name(string) Nama bidang skalar yang akan diindeks.
    • index_name(string) Nama indeks skalar yang akan dibuat. Setiap bidang skalar mendukung satu indeks.
    • index_type(string) Jenis indeks skalar yang akan dibuat. Untuk pengindeksan implisit, biarkan kosong atau hilangkan parameter ini. Untuk pengindeksan khusus, nilai yang valid adalah:
      • INVERTED: (Disarankan) Indeks terbalik terdiri dari kamus istilah yang berisi semua kata bertanda yang diurutkan menurut abjad. Untuk detailnya, lihat Indeks Skalar.
      • STL_SORT: Mengurutkan bidang skalar menggunakan algoritme pengurutan pustaka templat standar. Mendukung bidang Boolean dan numerik (misalnya, INT8, INT16, INT32, INT64, FLOAT, DOUBLE).
      • Trie: Struktur data pohon untuk pencarian dan pengambilan awalan yang cepat. Mendukung bidang VARCHAR.

Memverifikasi hasil

Gunakan metode list_indexes() untuk memverifikasi pembuatan indeks skalar:

Gunakan metode listIndexes() untuk memverifikasi pembuatan indeks skalar:

Gunakan metode listIndexes() untuk memverifikasi pembuatan indeks skalar:

client.list_indexes(
    collection_name="test_scalar_index"  # Specify the collection name
)

# Output:
# ['default_index','inverted_index']
import java.util.List;
import io.milvus.v2.service.index.request.ListIndexesReq;

ListIndexesReq listIndexesReq = ListIndexesReq.builder()
    .collectionName("test_scalar_index")  // Specify the collection name
    .build();

List<String> indexNames = client.listIndexes(listIndexesReq);

System.out.println(indexNames);

// Output:
// [
//     "default_index",
//     "inverted_index"
// ]
res = await client.listIndexes({
    collection_name: 'test_scalar_index'
})

console.log(res.indexes)

// Output:
// [
//     "default_index",
//     "inverted_index"
// ]   

Batasan

  • Saat ini, pengindeksan skalar mendukung tipe data INT8, INT16, INT32, INT64, FLOAT, DOUBLE, BOOL, VARCHAR, dan ARRAY, tetapi tidak mendukung tipe data JSON.

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?