🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
  • Home
  • Blog
  • Bangun Pencarian Semantik dengan Cepat

Bangun Pencarian Semantik dengan Cepat

  • Scenarios
April 19, 2021
Elizabeth Edmiston

Pencarian semantik adalah alat yang hebat untuk membantu pelanggan-atau karyawan Anda-menemukan produk atau informasi yang tepat. Pencarian semantik bahkan dapat memunculkan informasi yang sulit diindeks untuk hasil yang lebih baik. Meskipun demikian, jika metodologi semantik Anda tidak digunakan untuk bekerja dengan cepat, metodologi tersebut tidak akan ada gunanya bagi Anda. Pelanggan atau karyawan tidak hanya akan duduk-duduk saja sementara sistem meluangkan waktu untuk merespons pertanyaan mereka-dan ribuan pertanyaan lain mungkin sedang dicerna pada saat yang bersamaan.

Bagaimana Anda dapat membuat pencarian semantik menjadi cepat? Pencarian semantik yang lambat tidak akan berhasil.

Untungnya, ini adalah jenis masalah yang ingin dipecahkan oleh Lucidworks. Baru-baru ini kami menguji sebuah klaster berukuran sedang-baca terus untuk detail lebih lanjut-yang menghasilkan 1500 RPS (permintaan per detik) terhadap koleksi lebih dari satu juta dokumen, dengan waktu respons rata-rata sekitar 40 milidetik. Ini adalah kecepatan yang luar biasa.


Untuk mewujudkan keajaiban pembelajaran mesin yang secepat kilat, Lucidworks telah mengimplementasikan pencarian semantik menggunakan pendekatan pencarian vektor semantik. Ada dua bagian penting.


Bagian Satu: Model Pembelajaran Mesin

Pertama, Anda membutuhkan cara untuk mengkodekan teks menjadi vektor numerik. Teks tersebut dapat berupa deskripsi produk, permintaan pencarian pengguna, pertanyaan, atau bahkan jawaban dari sebuah pertanyaan. Model pencarian semantik dilatih untuk menyandikan teks sedemikian rupa sehingga teks yang secara semantik mirip dengan teks lainnya dikodekan menjadi vektor yang secara numerik "dekat" satu sama lain. Langkah penyandian ini harus cepat untuk mendukung ribuan atau lebih kemungkinan pencarian pelanggan atau pertanyaan pengguna yang masuk setiap detiknya.


Bagian Dua: Mesin Pencari Vektor

Kedua, Anda membutuhkan cara untuk menemukan kecocokan terbaik dengan pencarian pelanggan atau pertanyaan pengguna dengan cepat. Model akan mengkodekan teks tersebut ke dalam vektor numerik. Dari sana, Anda perlu membandingkannya dengan semua vektor numerik dalam katalog atau daftar pertanyaan dan jawaban Anda untuk menemukan kecocokan terbaik-vektor yang "paling dekat" dengan vektor kueri. Untuk itu, Anda memerlukan mesin vektor yang dapat menangani semua informasi tersebut secara efektif dan secepat kilat. Mesin ini dapat berisi jutaan vektor dan Anda hanya menginginkan dua puluh atau lebih kecocokan terbaik untuk kueri Anda. Dan tentu saja, mesin ini harus menangani seribu atau lebih kueri seperti itu setiap detiknya.

Untuk mengatasi tantangan ini, kami menambahkan mesin pencari vektor Milvus pada rilis Fusion 5.3. Milvus adalah perangkat lunak sumber terbuka dan cepat. Milvus menggunakan FAISS(Facebook AI Similarity Search), teknologi yang sama dengan yang digunakan Facebook dalam produksi untuk inisiatif pembelajaran mesinnya. Ketika dibutuhkan, ia dapat berjalan lebih cepat lagi pada GPU. Ketika Fusion 5.3 (atau yang lebih tinggi) diinstal dengan komponen pembelajaran mesin, Milvus secara otomatis diinstal sebagai bagian dari komponen tersebut sehingga Anda dapat mengaktifkan semua kemampuan ini dengan mudah.

