Milvus
Zilliz
  • Home
  • Blog
  • Menyatukan Pemfilteran Geospasial dan Pencarian Vektor dengan Bidang Geometri dan RTREE di Milvus 2.6

Menyatukan Pemfilteran Geospasial dan Pencarian Vektor dengan Bidang Geometri dan RTREE di Milvus 2.6

  • Engineering
December 08, 2025
Cai Zhang

Karena sistem AI semakin banyak diterapkan pada pengambilan keputusan secara real-time, data geospasial menjadi semakin penting dalam serangkaian aplikasi yang terus berkembang-terutama aplikasi yang beroperasi di dunia nyata atau melayani pengguna di lokasi nyata.

Pertimbangkan platform pengantaran makanan seperti DoorDash atau Uber Eats. Ketika pengguna melakukan pemesanan, sistem tidak hanya menghitung jarak terpendek antara dua titik. Sistem ini mengevaluasi kualitas restoran, ketersediaan kurir, kondisi lalu lintas langsung, area layanan, dan semakin banyak, penyematan pengguna dan barang yang mewakili preferensi pribadi. Demikian pula, kendaraan otonom harus melakukan perencanaan jalur, deteksi rintangan, dan pemahaman semantik tingkat pemandangan di bawah batasan latensi yang ketat - seringkali dalam hitungan milidetik. Dalam domain ini, keputusan yang efektif bergantung pada penggabungan kendala spasial dengan kesamaan semantik, daripada memperlakukannya sebagai langkah yang berdiri sendiri-sendiri.

Namun, pada lapisan data, data spasial dan semantik secara tradisional ditangani oleh sistem yang terpisah.

  • Basis data geospasial dan ekstensi spasial dirancang untuk menyimpan koordinat, poligon, dan hubungan spasial seperti penahanan atau jarak.

  • Basis data vektor menangani penyematan vektor yang mewakili makna semantik data.

Ketika aplikasi membutuhkan keduanya, mereka sering kali dipaksa masuk ke dalam pipeline kueri multi-tahap-memfilter berdasarkan lokasi di satu sistem, lalu melakukan pencarian vektor di sistem lain. Pemisahan ini meningkatkan kompleksitas sistem, menambah latensi kueri, dan menyulitkan untuk melakukan penalaran spasial-semantik secara efisien dalam skala besar.

Milvus 2.6 mengatasi masalah ini dengan memperkenalkan Bidang Geometri, yang memungkinkan pencarian kemiripan vektor digabungkan secara langsung dengan batasan spasial. Hal ini memungkinkan kasus penggunaan seperti:

  • Layanan Berbasis Lokasi (LBS): "temukan POI yang mirip dalam blok kota ini"

  • Pencarian multi-modal: "mengambil foto yang serupa dalam jarak 1 km dari titik ini"

  • Peta & logistik: "aset di dalam suatu wilayah" atau "rute yang berpotongan dengan jalur"

Dipasangkan dengan indeks RTREE yang baru-sebuahstruktur berbasis pohon yang dioptimalkan untuk penyaringan spasial-Milvus kini mendukung operator geospasial yang efisien seperti st_contains, st_within, dan st_dwithin di samping pencarian vektor berdimensi tinggi. Bersama-sama, mereka membuat pencarian cerdas yang sadar spasial tidak hanya memungkinkan, tetapi juga praktis.

Dalam artikel ini, kita akan membahas cara kerja Geometry Field dan indeks RTREE, dan bagaimana keduanya digabungkan dengan pencarian kemiripan vektor untuk memungkinkan aplikasi spasial-semantik di dunia nyata.

Apa yang dimaksud dengan Bidang Geometri di Milvus?

Bidang Geometri adalah sebuah tipe data yang ditentukan oleh skema (DataType.GEOMETRY) di Milvus yang digunakan untuk menyimpan data geometri. Tidak seperti sistem yang hanya menangani koordinat mentah, Milvus mendukung berbagai struktur spasial-termasuk Point, LineString, dan Poligon.

