🚀 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

  • Cari & Beri Peringkat Ulang

  • Penyaringan

  • Penjelasan Pemfilteran

Penjelasan Pemfilteran

Milvus menyediakan kemampuan pemfilteran yang kuat yang memungkinkan kueri yang tepat untuk data Anda. Ekspresi penyaringan memungkinkan Anda untuk menargetkan bidang skalar tertentu dan mempersempit hasil pencarian dengan kondisi yang berbeda. Panduan ini menjelaskan cara menggunakan ekspresi filter di Milvus, dengan contoh-contoh yang difokuskan pada operasi kueri. Anda juga dapat menerapkan filter ini dalam permintaan pencarian dan penghapusan.

Operator dasar

Milvus mendukung beberapa operator dasar untuk memfilter data.

  • Operator Perbandingan: == != , >, <, >=, dan <= memungkinkan pemfilteran berdasarkan bidang numerik, teks, atau tanggal.

  • Filter Rentang: IN dan LIKE membantu mencocokkan rentang atau kumpulan nilai tertentu.

  • Operator Aritmatika: +, -, *, /, %, dan `` digunakan untuk perhitungan yang melibatkan bidang numerik.

  • Operator Logika: AND, OR, dan NOT atau '&&', '||', '~', '!' menggabungkan beberapa kondisi ke dalam ekspresi yang kompleks.

Contoh: Memfilter berdasarkan Warna

Untuk menemukan entitas dengan warna primer (merah, hijau, atau biru) dalam bidang skalar color, gunakan ekspresi filter berikut.

filter='color in ["red", "green", "blue"]'

Contoh: Memfilter Bidang JSON

Milvus mengizinkan referensi kunci dalam bidang JSON. Misalnya, jika Anda memiliki bidang JSON product dengan kunci price dan model, dan ingin menemukan produk dengan model dan harga tertentu yang lebih rendah dari 1.850, gunakan ekspresi filter ini.

filter='product["model"] == "JSN-087" and product["price"] < 1850'

Contoh: Memfilter Bidang Array

Jika Anda memiliki bidang larik history_temperatures yang berisi catatan suhu, dan ingin menemukan observatorium yang mencatat suhu ke-10 melebihi 23°C, gunakan ekspresi ini.

filter='history_temperatures[10] > 23'

Untuk informasi lebih lanjut mengenai operator dasar ini, lihat Operator Dasar.

Templat ekspresi penyaringan

Ketika memfilter menggunakan karakter CJK, pemrosesan dapat menjadi lebih kompleks karena set karakter yang lebih besar dan perbedaan pengodean. Hal ini dapat mengakibatkan kinerja yang lebih lambat, terutama dengan operator IN.

Milvus memperkenalkan templat ekspresi filter untuk mengoptimalkan kinerja saat bekerja dengan karakter CJK. Dengan memisahkan nilai dinamis dari ekspresi filter, mesin kueri menangani penyisipan parameter dengan lebih efisien.

Contoh

Untuk menemukan individu yang berusia di atas 25 tahun yang tinggal di "北京" (Beijing) atau "上海" (Shanghai), gunakan ekspresi templat berikut.

filter = "age > 25 and city in ['北京', '上海']"

Untuk meningkatkan kinerja, gunakan variasi ini dengan parameter.

filter = "age > {age} and city in {city}",
filter_params = {"age": 25, "city": ["北京", "上海"]}

Pendekatan ini mengurangi overhead penguraian dan meningkatkan kecepatan kueri. Untuk informasi lebih lanjut, lihat Filter Templating.

Operator khusus tipe data

Milvus menyediakan operator pemfilteran tingkat lanjut untuk tipe data tertentu, seperti bidang JSON, ARRAY, dan VARCHAR.

Operator khusus bidang JSON

Milvus menawarkan operator tingkat lanjut untuk menanyakan bidang JSON, memungkinkan pemfilteran yang tepat dalam struktur JSON yang kompleks.

JSON_CONTAINS(identifier, jsonExpr): Memeriksa apakah sebuah ekspresi JSON ada di dalam field.

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter='json_contains(tags, "sale")'

JSON_CONTAINS_ALL(identifier, jsonExpr): Memastikan semua elemen dari ekspresi JSON ada.

# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter='json_contains_all(tags, ["electronics", "sale", "new"])'

JSON_CONTAINS_ANY(identifier, jsonExpr): Memfilter entitas yang setidaknya memiliki satu elemen dalam ekspresi JSON.

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter='json_contains_any(tags, ["electronics", "new", "clearance"])'

Untuk detail lebih lanjut tentang operator JSON, lihat Operator JSON.

Operator khusus bidang ARRAY

Milvus menyediakan operator pemfilteran tingkat lanjut untuk bidang larik, seperti ARRAY_CONTAINS, ARRAY_CONTAINS_ALL, ARRAY_CONTAINS_ANY, dan ARRAY_LENGTH, yang memungkinkan kontrol yang lebih baik atas data larik.

ARRAY_CONTAINS: Memfilter entitas yang mengandung elemen tertentu.

filter="ARRAY_CONTAINS(history_temperatures, 23)"

ARRAY_CONTAINS_ALL: Memfilter entitas di mana semua elemen dalam daftar ada.

filter="ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])"

ARRAY_CONTAINS_ANY: Menyaring entitas yang berisi elemen apa pun dari daftar.

filter="ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])"

ARRAY_LENGTH: Memfilter berdasarkan panjang larik.

filter="ARRAY_LENGTH(history_temperatures) < 10"

Untuk detail lebih lanjut tentang operator larik, lihat Operator Larik.

Operator khusus bidang VARCHAR

Operator Text_Match memungkinkan pengambilan dokumen yang tepat berdasarkan istilah kueri tertentu. Operator ini sangat berguna untuk pencarian terfilter yang menggabungkan filter skalar dengan pencarian kemiripan vektor. Tidak seperti pencarian semantik, Pencocokan Teks berfokus pada kemunculan istilah yang tepat.

Milvus menggunakan Tantivy untuk mendukung pengindeksan terbalik dan pencarian teks berbasis istilah. Prosesnya melibatkan.

  1. Penganalisis: Memberi tanda dan memproses teks masukan.

  2. Pengindeksan: Membuat indeks terbalik yang memetakan token unik ke dokumen.

Untuk lebih jelasnya, lihat Pencocokan Teks.

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?