Saat mengimplementasikan pencarian teks penuh atau pencarian vektor berbasis AI di MongoDB, Anda biasanya memerlukan mesin pencari terpisah seperti Elasticsearch. Hal ini menambah kompleksitas arsitektur, tantangan sinkronisasi data, dan beban operasional.
Fitur MongoDB Search mengintegrasikan node pencarian khusus (mongot) ke dalam instans MongoDB Anda, menyediakan kemampuan pencarian teks lengkap dan pencarian vektor yang mulus. Dengan demikian, Anda dapat menjalankan tugas pencarian multimodal menggunakan MongoDB Query Language (MQL) yang sudah dikenal tanpa perlu mengelola sistem eksternal, sehingga menyederhanakan pengembangan dan mengurangi beban operasional.
Penagihan (Uji Coba Gratis)
Fitur MongoDB Search saat ini berada dalam tahap pratinjau undangan. Anda dapat mengajukan uji coba gratis dengan mengisi formulir. Selama masa uji coba gratis, Anda tidak akan dikenai biaya untuk node pencarian mongot. Anda hanya perlu membayar untuk instans MongoDB utama.
Ruang Lingkup
Hanya tersedia untuk instans khusus set replika MongoDB 8.0. Kluster terbagi (sharded clusters) saat ini tidak didukung.
Hanya tersedia di wilayah cloud publik.
Cara kerjanya
MongoDB Search mengisolasi beban kerja pencarian dengan menambahkan node pencarian mongot khusus ke suatu instans. Pemisahan arsitektur ini mencegah tugas pencarian intensif memengaruhi kinerja database inti (node mongod).
Arsitektur inti: Node
mongotmerupakan sumber daya komputasi independen yang didedikasikan untuk memproses permintaan$search(pencarian teks lengkap) dan$vectorSearch(pencarian vektor).Sinkronisasi data: Node mongot mereplikasi oplog dari node mongod secara asinkron menggunakan Change Streams untuk menjaga indeks pencarian tetap mutakhir. Hal ini menjamin konsistensi akhir.
Routing kueri: Ketika kueri agregasi mencakup
$searchatau$vectorSearch,mongosmengarahkan bagian pencarian ke nodemongotuntuk dieksekusi. Hasil pencarian kemudian digabungkan dengan hasil kueri reguler dari nodemongod, menghasilkan satu set hasil terpadu.
Aktifkan Pencarian MongoDB
Tujuan
Anda dapat mengaktifkan MongoDB Search untuk instans MongoDB yang sudah ada guna membuat node pencarian mongot khusus.
Prosedur
Buka halaman Instans ReplicaSet MongoDB. Pilih kelompok sumber daya dan wilayah dari bilah atas, lalu klik ID instans target.
Pada panel navigasi di sebelah kiri, klik MongoDB Search.
Di halaman MongoDB Search, klik Activate Now.
Pada panel Aktifkan Pencarian, konfigurasikan Search Node Specifications.
Parameter
Deskripsi
Specifications
Pilih spesifikasi komputasi yang sesuai untuk node pencarian
mongot. Pilih berdasarkan permintaan per detik (QPS) yang diharapkan dan kompleksitas data.Storage
Alokasikan ruang disk untuk node
mongotuntuk menyimpan indeks Pencarian. Ruang ini terpisah dari penyimpanan instans utama. Perkirakan ruang yang dibutuhkan berdasarkan volume data sumber dan kompleksitas indeks, serta sisakan kapasitas tambahan.Atur spesifikasi node pencarian dan ukuran penyimpanan tidak kurang dari instans utama. Anda dapat mengubah konfigurasi nanti berdasarkan beban kerja aktual.
Baca dan pilih Service Agreement.
Klik Pay Now.
Setelah node dibuat, Anda dapat melihat informasi node pencarian baru pada halaman MongoDB Search dan melakukan operasi Upgrade/Downgrade, Restart, dan Release.
Mengelola MongoDB Search node
Pada halaman MongoDB Search, Anda dapat melakukan operasi berikut pada node pencarian yang telah dibuat:
Upgrade/Downgrade: Anda dapat menyesuaikan spesifikasi komputasi atau ruang penyimpanan node
mongotuntuk mengakomodasi perubahan bisnis. Jumlah node Pencarian adalah dua dan tidak dapat diubah.Restart: Anda dapat me-restart node
mongotuntuk memecahkan masalah atau menerapkan konfigurasi tertentu. Layanan pencarian akan tidak tersedia sejenak selama proses restart.Rilis: Anda dapat merilis node
mongotjika tidak lagi memerlukan fitur Pencarian.PentingOperasi rilis akan menghapus permanen semua indeks pencarian yang telah dibuat dan tidak dapat dikembalikan.
Buat dan gunakan indeks Pencarian
Tujuan
Anda dapat mengaktifkan pencarian teks lengkap atau pencarian vektor dengan membuat jenis indeks Pencarian yang berbeda. Semua operasi dilakukan menggunakan MongoDB Shell (mongosh) atau driver MongoDB yang kompatibel.
Prasyarat
Anda telah terhubung ke instans MongoDB target melalui mongosh atau aplikasi.
Contoh 1: Implementasikan pencarian teks penuh untuk ulasan produk
Contoh ini menunjukkan cara membuat indeks pencarian teks lengkap pada koleksi reviews dan menjalankan kueri kata kunci.
Buat indeks pencarian dengan pemetaan dinamis.
dynamic: truemengonfigurasi MongoDB untuk secara otomatis mengindeks semua bidang dalam koleksi. Ini ideal untuk prototipe cepat.// Buat indeks Pencarian bernama 'reviews_full_text_index' pada koleksi 'reviews' db.reviews.createSearchIndex({ name: "reviews_full_text_index", definition: { "mappings": { "dynamic": true } } });Gunakan tahap agregasi
$searchuntuk mengkueri ulasan yang berisi kata kunci tertentu. Kueri berikut menemukan ulasan di mana bidangcommentberisi "good" dan mengembalikan komentar, peringkat, serta ID produk.db.reviews.aggregate([ { $search: { index: "reviews_full_text_index", // Tentukan indeks Pencarian yang digunakan text: { query: "bagus", // Kata kunci kueri path: "comment" // Cari di bidang 'comment' } } }, { $limit: 5 }, { $project: { _id: 0, productId: 1, rating: 1, comment: 1, score: { $meta: "searchScore" } // Kembalikan skor relevansi pencarian } } ]);
Contoh 2: Implementasikan pencarian berdasarkan gambar berdasarkan fitur citra
Contoh ini menunjukkan cara membuat indeks pencarian vektor untuk koleksi images dan melakukan pencarian kemiripan pada fitur vektor citra.
Buat indeks pencarian vektor. Anda harus menentukan path bidang vektor, jumlah dimensi (
numDimensions), dan metode kemiripan (similarity).// 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,// Jumlah dimensi vektor "similarity": "dotProduct",// Metode perhitungan kesamaan "quantization": "scalar" } ] } );Anda dapat menggunakan tahap agregasi
$vectorSearchuntuk menemukan citra yang paling mirip dengan citra tertentu. Anda harus menyediakan vektor kueri (queryVector), yang biasanya dihasilkan oleh model AI berdasarkan citra masukan.numCandidates: Ukuran set kandidat. Parameter ini merepresentasikan pertukaran antara kinerja dan tingkat recall. Nilai yang lebih tinggi meningkatkan tingkat recall tetapi memerlukan lebih banyak sumber daya dan dapat meningkatkan latensi.// Anggap QUERY_EMBEDDING adalah vektor 1024-dimensi yang dihasilkan oleh model AI const QUERY_EMBEDDING = [0.12, 0.45, -0.23, ...]; // Contoh vektor. Ganti dengan data vektor Anda yang sebenarnya. // Lakukan pencarian berdasarkan kesamaan 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" } } } ])
Menuju produksi
Pemantauan dan O&M
Metrik pemantauan: Node pencarian
mongottidak memiliki metrik pemantauan khusus. Anda dapat menilai dampak beban kerja pencarian dengan mengamati metrik CPU, memori, I/O, dan jaringan pada instans utama.Manajemen log: Saat ini Anda tidak dapat melihat log berjalan, log kueri lambat, atau log audit pada node
mongot. Untuk kueri lambat, Anda dapat menggunakan metodeexplain()untuk menganalisis rencana eksekusi tahap$searchatau$vectorSearchguna mengidentifikasi hambatan kinerja.Manajemen indeks: Anda dapat menggunakan perintah
db.collection.getSearchIndexes()untuk melihat indeks Pencarian yang ada beserta statusnya.
Ketersediaan tinggi dan failover
Node pencarian diterapkan dalam arsitektur 2-node secara default. Jika satu node gagal, sistem secara otomatis melakukan failover dan merutekan lalu lintas ke node yang sehat. Pastikan aplikasi Anda memiliki mekanisme pengulangan.
Cadangan, pemulihan, dan sinkronisasi data
Pencadangan dan pemulihan: Instans baru yang dipulihkan dari file cadangan tidak menyertakan indeks pencarian dari instans asli. Anda harus mengaktifkan layanan pencarian dan membangun ulang semua indeks pencarian pada instans baru tersebut.
Migrasi data: Saat Anda menggunakan alat seperti Data Transmission Service (DTS) untuk migrasi atau sinkronisasi data, indeks pencarian tidak disinkronkan. Anda harus membuat indeks tersebut secara manual pada instans tujuan.
FAQ
T: Berapa lama setelah menulis data saya bisa mencarinya?
J: Sinkronisasi data bersifat asinkron. Anda biasanya dapat mencari data dalam beberapa detik. Latensi dipengaruhi oleh faktor-faktor seperti beban tulis instans, ukuran dokumen, dan kondisi jaringan.
T: Apa yang memicu pembangunan ulang indeks? Apakah upgrade atau downgrade memicu pembangunan ulang indeks?
J: Saat Anda mengubah definisi indeks, mongot secara otomatis membangun ulang indeks baru di latar belakang. Selama proses ini, indeks lama masih dapat melayani kueri. Setelah indeks baru selesai dibangun, indeks lama tidak lagi tersedia. Upgrade atau downgrade node pencarian tidak secara langsung terkait dengan pembuatan ulang indeks.