Hal ini memungkinkan untuk merepresentasikan konsep dunia nyata seperti lokasi restoran (Point), zona pengantaran (Polygon), atau lintasan kendaraan otonom (LineString), semuanya dalam basis data yang sama yang menyimpan vektor semantik. Dengan kata lain, Milvus menjadi sistem terpadu untuk mengetahui letak sesuatu dan artinya.

Nilai geometri disimpan menggunakan format Well-Known Text (WKT ), sebuah standar yang dapat dibaca manusia untuk memasukkan dan menanyakan data geometri. Hal ini menyederhanakan pemasukan dan permintaan data karena string WKT dapat dimasukkan secara langsung ke dalam catatan Milvus. Sebagai contoh:

data = [
    { 
        "id": 1,
        "geo": "POINT(116.4074 39.9042)",
        "vector": vector,
    }
]

Apa itu Indeks RTREE dan Bagaimana Cara Kerjanya?

Setelah Milvus memperkenalkan tipe data Geometri, Milvus juga membutuhkan cara yang efisien untuk menyaring objek-objek spasial. Milvus menangani hal ini dengan menggunakan pipeline penyaringan spasial dua tahap:

  • Pemfilteran kasar: Mempersempit kandidat dengan cepat menggunakan indeks spasial seperti RTREE.

  • Penyaringan halus: Menerapkan pemeriksaan geometri yang tepat pada kandidat yang tersisa, memastikan ketepatan pada batas-batas.

Desain ini menyeimbangkan antara kinerja dan akurasi. Indeks spasial secara agresif memangkas data yang tidak relevan, sementara pemeriksaan geometri yang tepat memastikan hasil yang benar untuk operator seperti penahanan, persimpangan, dan ambang batas jarak.

Inti dari pipeline ini adalah RTREE (Rectangle Tree), struktur pengindeksan spasial yang dirancang untuk mempercepat kueri atas data geometris. RTREE bekerja dengan mengatur objek secara hirarkis menggunakan Minimum Bounding Rectangles (MBR), yang memungkinkan sebagian besar ruang pencarian dilewati selama eksekusi kueri.

Tahap 1: Membangun Indeks RTREE

Konstruksi RTREE mengikuti proses dari bawah ke atas yang mengelompokkan objek spasial yang berdekatan ke dalam wilayah yang semakin besar:

1. Buatlah simpul-simpul daun (leaf nodes): Untuk setiap objek geometri, hitung Minimum Bounding Rectangle (MBR) - persegi panjang terkecil yang sepenuhnya berisi objek tersebut - dan simpan sebagai leaf node.

2. Kelompokkan ke dalam kotak yang lebih besar: Kelompokkan node daun yang berdekatan dan bungkus setiap kelompok di dalam MBR baru, sehingga menghasilkan node internal.

3. Tambahkan simpul akar: Buat simpul akar yang MBR-nya mencakup semua kelompok internal, membentuk struktur pohon yang seimbang.

Tahap 2: Mempercepat kueri

1. Membentuk kueri MBR: Hitung MBR untuk geometri yang digunakan dalam kueri Anda.

2. Pangkas cabang: Mulai dari akar, bandingkan MBR kueri dengan setiap simpul internal. Lewati setiap cabang yang MBR-nya tidak bersinggungan dengan MBR kueri.

3. Kumpulkan kandidat: Turun ke cabang-cabang yang berpotongan dan kumpulkan simpul-simpul daun kandidat.

4. Lakukan pencocokan yang tepat: Untuk setiap kandidat, jalankan predikat spasial untuk mendapatkan hasil yang tepat.

Mengapa RTREE Cepat

RTREE memberikan kinerja yang kuat dalam penyaringan spasial karena beberapa fitur desain utama:

  • Setiap node menyimpan MBR: Setiap node memperkirakan area dari semua geometri di dalam sub-pohonnya. Hal ini memudahkan untuk memutuskan apakah sebuah cabang harus dieksplorasi selama kueri.

  • Pemangkasan cepat: Hanya sub-pohon yang MBR-nya memotong wilayah kueri yang dieksplorasi. Area yang tidak relevan diabaikan sepenuhnya.

  • Skala dengan ukuran data: RTREE mendukung pencarian spasial dalam waktu O(log N), memungkinkan kueri yang cepat bahkan ketika dataset berkembang.

  • Implementasi Boost.Geometry: Milvus membangun indeks RTREE menggunakan Boost.Geometry, pustaka C++ yang banyak digunakan yang menyediakan algoritme geometri yang dioptimalkan dan implementasi RTREE yang aman bagi thread yang cocok untuk beban kerja yang bersamaan.