Ukuran vektor dalam koleksi yang diberikan, yang ditentukan ketika koleksi dibuat, tergantung pada model yang menghasilkan vektor tersebut. Sebagai contoh, koleksi yang diberikan dapat menyimpan vektor yang dibuat dari pengkodean (melalui model) semua deskripsi produk dalam katalog produk. Tanpa mesin pencari vektor seperti Milvus, pencarian kemiripan tidak akan dapat dilakukan di seluruh ruang vektor. Jadi, pencarian kemiripan harus dibatasi pada kandidat yang telah dipilih sebelumnya dari ruang vektor (misalnya, 500) dan akan memiliki kinerja yang lebih lambat dan hasil yang lebih rendah. Milvus dapat menyimpan ratusan miliar vektor di berbagai koleksi vektor untuk memastikan bahwa pencariannya cepat dan hasilnya relevan.


Mari kita kembali ke alur kerja pencarian semantik, setelah kita mempelajari sedikit tentang mengapa Milvus mungkin sangat penting. Pencarian semantik memiliki tiga tahap. Pada tahap pertama, model pembelajaran mesin dimuat dan/atau dilatih. Setelah itu, data diindeks ke dalam Milvus dan Solr. Tahap terakhir adalah tahap kueri, ketika pencarian yang sebenarnya terjadi. Kami akan fokus pada dua tahap terakhir di bawah ini.


Mengindeks ke dalam Milvus

Lucidworks-1.png Lucidworks-1.png

Seperti yang ditunjukkan pada diagram di atas, tahap kueri dimulai dengan cara yang sama seperti tahap pengindeksan, hanya saja dengan kueri yang masuk, bukan dokumen. Untuk setiap kueri:

  1. Kueri dikirim ke pipa indeks Smart Answers.
  2. Kueri kemudian dikirim ke model ML.
  3. Model ML mengembalikan vektor numerik (terenkripsi dari kueri). Sekali lagi, jenis model menentukan ukuran vektor.
  4. Vektor tersebut dikirim ke Milvus, yang kemudian menentukan vektor mana, dalam koleksi Milvus yang ditentukan, yang paling cocok dengan vektor yang disediakan.
  5. Milvus mengembalikan daftar ID unik dan jarak yang sesuai dengan vektor yang ditentukan pada langkah keempat.
  6. Kueri yang berisi ID dan jarak tersebut dikirim ke Solr.
  7. Solr kemudian mengembalikan daftar dokumen yang diurutkan yang terkait dengan ID tersebut.


Pengujian Skala

Untuk membuktikan bahwa alur penelusuran semantik kami berjalan dengan efisiensi yang kami perlukan untuk pelanggan kami, kami menjalankan pengujian skala menggunakan skrip Gatling di Google Cloud Platform menggunakan klaster Fusion dengan delapan replika model ML, delapan replika layanan kueri, dan satu contoh Milvus. Pengujian dijalankan menggunakan indeks Milvus FLAT dan HNSW. Indeks FLAT memiliki recall 100%, tetapi kurang efisien - kecuali jika datasetnya kecil. Indeks HNSW (Hierarchical Small World Graph) masih memiliki hasil yang berkualitas tinggi dan memiliki kinerja yang lebih baik pada set data yang lebih besar.

Mari kita lihat beberapa angka dari contoh terbaru yang kami jalankan:

Lucidworks-2.png Lucidworks-2.png

Lucidworks-3.png Lucidworks-3.png

Lucidworks-4.png Lucidworks-4.png


Memulai

Pipeline Smart Answers dirancang agar mudah digunakan. Lucidworks memiliki model-model yang sudah terlatih yang mudah digunakan dan secara umum memberikan hasil yang baik-meskipun melatih model Anda sendiri, bersamaan dengan model yang sudah terlatih, akan memberikan hasil yang terbaik. Hubungi kami hari ini untuk mempelajari bagaimana Anda dapat menerapkan inisiatif ini ke dalam alat pencarian Anda untuk memberikan hasil yang lebih efektif dan menyenangkan.

Blog ini diposting ulang dari: https://lucidworks.com/post/how-to-build-fast-semantic-search/?utm_campaign=Oktopost-Blog+Posts&utm_medium=organic_social&utm_source=linkedin

    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