Arsitektur Keseluruhan
Proyek Milvus:github.com/milvus-io/milvus
Sistem penjawab pertanyaan umumnya digunakan dalam bidang pemrosesan bahasa alami. Sistem ini digunakan untuk menjawab pertanyaan dalam bentuk bahasa alami dan memiliki berbagai macam aplikasi. Aplikasi yang umum digunakan meliputi: interaksi suara cerdas, layanan pelanggan online, akuisisi pengetahuan, obrolan emosional yang dipersonalisasi, dan banyak lagi. Sebagian besar sistem penjawab pertanyaan dapat diklasifikasikan sebagai: sistem penjawab pertanyaan generatif dan pengambilan, sistem penjawab pertanyaan satu putaran dan sistem penjawab pertanyaan banyak putaran, sistem penjawab pertanyaan terbuka, dan sistem penjawab pertanyaan khusus.
Artikel ini terutama membahas tentang sistem QA yang dirancang untuk bidang tertentu, yang biasanya disebut robot layanan pelanggan yang cerdas. Di masa lalu, membangun robot layanan pelanggan biasanya membutuhkan konversi pengetahuan domain menjadi serangkaian aturan dan grafik pengetahuan. Proses konstruksi sangat bergantung pada kecerdasan "manusia". Dengan penerapan deep learning dalam pemrosesan bahasa alami (NLP), mesin pembaca dapat secara otomatis menemukan jawaban atas pertanyaan yang cocok secara langsung dari dokumen. Model bahasa deep learning mengubah pertanyaan dan dokumen menjadi vektor semantik untuk menemukan jawaban yang cocok.
Artikel ini menggunakan model BERT sumber terbuka Google dan Milvus, mesin pencari vektor sumber terbuka, untuk dengan cepat membangun bot tanya jawab berdasarkan pemahaman semantik.
Arsitektur Keseluruhan
Artikel ini mengimplementasikan sistem penjawab pertanyaan melalui pencocokan kemiripan semantik. Proses konstruksi secara umum adalah sebagai berikut:
- Dapatkan sejumlah besar pertanyaan dengan jawaban dalam bidang tertentu (kumpulan pertanyaan standar).
- Gunakan model BERT untuk mengubah pertanyaan-pertanyaan ini menjadi vektor fitur dan menyimpannya di Milvus. Dan Milvus akan memberikan ID vektor untuk setiap vektor fitur pada saat yang bersamaan.
- Simpan ID pertanyaan yang representatif dan jawaban yang sesuai di PostgreSQL.
Ketika seorang pengguna mengajukan pertanyaan:
- Model BERT mengubahnya menjadi vektor fitur.
- Milvus melakukan pencarian kemiripan dan mengambil ID yang paling mirip dengan pertanyaan.
- PostgreSQL mengembalikan jawaban yang sesuai.
Diagram arsitektur sistem adalah sebagai berikut (garis biru mewakili proses impor dan garis kuning mewakili proses kueri):
1-sistem-arsitektur-milvus-bert-postgresql.png
Selanjutnya, kami akan menunjukkan kepada Anda bagaimana cara membangun sistem tanya jawab online selangkah demi selangkah.
Langkah-langkah untuk Membangun Sistem Tanya Jawab
Sebelum memulai, Anda perlu menginstal Milvus dan PostgreSQL. Untuk langkah-langkah instalasi spesifik, lihat situs web resmi Milvus.
1. Persiapan data
Data percobaan dalam artikel ini berasal dari: https://github.com/chatopera/insuranceqa-corpus-zh
Kumpulan data tersebut berisi pasangan data pertanyaan dan jawaban yang berhubungan dengan industri asuransi. Dalam artikel ini kami mengekstrak 20.000 pasangan pertanyaan dan jawaban darinya. Melalui kumpulan data pertanyaan dan jawaban ini, Anda dapat dengan cepat membangun robot layanan pelanggan untuk industri asuransi.
2. Menghasilkan vektor fitur
Sistem ini menggunakan model yang telah dilatih sebelumnya oleh BERT. Unduh dari tautan di bawah ini sebelum memulai layanan: https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip
Gunakan model ini untuk mengubah basis data pertanyaan menjadi vektor fitur untuk pencarian kemiripan di masa mendatang. Untuk informasi lebih lanjut tentang layanan BERT, lihat https://github.com/hanxiao/bert-as-service.
2-code-block.png
3. Mengimpor ke Milvus dan PostgreSQL
Normalisasi dan impor vektor fitur yang dihasilkan impor ke Milvus, dan kemudian impor ID yang dikembalikan oleh Milvus dan jawaban yang sesuai ke PostgreSQL. Berikut ini menunjukkan struktur tabel dalam PostgreSQL:
3-impor-milvus-postgresql.png
4-impor-milvus-postgresql.png
4. Mengambil Jawaban
Pengguna memasukkan sebuah pertanyaan, dan setelah membuat vektor fitur melalui BERT, mereka dapat menemukan pertanyaan yang paling mirip di perpustakaan Milvus. Artikel ini menggunakan jarak kosinus untuk merepresentasikan kemiripan antara dua kalimat. Karena semua vektor dinormalisasi, semakin dekat jarak kosinus dari dua vektor fitur ke 1, semakin tinggi kemiripannya.
Dalam praktiknya, sistem Anda mungkin tidak memiliki pertanyaan yang sangat cocok di perpustakaan. Kemudian, Anda dapat menetapkan ambang batas 0,9. Jika jarak kemiripan terbesar yang diperoleh kurang dari ambang batas ini, sistem akan meminta agar tidak menyertakan pertanyaan terkait.
4-mengambil-jawaban.png
Demonstrasi Sistem
Berikut ini adalah contoh tampilan antarmuka sistem:
5-milvus-QA-sistem-aplikasi.png
Masukkan pertanyaan Anda dalam kotak dialog dan Anda akan menerima jawaban yang sesuai:
5-milvus-QA-system-application-2.png
Ringkasan
Setelah membaca artikel ini, kami harap Anda dapat dengan mudah membuat Sistem Tanya Jawab Anda sendiri.
Dengan model BERT, Anda tidak perlu lagi menyortir dan mengatur korpus teks sebelumnya. Pada saat yang sama, berkat kinerja tinggi dan skalabilitas tinggi dari mesin pencari vektor open source Milvus, sistem QA Anda dapat mendukung korpus hingga ratusan juta teks.
Milvus telah secara resmi bergabung dengan Linux AI (LF AI) Foundation untuk inkubasi. Anda dipersilakan untuk bergabung dengan komunitas Milvus dan bekerja sama dengan kami untuk mempercepat penerapan teknologi AI!
=> Coba demo online kami di sini: https://www.milvus.io/scenarios
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word