Operator geometri yang didukung

Milvus menyediakan seperangkat operator spasial yang memungkinkan Anda untuk memfilter dan mengambil entitas berdasarkan hubungan geometris. Operator-operator ini sangat penting untuk beban kerja yang perlu memahami bagaimana objek-objek berhubungan satu sama lain dalam ruang.

Tabel berikut mencantumkan operator geometri yang saat ini tersedia di Milvus.

OperatorDeskripsi
st_intersects(A, B)Mengembalikan TRUE jika geometri A dan B memiliki setidaknya satu titik yang sama.
st_berisi(A, B)Mengembalikan TRUE jika geometri A sepenuhnya berisi geometri B (tidak termasuk batas).
st_dalam(A, B)Mengembalikan TRUE jika geometri A sepenuhnya terkandung di dalam geometri B. Ini adalah kebalikan dari st_contains(A, B).
st_menutupi(A, B)Mengembalikan TRUE jika geometri A menutupi geometri B (termasuk batas).
st_menyentuh(A, B)Mengembalikan TRUE jika geometri A dan B bersentuhan pada batas-batasnya tetapi tidak berpotongan secara internal.
st_equals(A, B)Mengembalikan TRUE jika geometri A dan B identik secara spasial.
st_overlap(A, B)Mengembalikan TRUE jika geometri A dan B tumpang tindih sebagian dan tidak ada yang sepenuhnya berisi yang lain.
st_dwithin(A, B, d)Mengembalikan TRUE jika jarak antara A dan B kurang dari d.

Cara Menggabungkan Indeks Geolokasi dan Indeks Vektor

Dengan dukungan Geometri dan indeks RTREE, Milvus dapat menggabungkan pemfilteran geospasial dengan pencarian kemiripan vektor dalam satu alur kerja. Proses ini bekerja dalam dua langkah:

1. Memfilter berdasarkan lokasi menggunakan RTREE: Milvus pertama-tama menggunakan indeks RTREE untuk mempersempit pencarian ke entitas dalam rentang geografis yang ditentukan (misalnya, "dalam jarak 2 km").

2. Beri peringkat berdasarkan semantik menggunakan pencarian vektor: Dari kandidat yang tersisa, indeks vektor memilih hasil Top-N yang paling mirip berdasarkan kemiripan semantik.

Kasus Penggunaan Dunia Nyata dari Pengambilan Vektor Geografis

1. Layanan Pengiriman: Rekomendasi yang Lebih Cerdas dan Sadar Lokasi

Platform seperti DoorDash atau Uber Eats menangani ratusan juta permintaan setiap harinya. Pada saat pengguna membuka aplikasi, sistem harus menentukan-berdasarkan lokasi pengguna, waktu, preferensi rasa, estimasi waktu pengantaran, lalu lintas waktu nyata, dan ketersediaan kurir-restoran atau kurir mana yang paling cocok untuk saat ini.

Biasanya, hal ini membutuhkan permintaan database geospasial dan mesin rekomendasi yang terpisah, diikuti dengan beberapa kali penyaringan dan pemeringkatan ulang. Dengan Indeks Geolokasi, Milvus sangat menyederhanakan alur kerja ini:

  • Penyimpanan terpadu - Koordinat restoran, lokasi kurir, dan penyematan preferensi pengguna, semuanya berada dalam satu sistem.

  • Pengambilan bersama - Pertama-tama terapkan filter spasial (misalnya, restoran dalam jarak 3 km), lalu gunakan pencarian vektor untuk menentukan peringkat berdasarkan kesamaan, preferensi rasa, atau kualitas.

  • Pengambilan keputusan yang dinamis - Menggabungkan distribusi kurir secara real-time dan sinyal lalu lintas untuk dengan cepat menentukan kurir terdekat yang paling sesuai.

