Pencarian teks penuh dan pengambilan vektor di MongoDB biasanya memerlukan mesin pencari terpisah seperti Elasticsearch, yang menambah kompleksitas arsitektur serta beban overhead sinkronisasi data.
MongoDB Search menyematkan node pencarian khusus (mongot) ke dalam instans Anda, menyediakan kemampuan pencarian teks penuh dan vektor bawaan yang dapat diakses melalui MQL—tanpa memerlukan sistem pencarian eksternal.
Penagihan (uji coba gratis)
MongoDB Search saat ini berada dalam pratinjau undangan. Kirim tiket untuk mengajukan akses. Selama masa pratinjau, node pencarian mongot gratis. Anda hanya dikenai biaya untuk instans MongoDB primary Anda.
Persyaratan
-
Instans dedicated replica set atau sharded cluster yang menjalankan MongoDB 8.0 atau lebih baru.
-
Hanya tersedia di wilayah publik Alibaba Cloud.
-
MongoDB 8.3 memperkenalkan Auto Embedding: mongot secara otomatis menghasilkan vektor saat Anda menulis teks, sehingga menghilangkan kebutuhan penyematan di sisi klien. Contoh penggunaan MongoDB Search dan layanan model.
Cara kerja
MongoDB Search menambahkan node pencarian mongot khusus ke instans Anda, sehingga beban kerja pencarian tetap terisolasi dari database inti (node mongod).
-
Arsitektur inti: Node
mongotmerupakan sumber daya komputasi independen yang menangani kueri$search(teks penuh) dan$vectorSearch(vektor). -
Sinkronisasi data: Node mongot mereplikasi oplog dari node mongod secara asinkron melalui Change Streams, memastikan konsistensi akhir.
-
Perutean kueri: Saat agregasi berisi
$searchatau$vectorSearch,mongosmengarahkan bagian pencarian kemongot, menggabungkan hasilnya dengan datamongod, lalu mengembalikan set hasil terpadu.
Aktifkan layanan Search
Tujuan
Aktifkan Search pada instans MongoDB yang sudah ada untuk membuat node pencarian mongot khusus.
Prosedur
-
Buka halaman Replica Set Instances atau Sharded Cluster Instances. Di bilah navigasi atas, pilih kelompok sumber daya dan wilayah tempat instans yang diinginkan berada. Lalu, temukan instans tersebut dan klik ID instansnya.
-
Di panel navigasi sebelah kiri, pilih MongoDB Search.
-
Di halaman MongoDB Search, klik Activate now.
-
Di panel Enable Search, konfigurasikan Search Node Specifications.
Parameter
Deskripsi
Specifications
Pilih spesifikasi node
mongotberdasarkan QPS dan kompleksitas data yang diharapkan.Storage
Disk space untuk indeks pencarian
mongot, terpisah dari penyimpanan instans primary. Pilih ukuran berdasarkan volume data dan kompleksitas indeks Anda, serta sisakan ruang untuk pertumbuhan.Atur spesifikasi dan penyimpanan node pencarian minimal sesuai dengan instans primary Anda. Anda dapat menyesuaikannya nanti berdasarkan beban aktual.
-
Baca dan centang Service Agreement.
-
Klik Pay.
Setelah pembuatan selesai, lihat detail node Search di halaman MongoDB Search. Dari sana, Anda dapat melakukan Upgrade/Downgrade, Restart, atau Release node tersebut.
Kelola node Search
Di halaman MongoDB Search, Anda dapat:
-
Upgrade atau downgrade: Sesuaikan spesifikasi atau penyimpanan node
mongot. Dua node Search disediakan secara default; jumlah node tidak dapat diubah. -
Restart: Restart node
mongotuntuk troubleshooting atau perubahan konfigurasi. Layanan Search akan tidak tersedia sementara selama proses restart. -
Release: Lepaskan node
mongotjika Anda tidak lagi memerlukan fungsionalitas Search.PentingMelepas node akan menghapus permanen semua indeks Search. Tindakan ini tidak dapat dikembalikan.
Buat dan gunakan indeks Search
Tujuan
Buat indeks Search untuk pencarian teks penuh atau pencarian vektor menggunakan mongosh atau driver MongoDB yang kompatibel.
Prasyarat
Anda telah terhubung ke instans MongoDB target menggunakan mongosh atau aplikasi Anda.
Contoh 1: Pencarian teks penuh pada ulasan produk
Buat indeks Search teks penuh pada koleksi reviews dan jalankan kueri berbasis kata kunci.
-
Buat indeks Search dengan pemetaan dinamis.
dynamic: truemengindeks semua bidang secara otomatis—ideal untuk prototyping.// Buat indeks Search bernama 'reviews_full_text_index' pada koleksi 'reviews' db.reviews.createSearchIndex({ name: "reviews_full_text_index", definition: { "mappings": { "dynamic": true } } }); -
Gunakan tahap agregasi
$searchuntuk mencari ulasan berdasarkan kata kunci. Kueri ini mencocokkan "good" pada bidangcommentdan mengembalikan komentar, rating, serta ID produk.db.reviews.aggregate([ { $search: { index: "reviews_full_text_index", // Tentukan indeks Search yang digunakan text: { query: "good", // Kata kunci pencarian path: "comment" // Cari di bidang 'comment' } } }, { $limit: 5 }, { $project: { _id: 0, productId: 1, rating: 1, comment: 1, score: { $meta: "searchScore" } // Kembalikan skor relevansi } } ]);
Contoh 2: Pencarian berdasarkan gambar menggunakan fitur visual
Buat indeks pencarian vektor pada koleksi images dan jalankan pencarian kemiripan terhadap vektor gambar yang tersimpan.
-
Buat indeks Search vektor. Tentukan bidang vektor,
numDimensions, dan metriksimilarity.// Buat indeks vektor bernama 'vector_index' pada koleksi 'images' db.images.createSearchIndex( "vector_index", "vectorSearch", { "fields": [ { "type": "vector", "path": "plot_embedding_voyage_3_large",// Bidang yang menyimpan vektor "numDimensions": 2048,// Dimensi vektor "similarity": "dotProduct",// Metrik kemiripan "quantization": "scalar" } ] } ); -
Gunakan
$vectorSearchuntuk mencari gambar serupa. BerikanqueryVector, yang biasanya dihasilkan oleh model AI dari gambar input.numCandidates: ukuran set kandidat. Nilai yang lebih tinggi meningkatkan recall tetapi menambah penggunaan sumber daya dan latensi.// Asumsikan QUERY_EMBEDDING adalah vektor berdimensi 1024 yang dihasilkan oleh model AI const QUERY_EMBEDDING = [0.12, 0.45, -0.23, ...]; // Contoh vektor—ganti dengan data nyata // Ambil berdasarkan kemiripan vektor db.images.aggregate([ { "$vectorSearch": { "index": "vector_index", "path": "plot_embedding_voyage_3_large", "queryVector": QUERY_EMBEDDING, "numCandidates": 150, "limit": 10, "quantization": "scalar" } }, { "$project": { "_id": 0, "plot": 1, "title": 1, "score": { $meta: "vectorSearchScore" } } } ])
Auto Embedding (baru di 8.3)
MongoDB 8.3 memperkenalkan Auto Embedding. Tentukan tipe autoEmbed saat membuat indeks vektor, dan mongot secara otomatis memanggil model penyematan tertentu seperti text-embedding-v4 untuk menghasilkan vektor saat dokumen ditulis. Saat kueri, masukkan langsung teks bahasa alami—sistem akan mengonversinya menjadi vektor sebelum melakukan pencarian.
Keunggulan dibanding pencarian vektor tradisional:
-
Tidak memerlukan SDK model penyematan di aplikasi Anda.
-
Vektor dihasilkan dan diperbarui secara otomatis di sisi database, memastikan konsistensi.
-
Proxy model terpadu melalui platform layanan model, mendukung penyematan, rerank, dan LLM seri Qwen.
Untuk panduan lengkap yang mencakup penyiapan layanan model, pembuatan indeks autoEmbed, pencarian semantik, dan pemanggilan model, lihat Contoh penggunaan MongoDB Search dan layanan model.
Mulai produksi
Pemantauan dan operasi
-
Metrik pemantauan: Node pencarian
mongotmenyediakan metrik pemantauan berikut, yang dapat Anda lihat di halaman Monitoring and Alerting di Konsol:Metrik
Deskripsi
Penggunaan CPU
Pemanfaatan CPU pada node pencarian
Penggunaan memori
Pemanfaatan memori pada node pencarian
Penggunaan IOPS / laju penggunaan IOPS
Operasi I/O per detik pada node pencarian
Penggunaan disk space / laju penggunaan disk space
Konsumsi disk space pada node pencarian
MBPS / laju penggunaan MBPS
Throughput jaringan pada node pencarian
Jumlah bidang indeks node pencarian
Jumlah bidang yang diindeks
Penggunaan memori heap node pencarian
Penggunaan memori heap JVM pada node pencarian
Jumlah operasi node pencarian
Jumlah operasi kueri dan tulis yang diproses
Penggunaan disk space indeks node pencarian
Disk space yang digunakan oleh indeks pencarian
Info Dokumen Lucene Search Node
Jumlah dokumen dan statistik indeks Lucene lainnya
Latensi sinkronisasi node pencarian
Penundaan sinkronisasi data antara node pencarian dan instans primary
-
Manajemen log: Node
mongottidak mendukung log operasional, slow-query, atau log audit. Gunakanexplain()pada tahap$searchatau$vectorSearchuntuk mengidentifikasi bottleneck kinerja. -
Manajemen indeks: Jalankan
db.collection.getSearchIndexes()untuk melihat indeks Search dan statusnya.
Ketersediaan tinggi dan failover
-
Node pencarian menggunakan konfigurasi dua node secara default. Jika satu node gagal, sistem secara otomatis melakukan failover ke node sehat yang tersisa. Terapkan logika retry di aplikasi Anda.
Backup, pemulihan, dan migrasi data
-
Backup dan pemulihan: Instans yang dipulihkan dari backup tidak menyertakan indeks pencarian. Aktifkan kembali Search dan bangun ulang indeks pada instans yang dipulihkan.
-
Migrasi data: Data Transmission Service (DTS) dan alat serupa tidak menyinkronkan indeks pencarian. Buat ulang indeks pada instans target setelah migrasi.
FAQ
-
T: Berapa lama setelah menulis data saya bisa mencarinya?
J: Sinkronisasi data bersifat asinkron. Data biasanya dapat dicari dalam hitungan detik, tergantung pada volume tulis, ukuran dokumen, dan kondisi jaringan.
-
T: Kapan pembangunan ulang indeks dipicu? Apakah upgrade atau downgrade memicu pembangunan ulang?
J: Mengubah definisi indeks memicu pembangunan ulang latar belakang otomatis. Indeks lama tetap dapat dikueri hingga yang baru selesai. Upgrade atau downgrade node tidak memicu pembangunan ulang indeks.