
Salah satu aplikasi LLMS yang paling kuat adalah penciptaan chatbots order-ananswering (Q&A) yang canggih, yang mampu memberikan jawaban yang akurat berdasarkan informasi sumber tertentu. Proyek ini berfokus pada pengembangan asisten virtual untuk Perpustakaan Deal.ii, perpustakaan elemen terbatas C ++ open-source, menggunakan teknik yang dikenal sebagai Retrieval-Agusted Generation (RAG). Dataset ini bersumber dari 90 langkah tutorial yang tersedia dalam dokumentasi resmi. Dokumentasi, yang dapat diakses di sini. Mesin Model Bahasa Besar (LLM) disediakan oleh cohere yang dikenal untuk memberikan model LLM berkualitas tinggi untuk embeddings dan layanan obrolan. Untuk database vektor, kami memilih Chroma karena sifat open-source, kecepatan, dan efisiensi dalam mencari dan mengambil vektor. Kerangka kerja Langchain digunakan untuk mengelola interaksi antara input pengguna secara efisien, pemrosesan kueri, dan pengambilan informasi yang relevan dari database vektor, memastikan integrasi yang mulus antara berbagai komponen model.
Proses untuk mempersiapkan database adalah sebagai berikut: Pertama, halaman tutorial diambil dari situs web sebagai objek dokumen Langchain. Untuk meningkatkan kecepatan akses (selama waktu pengujian), objek dokumen ini disimpan sebagai file JSON pada disk lokal. Selanjutnya, dokumen dibagi menjadi potongan ukuran yang tepat (sekitar 400 token per chunk dengan tumpang tindih 40 token). Secara total, dataset terdiri dari 2,3 juta token. Akhirnya, dokumen split ini tertanam ke dalam database vektor.
Model ini dibangun menggunakan empat rantai dan tiga templat cepat.
Reformulasi Rantai : Rantai ini menerima pertanyaan dan riwayat percakapan pengguna, kemudian merumuskan kembali pertanyaan berdasarkan dialog sebelumnya. Misalnya, jika pertanyaan pertama adalah "Apa itu fe_nothing?" Dan pertanyaan kedua adalah "Di mana saya bisa menggunakannya?", Rantai reformulasi akan memodifikasi pertanyaan kedua menjadi "di mana saya dapat menggunakan fe_nothing?" Langkah ini pada dasarnya menambahkan memori ke dalam percakapan, memastikan kontinuitas konteks.
Rantai multi-pertanyaan : Rantai ini mengambil pertanyaan yang diformulasi ulang dan menghasilkan lima pertanyaan serupa, memberikan banyak perspektif. Ini menghasilkan daftar pertanyaan python menggunakan fungsi lambda sederhana, dan setiap baris kosong dihapus menggunakan fungsi remove_empty_string sebagai langkah terakhir.
Rantai Pengambilan : Rantai ini mengambil lima pertanyaan dari rantai sebelumnya dan menanyakan database vektor. Vektor database mencari vektor serupa dan mengambil dokumen yang relevan. Karena dokumen yang sama dapat diambil beberapa kali untuk pertanyaan yang berbeda, serangkaian dokumen unik dibuat menggunakan fungsi get_unique_union sebagai langkah terakhir.
Rantai Rag : Rantai ini menggunakan pertanyaan, riwayat percakapan, dan dokumen yang diambil dari rantai sebelumnya sebagai konteks untuk menghasilkan jawaban akhir.
Ujung depan aplikasi dibangun menggunakan ChatInterface gradio, dengan fungsi respons yang dirancang untuk mengalirkan output secara real time. Aplikasi ini digunakan di ruang wajah yang memeluk dan dapat diakses di sini.