Pendekatan terpadu ini memungkinkan platform untuk melakukan penalaran spasial dan semantik dalam satu kueri. Misalnya, ketika pengguna mencari "nasi kari," Milvus mengambil restoran yang relevan secara semantik dan memprioritaskan restoran yang terdekat, mengantarkan dengan cepat, dan sesuai dengan profil selera pengguna.

2. Mengemudi secara otonom: Keputusan yang Lebih Cerdas

Dalam pengemudian otonom, pengindeksan geospasial sangat penting untuk persepsi, pelokalan, dan pengambilan keputusan. Kendaraan harus terus menerus menyelaraskan diri dengan peta definisi tinggi, mendeteksi rintangan, dan merencanakan lintasan yang aman-semuanya hanya dalam beberapa milidetik.

Dengan Milvus, tipe Geometri dan indeks RTREE dapat menyimpan dan meminta struktur spasial yang kaya seperti:

  • Batas-batas jalan (LineString)

  • Zona pengaturan lalu lintas (Poligon)

  • Rintangan yangterdeteksi (Titik)

Struktur ini dapat diindeks secara efisien, sehingga data geospasial dapat mengambil bagian secara langsung dalam lingkaran keputusan AI. Sebagai contoh, kendaraan otonom dapat dengan cepat menentukan apakah koordinat saat ini berada di jalur tertentu atau bersinggungan dengan area terlarang, cukup melalui predikat spasial RTREE.

Ketika dikombinasikan dengan penyematan vektor yang dihasilkan oleh sistem persepsi-seperti penyematan pemandangan yang menangkap lingkungan mengemudi saat ini-Milvus dapat mendukung kueri yang lebih canggih, seperti mengambil skenario mengemudi historis yang mirip dengan yang sekarang dalam radius 50 meter. Hal ini membantu model menginterpretasikan lingkungan dengan lebih cepat dan membuat keputusan yang lebih baik.

Kesimpulan

Geolokasi lebih dari sekadar garis lintang dan garis bujur. Dalam aplikasi yang peka terhadap lokasi, geolokasi memberikan konteks penting tentang di mana peristiwa terjadi, bagaimana entitas berhubungan secara spasial, dan bagaimana hubungan tersebut membentuk perilaku sistem. Ketika digabungkan dengan sinyal semantik dari model pembelajaran mesin, data geospasial memungkinkan kelas kueri yang lebih kaya yang sulit untuk diekspresikan - atau tidak efisien untuk dieksekusi - ketika data spasial dan vektor ditangani secara terpisah.

Dengan diperkenalkannya Bidang Geometri dan indeks RTREE, Milvus menghadirkan pencarian kesamaan vektor dan penyaringan spasial ke dalam satu mesin kueri. Hal ini memungkinkan aplikasi untuk melakukan pengambilan bersama di seluruh vektor, data geospasial, dan waktu, mendukung kasus penggunaan seperti sistem rekomendasi yang sadar secara spasial, pencarian berbasis lokasi multimodal, dan analisis yang dibatasi wilayah atau jalur. Lebih penting lagi, hal ini mengurangi kompleksitas arsitektur dengan menghilangkan jalur pipa multi-tahap yang memindahkan data di antara sistem khusus.

Karena sistem AI terus bergerak lebih dekat dengan pengambilan keputusan di dunia nyata, pemahaman tentang konten apa yang relevan akan semakin perlu dipasangkan dengan tempat konten tersebut berlaku dan kapan konten tersebut penting. Milvus menyediakan blok bangunan untuk kelas beban kerja spasial-semantik ini dengan cara yang ekspresif dan praktis untuk beroperasi dalam skala besar.

Untuk informasi lebih lanjut mengenai Geometry Field dan indeks RTREE, lihat dokumentasi di bawah ini:

Ada pertanyaan atau ingin mendalami fitur Milvus terbaru? Bergabunglah dengan saluran Discord kami atau ajukan pertanyaan di GitHub. Anda juga dapat memesan sesi tatap muka selama 20 menit untuk mendapatkan wawasan, panduan, dan jawaban atas pertanyaan Anda melalui Milvus Office Hours.

Pelajari Lebih Lanjut tentang Fitur Milvus 2.6

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Terus Baca