Menambah Model Bahasa Besar dengan Retrieval-Augmented Generation dan Fine-tuning
Artikel dalam seri ini membahas model pengambilan pengetahuan yang digunakan LLM untuk menghasilkan respons mereka. Secara default, Model Bahasa Besar (LLM) hanya memiliki akses ke data pelatihannya. Namun, Anda dapat menambah model untuk menyertakan data real-time atau data privat. Artikel ini membahas salah satu dari dua mekanisme untuk menambah model.
Mekanisme pertama adalah Retrieval-Augmented Generation (RAG), yang merupakan bentuk pra-pemrosesan yang menggabungkan pencarian semantik dengan priming kontekstual (dibahas di artikel lain).
Mekanisme kedua adalah penyempurnaan, yang mengacu pada proses pelatihan model lebih lanjut pada himpunan data tertentu setelah pelatihan awalnya yang luas, dengan tujuan menyesuaikannya untuk berkinerja lebih baik pada tugas atau memahami konsep yang terkait dengan himpunan data tersebut. Proses ini membantu model mengkh khususkan atau meningkatkan akurasi dan efisiensinya dalam menangani jenis input atau domain tertentu.
Bagian berikut menjelaskan kedua mekanisme ini secara lebih rinci.
Memahami RAG
RAG sering digunakan untuk mengaktifkan skenario "obrolan atas data saya", di mana perusahaan yang memiliki korpus besar konten tekstual (dokumen internal, dokumentasi, dll.) dan ingin menggunakan korpus ini sebagai dasar untuk jawaban atas permintaan pengguna.
Pada tingkat tinggi, Anda membuat entri database untuk setiap dokumen (atau sebagian dokumen yang disebut "gugus"). Potongan diindeks pada penyematannya, vektor (array) angka yang mewakili faset dokumen. Saat pengguna mengirimkan kueri, Anda mencari database untuk dokumen serupa, lalu mengirimkan kueri dan dokumen ke LLM untuk menyusun jawaban.
Catatan
Istilah Retrieval-Augmented Generation (RAG) secara akomodatif. Proses penerapan sistem obrolan berbasis RAG yang diuraikan dalam artikel ini dapat diterapkan apakah ada keinginan untuk menggunakan data eksternal yang akan digunakan dalam kapasitas pendukung (RAG) atau untuk digunakan sebagai pusat respons (RCG). Perbedaan bernuansa ini tidak diatasi dalam sebagian besar pembacaan yang terkait dengan RAG.
Membuat indeks dokumen yang di-vektorisasi
Langkah pertama untuk membuat sistem obrolan berbasis RAG adalah membuat penyimpanan data vektor yang berisi penyematan vektor dokumen (atau sebagian dokumen). Pertimbangkan diagram berikut yang menguraikan langkah-langkah dasar untuk membuat indeks dokumen yang di-vektorisasi.
Diagram ini mewakili alur data, yang bertanggung jawab atas penyerapan, pemrosesan, dan manajemen data yang digunakan oleh sistem. Ini termasuk data pra-pemrosesan yang akan disimpan dalam database vektor dan memastikan bahwa data yang diumpankan ke LLM dalam format yang benar.
Seluruh proses didorong oleh gagasan penyematan, yang merupakan representasi numerik data (biasanya kata, frasa, kalimat, atau bahkan seluruh dokumen) yang menangkap properti semantik input dengan cara yang dapat diproses oleh model pembelajaran mesin.
Untuk membuat penyematan, Anda mengirim potongan konten (kalimat, paragraf, atau seluruh dokumen) ke Azure OpenAI Embedding API. Apa yang dikembalikan dari Embedding API adalah vektor. Setiap nilai dalam vektor mewakili beberapa karakteristik (dimensi) konten. Dimensi mungkin mencakup masalah topik, makna semantik, sintaksis dan tata bahasa, penggunaan kata dan frasa, hubungan kontekstual, gaya, dan nada, dll. Bersama-sama, semua nilai vektor mewakili ruang dimensi konten. Dengan kata lain, jika Anda dapat memikirkan representasi 3D dari vektor dengan tiga nilai, vektor tertentu tinggal di area tertentu dari bidang x, y, z. Bagaimana jika Anda 1000 (atau lebih) nilai? Meskipun tidak mungkin bagi manusia untuk menggambar grafik 1000 dimensi pada selembar kertas untuk membuatnya lebih dapat dimengerti, komputer tidak memiliki masalah memahami tingkat ruang dimensi tersebut.
Langkah berikutnya dari diagram menggambarkan penyimpanan vektor bersama dengan konten itu sendiri (atau penunjuk ke lokasi konten) dan metadata lainnya dalam database vektor. Database vektor seperti jenis database apa pun, dengan dua perbedaan:
- Database vektor menggunakan vektor sebagai indeks untuk mencari data.
- Database vektor menerapkan algoritma yang disebut pencarian serupa kosinus, juga dikenal sebagai tetangga terdekat, yang menggunakan vektor yang paling cocok dengan kriteria pencarian.
Dengan korpus dokumen yang disimpan dalam database vektor, pengembang dapat membangun komponen retriever yang mengambil dokumen yang cocok dengan kueri pengguna dari database untuk menyediakan LLM dengan apa yang diperlukan untuk menjawab kueri pengguna.
Menjawab kueri dengan dokumen Anda
Sistem RAG pertama kali menggunakan pencarian semantik untuk menemukan artikel yang dapat membantu LLM saat menyusun jawaban. Langkah selanjutnya adalah mengirim artikel yang cocok bersama dengan permintaan asli pengguna ke LLM untuk menyusun jawaban.
Pertimbangkan diagram berikut sebagai implementasi RAG sederhana (terkadang disebut sebagai "RAG naif").
Dalam diagram, pengguna mengirimkan kueri. Langkah pertama adalah membuat penyematan untuk permintaan pengguna untuk mendapatkan kembali vektor. Langkah selanjutnya adalah mencari database vektor untuk dokumen tersebut (atau bagian dokumen) yang merupakan kecocokan "tetangga terdekat".
Kesamaan kosinus adalah ukuran yang digunakan untuk menentukan seberapa mirip dua vektor, pada dasarnya menilai kosinus sudut di antara mereka. Kesamaan kosinus mendekati 1 menunjukkan tingkat kesamaan yang tinggi (sudut kecil), sementara kesamaan dekat -1 menunjukkan perbedaan (sudut mendekati 180 derajat). Metrik ini sangat penting untuk tugas seperti kesamaan dokumen, di mana tujuannya adalah untuk menemukan dokumen dengan konten atau makna yang sama.
Algoritma "Tetangga Terdekat" bekerja dengan menemukan vektor terdekat (tetangga) ke titik tertentu di ruang vektor. Dalam algoritma k-nearest neighbors (KNN), 'k' mengacu pada jumlah tetangga terdekat yang perlu dipertimbangkan. Pendekatan ini banyak digunakan dalam klasifikasi dan regresi, di mana algoritma memprediksi label titik data baru berdasarkan label mayoritas 'k' tetangga terdekatnya dalam set pelatihan. Kesamaan KNN dan kosinus sering digunakan bersama dalam sistem seperti mesin rekomendasi, di mana tujuannya adalah untuk menemukan item yang paling mirip dengan preferensi pengguna, yang diwakili sebagai vektor di ruang penyematan.
Anda mengambil hasil terbaik dari pencarian tersebut dan mengirim konten yang cocok bersama dengan permintaan pengguna untuk menghasilkan respons yang (mudah-mudahan) diinformasikan dengan mencocokkan konten.
Tantangan dan Pertimbangan
Menerapkan sistem RAG hadir dengan serangkaian tantangannya. Privasi data sangat penting, karena sistem harus menangani data pengguna secara bertanggung jawab, terutama saat mengambil dan memproses informasi dari sumber eksternal. Persyaratan komputasi juga dapat signifikan, karena proses pengambilan dan generatif intensif sumber daya. Memastikan akurasi dan relevansi respons saat mengelola bias yang ada dalam data atau model adalah pertimbangan penting lainnya. Pengembang harus menavigasi tantangan ini dengan hati-hati untuk menciptakan sistem RAG yang efisien, etis, dan berharga.
Artikel berikutnya dalam seri ini, Membangun sistem Retrieval-Augmented Generation canggih memberikan detail lebih lanjut tentang membangun data dan alur inferensi untuk mengaktifkan sistem RAG siap produksi.
Jika Anda ingin mulai bereksperimen dengan segera membangun solusi AI generatif, sebaiknya lihat Memulai obrolan menggunakan sampel data Anda sendiri untuk Python. Ada versi tutorial yang juga tersedia di .NET, Java, dan JavaScript.
Menyempurnakan model
Penyempurnaan, dalam konteks LLM, mengacu pada proses penyesuaian parameter model pada himpunan data khusus domain setelah awalnya dilatih pada himpunan data yang besar dan beragam.
LLM dilatih (telah dilatih sebelumnya) pada himpunan data yang luas, struktur bahasa yang menggenggam, konteks, dan berbagai pengetahuan. Tahap ini melibatkan pembelajaran pola bahasa umum. Penyempurnaan menambahkan lebih banyak pelatihan ke model yang telah dilatih sebelumnya berdasarkan himpunan data tertentu yang lebih kecil. Fase pelatihan sekunder ini bertujuan untuk menyesuaikan model untuk berkinerja lebih baik pada tugas tertentu atau memahami domain tertentu, meningkatkan akurasi dan relevansinya untuk aplikasi khusus tersebut. Selama penyempurnaan, bobot model disesuaikan untuk lebih memprediksi atau memahami nuansa himpunan data yang lebih kecil ini.
Beberapa pertimbangan:
- Spesialisasi: Menyempurnakan menyesuaikan model dengan tugas tertentu, seperti analisis dokumen hukum, interpretasi teks medis, atau interaksi layanan pelanggan. Ini membuat model lebih efektif di area tersebut.
- Efisiensi: Lebih efisien untuk menyempurnakan model yang telah dilatih sebelumnya untuk tugas tertentu daripada melatih model dari awal, karena penyempurnaan membutuhkan lebih sedikit data dan sumber daya komputasi.
- Kemampuan beradaptasi: Penyempurnaan memungkinkan adaptasi ke tugas atau domain baru yang bukan bagian dari data pelatihan asli, membuat LLM alat serbaguna untuk berbagai aplikasi.
- Peningkatan performa: Untuk tugas yang berbeda dari data yang awalnya dilatih model, penyempurnaan dapat menyebabkan performa yang lebih baik, karena menyesuaikan model untuk memahami bahasa, gaya, atau terminologi tertentu yang digunakan di domain baru.
- Personalisasi: Dalam beberapa aplikasi, penyempurnaan dapat membantu mempersonalisasi respons atau prediksi model agar sesuai dengan kebutuhan atau preferensi spesifik pengguna atau organisasi. Namun, penyempurnaan juga menghadirkan kelemahan dan batasan tertentu. Memahami hal ini dapat membantu dalam memutuskan kapan harus memilih penyempurnaan versus alternatif seperti pengambilan-augmented generation (RAG).
- Persyaratan data: Penyempurnaan memerlukan himpunan data yang cukup besar dan berkualitas tinggi khusus untuk tugas atau domain target. Mengumpulkan dan mengumpulkan himpunan data ini bisa menjadi tantangan dan intensif sumber daya.
- Risiko overfitting: Ada risiko overfitting, terutama dengan himpunan data kecil. Overfitting membuat model berkinerja baik pada data pelatihan tetapi buruk pada data baru yang tidak jelas, mengurangi generalisasinya.
- Biaya dan sumber daya: Meskipun lebih sedikit intensif sumber daya daripada pelatihan dari awal, penyempurnaan masih memerlukan sumber daya komputasi, terutama untuk model besar dan himpunan data, yang mungkin dilarang untuk beberapa pengguna atau proyek.
- Pemeliharaan dan pembaruan: Model yang disempurnakan mungkin memerlukan pembaruan rutin agar tetap efektif saat informasi khusus domain berubah dari waktu ke waktu. Pemeliharaan yang sedang berlangsung ini membutuhkan sumber daya dan data tambahan.
- Penyimpangan model: Karena model disempurnakan untuk tugas tertentu, model mungkin kehilangan beberapa pemahaman dan fleksibilitas bahasa umumnya, yang mengarah ke fenomena yang dikenal sebagai penyimpangan model.
Menyesuaikan model dengan penyempurnaan menjelaskan cara menyempurnakan model. Pada tingkat tinggi, Anda menyediakan kumpulan data JSON dari pertanyaan potensial dan jawaban yang disukai. Dokumentasi menunjukkan bahwa ada peningkatan yang nyata dengan menyediakan 50 hingga 100 pasangan pertanyaan / jawaban, tetapi angka yang tepat sangat bervariasi pada kasus penggunaan.
Penyempurnaan versus pengambilan-augmented generasi
Di permukaan, mungkin tampak seperti ada sedikit tumpang tindih antara penyempurnaan dan pengambilan-augmented generasi. Memilih antara penyempurnaan dan pembuatan tambahan pengambilan tergantung pada persyaratan khusus tugas Anda, termasuk harapan performa, ketersediaan sumber daya, dan kebutuhan akan kekhususan domain versus generalisasi.
Kapan memilih penyempurnaan daripada Retrieval-Augmented Generation:
- Performa Khusus Tugas - Penyempurnaan lebih disukai ketika performa tinggi pada tugas tertentu sangat penting, dan ada data khusus domain yang memadai untuk melatih model secara efektif tanpa risiko overfitting yang signifikan.
- Kontrol Atas Data - Jika Anda memiliki data eksklusif atau sangat khusus yang secara signifikan berbeda dari data yang dilatih model dasar, penyempurnaan memungkinkan Anda memasukkan pengetahuan unik ini ke dalam model.
- Kebutuhan Terbatas untuk Pembaruan Real-time - Jika tugas tidak mengharuskan model untuk terus diperbarui dengan informasi terbaru, penyempurnaan dapat lebih efisien karena model RAG biasanya memerlukan akses ke database eksternal terbaru atau internet untuk menarik data terbaru.
Kapan memilih Retrieval-Augmented Generation daripada penyempurnaan:
- Konten Dinamis atau Berkembang - RAG lebih cocok untuk tugas di mana memiliki informasi terbaru sangat penting. Karena model RAG dapat menarik data dari sumber eksternal secara real-time, model tersebut lebih cocok untuk aplikasi seperti pembuatan berita atau menjawab pertanyaan tentang peristiwa terbaru.
- Generalisasi Atas Spesialisasi - Jika tujuannya adalah untuk mempertahankan performa yang kuat di berbagai topik daripada unggul dalam domain sempit, RAG mungkin lebih disukai. Ini menggunakan basis pengetahuan eksternal, memungkinkannya untuk menghasilkan respons di berbagai domain tanpa risiko overfitting ke himpunan data tertentu.
- Batasan Sumber Daya - Untuk organisasi dengan sumber daya terbatas untuk pengumpulan data dan pelatihan model, menggunakan pendekatan RAG mungkin menawarkan alternatif hemat biaya untuk penyempurnaan, terutama jika model dasar sudah berkinerja cukup baik pada tugas yang diinginkan.
Pertimbangan akhir yang mungkin memengaruhi keputusan desain aplikasi Anda
Berikut adalah daftar singkat hal-hal yang perlu dipertimbangkan dan pengamanan lainnya dari artikel ini yang memengaruhi keputusan desain aplikasi Anda:
- Tentukan antara penyempurnaan dan pengambilan-augmented generation berdasarkan kebutuhan spesifik aplikasi Anda. Penyempurnaan mungkin menawarkan performa yang lebih baik untuk tugas khusus, sementara RAG dapat memberikan fleksibilitas dan konten terbaru untuk aplikasi dinamis.