Pengenalan RAG dan Fine-Tuning pada LLM

"Mengubah LLM dari Robot Kaku menjadi Bestie Kamu"

Pendahuluan

Ketika kita mulai menerapkan Kecerdasan Artifisial dalam bentuk Large Language Model (LLM) pada suatu aplikasi, setidaknya kita akan menemui dua tantangan. Pertama adalah bagaimana menghubungkan LLM dengan 'data asli'. Perlu diketahui, bahwa kita perlu "membumikan" LLM atau menghubungkannya dengan data asli yang relevan dari agar dapat berfungsi dengan baik. Kedua adalah bagaimana menyediakan data yang tepat. LLM harus bisa memberikan informasi yang benar dan relevan sesuai kebutuhan bisnis.

RAG (Retrieval-Augmented Generation) merupakan teknik yang menggabungkan kemampuan mengambil data (retrieval) dengan kemampuan menghasilkan teks (generation) untuk memberikan jawaban yang lebih akurat dan relevan. Adapun Fine-Tuning adalah proses penyesuaian model LLM yang sudah ada dengan data spesifik yang lebih relevan untuk meningkatkan performa dan ketepatan dalam memberikan jawaban. RAG dan fine-tuning merupakan cara terbaik yang saat ini tersedia untuk menerapkan AI dalam dunia nyata. Keduanya membantu LLM memberikan hasil yang lebih akurat dan relevan dengan berbagai kondisi yang ada. Dalam artikel ini, kita akan membahas konsep-konsep ini secara keseluruhan untuk membantu memahami cara kerja dan manfaat RAG dan fine-tuning dalam penerapan AI di dunia nyata.

Bagaimana LLM Bekerja?

Agar bisa paham konsep RAG dan fine-tuning, kita perlu memahami dulu bagaimana cara kerja dari LLM. Ketika kita berinteraksi dengan LLM melalui aplikasi seperti ChatGPT misalnya, mungkin terkadang akan terasa seperti berbicara dengan manusia. Kita beri dia pertanyaan, lalu LLM memberikan jawabannya, kemudian percakapan bisa terus berlanjut. Interaksi seperti ini mungkin akan memberi kesan bahwa LLM ini pintar dan ia mampu berpikir seperti manusia pada umumnya. Namun, terkadang jawaban dari LLM bisa saja tidak akurat atau salah, meskipun terlihat LLM sangat yakin dengan jawabannya. Dalam konteks LLM, ini biasa disebut dengan "Halusinasi".

Suatu LLM yang diterapkan dalam bentuk aplikasi chat sebenarnya merupakan sistem auto-complete canggih. Ketika kita membuat chat baru, di balik layar LLM sudah memiliki pesan awal yang disebut "system message". Poin inilah yang menjadi titik awal dari suatu percakapan yang akan kita lakukan dengan LLM. Sehingga ketika misalnya kita memasukkan pertanyaan seperti, "Bagaimana cara membuat nasi goreng?", LLM terlebih dahulu membaca "system message" yang sudah didefinisikan sebelumnya, lalu membaca pertanyaan kita, dan kemudian melengkapi percakapan dengan memberikan jawaban yang sesuai.

Sebenarnya, LLM tidak mencari informasi tentang nasi goreng dari database sebelum menjawab. Sebaliknya, LLM menggunakan multi-dimensional map yang sangat kompleks dari bahasa manusia untuk melengkapi dokumen tersebut. Karena ratusan bahkan mungkin ribuan resep nasi goreng ada di dalam data latih, dan sebagian resep nasi goreng juga hanya merupakan variasi dari bahan-bahan dasar yang sama, maka kemungkinan besar juga LLM akan menghasilkan daftar bahan yang akurat untuk resep nasi goreng secara umum.

Sehingga perlu disadari bahwa suatu LLM tidak bisa disebut "pintar" dalam arti sebenarnya. Kemampuan menjawab pertanyaan ini di balik layar sebenarnya merupakan perhitungan matematika yang kompleks. Jadi, meski LLM kelihatannya punya kemampuan berpikir seperti manusia, kenyataannya itu hanyalah hasil dari proses auto-complete yang sangat canggih.

Pentingnya Konteks ketika Berinteraksi dengan LLM

Di antara hal penting yang perlu kita tahu saat mulai menggunakan LLM adalah kenyataan bahwa memberikan konteks kepada LLM bisa memberi pengaruh yang signifikan.

Disadari atau tidak, memberi konteks pembicaraan adalah hal yang sangat penting ketika kita berinteraksi dengan LLM. Dalam percakapan sehari-hari, kita selalu memberikan konteks tanpa berpikir panjang. Misalnya, saat ingin membuat nasi goreng, pertanyaan yang diajukan tidak hanya, "Apa bahan-bahan yang diperlukan untuk membuat nasi goreng?" Kita biasanya akan lebih spesifik, seperti "Apa bahan-bahan yang diperlukan untuk membuat nasi goreng khas Indonesia?"

Jadi, misalnya ketika kita bertanya ke ChatGPT, "Apa bahan-bahan yang diperlukan untuk membuat nasi goreng khas Indonesia?" kata "khas Indonesia" di sini lah yang menjadi konteks pentingnya. LLM kemudian akan membaca semua informasi sebelumnya, mulai dari pesan awal hingga permintaan dan konteks baru yang kita tambahkan, sehingga kemudian ia bisa memberikan jawaban yang lebih spesifik dan relevan.

Proses memberikan konteks yang tepat dengan harapan bisa mendapat jawaban relevan dari LLM inilah yang kemudian dikenal dengan "Prompt engineering". Makin banyak konteks yang kita berikan, makin besar pula kemungkinan LLM mampu memberikan jawaban sesuai dengan yang diinginkan. Oleh karena itu, hal ini juga yang menjadi alasan kenapa ketika kita meminta LLM untuk meringkas dari dokumen ataupun transkrip video ke dalam LLM, hasilnya akan bagus. Dengan cara memberikan konteks, LLM mampu menghasilkan respon yang bisa membuat kita merasa seakan-akan ia benar-benar telah membaca dan meringkas konten sesuai permintaan kita.

Mengenal RAG: Retrieval Augmented Generation

Sebagaimana sudah disinggung sebelumnya, ketika kita menggunakan produk LLM seperti ChatGPT. Kita seringkali menganggapnya sebagai perpaduan antara search engine dan asisten virtual yang amat sangat cerdas. Padahal, LLM sebenarnya bukanlah sistem pencarian informasi. LLM merupakan representasi dari suatu sistem kompleks bernama "language transformer". LLM tidak benar-benar "tahu" sesuatu. yang cukup rumit sehingga bisa melengkapi sebagian besar kalimat dengan benar, selama pola informasi tersebut tersedia dalam data pelatihannya.

Masalahnya adalah, ketika informasi yang diberikan LLM sebenarnya salah namun dari jawaban yang diberikan ia terlihat memiliki tingkat keyakinan yang sangat tinggi. Ketika terjadi kondisi seperti ini, LLM malah terlihat seperti sedang berhalusinasi atau bahkan sedang berbohong.

Agar jawaban yang diberikan LLM lebih akurat, kita bisa menggunakan pendekatan RAG. Pendekatan ini meningkatkan akurasi dari jawaban LLM dengan cara menggabungkan pencarian informasi (retrieval) dengan kemampuan LLM untuk melengkapi dan menghasilkan teks (generation). Sehingga, alih-alih langsung menjawab, yang terlebih dahulu dilakukan LLM adalah mencari informasi dari basis data, kemudian menambahkannya sesuai konteks, dan baru kemudian memberikan jawaban. Contoh awal dari konsep ini ada pada sistem Bing AI. Di mana ketika kita berikan pertanyaan, sistem terlebih dahulu akan mencari informasi yang relevan di web, kemudian informasi tersebut digunakan sebagai referensi untuk memberikan jawaban. Tentu saja pemanfaatan dari pendekatan ini tidak hanya terbatas pada search engine namun juga berlaku untuk sistem LLM yang lainnya.

Alur Kerja RAG (Retrieval Augmented Generation)

Lalu bagaimana model bahasa besar (LLM) bisa mengambil data dari sumber informasi yang ada? Mari kita lihat bagaimana alur kerja RAG secara sederhana (semoga 😅).

  1. Permintaan Masuk:

    Ketika ada permintaan ataupun pertanyaan yang masuk, pertama-tama LLM akan memahami makna dari permintaan tersebut terlebih dahulu. Misalnya, ketika kita bertanya, "Apa saja bahan-bahan untuk membuat kue lapis?", LLM akan mengubah pertanyaan ini menjadi query (permintaan data) yang bisa dipahami oleh sistem data terkait.

  2. Mengakses Sumber Data:

    Query ini kemudian dikirim ke sumber data yang relevan, sumber data di sini bisa berupa database standar yang diakses melalui API, array embeddings, database vektor, atau bahkan buku resep dalam bentuk pdf. Sumber data ini kita sebut sebagai "grounded truth" (kebenaran yang terhubung).

  3. Mengambil Data:

    Sumber data yang terkait kemudian memproses permintaan ini dan mengembalikan data yang relevan kepada LLM.

  4. Menghasilkan Jawaban:

    LLM kemudian menggabungkan permintaan asli dengan data yang baru saja diambil dan menghasilkan jawaban. Misalnya, ketika data yang diambil oleh LLM ternyata berupa resep dari buku resep masakan Indonesia, maka LLM akan menggunakan informasi ini untuk memberikan daftar bahan-bahan yang akurat.

  5. Verifikasi Tambahan:

    Karena sifat dari LLM adalah bersifat probabilistik (menghasilkan jawaban berdasarkan kemungkinan) dan non-deterministik (hasilnya bisa berbeda pada setiap langkah), akurasi dari jawabannya mungkin tidak selalu tepat. Untuk mengurangi risiko ini, sering kali ditambahkan langkah verifikasi.

    Jawaban yang sudah dihasilkan, bersama dengan data yang diambil, akan dikembalikan ke LLM untuk memastikan bahwa jawaban tersebut hanya mengandung informasi dari data yang diambil. Langkah ini bisa diulang sampai beberapa kali untuk meningkatkan akurasi jawaban.

Embeddings: Membantu AI Memahami Data

File:Word vector illustration.jpg - Wikimedia Commons

Kembali lagi kepada perkara nasi goreng, misalnya kita membuat suatu ChatBot dan menggunakan buku resep masakan Indonesia sebagai sumber data. Kemudian kita berikan pertanyaan, "Apa resep untuk membuat nasi goreng?" Nasi adalah makanan pokok di Indonesia dan tentunya merupakan bahan umum yang ada di resep-resep masakan. Lantas bagaimana caranya sistem bisa tahu kalau yang kita mau adalah resep nasi goreng? bukan nasi ayam, nasi sop, nasi bakar, atau nasi kebuli?

Untuk menemukan informasi terkait yang relevan. AI menggunakan teknik bernama Embeddings. Berikut cara kerja embedding:

  1. Representasi Numerik:

    Embeddings mengubah teks menjadi representasi numerik dalam bentuk titik-titik dan vektor di ruang multidimensi.

  2. Proses Embeddings:

    Setiap resep dalam buku resep dimasukkan ke dalam model embeddings, yang kemudian mengubah kata-kata dalam resep tersebut menjadi peta titik-titik di ruang multidimensi. Di sini setiap kata-kata yang mirip, seperti "nasi" dan "ketan", akan ditempatkan lebih dekat satu sama lain. Sementara kata-kata yang tidak mirip, seperti "bayam" dan "wortel", akan ditempatkan lebih jauh.

  3. Membuat Vektor:

    Vektor digambar pada setiap titik-titik yang dihasilkan untuk mewakili hubungan antara kata-kata dalam teks. Representasi matematis dari titik-titik dan vektor ini menjadi embeddings untuk setiap resep.

  4. Mencocokkan Permintaan dengan Embeddings:

    Ketika kamu memberikan pertanyaan seperti, "Bagaimana cara membuat nasi goreng ayam?", sistem AI akan membuat embeddings dari pertanyaan ini menggunakan model embeddings yang sama. Sistem AI kemudian membandingkan embeddings pertanyaan dengan embeddings setiap resep untuk menemukan yang paling cocok.

  5. Menghasilkan Jawaban:

    Dengan membandingkan embeddings, sistem AI dapat menemukan resep yang paling sesuai permintaan kita. Misalnya, jika pertanyaanmu kita dengan embeddings untuk resep nasi goreng khas Indonesia, sistem AI akan memberikan teks resep nasi goreng khas Indonesia dari database.

Knowledge Graphs

Bayangkan kita sedang memasak kemudian ingin tahu bahan apa yang diperlukan. Misalnya, kita bertanya, "Saus apa yang saya perlukan untuk membuat nasi goreng?" Jika sistem AI hanya mengandalkan 'embeddings', bisa saja AI tersebut mengembalikan dua jawaban: 'Saus Kecap' dan 'Saus Barbeque'. Jelas yang benar adalah 'saus kecap', bukan 'saus barbeque'. Apa alasan AI bisa salah?

  1. Kata-Kata yang Sama, Maknanya Berbeda: Dalam bahasa kita, banyak kata yang memiliki lebih dari satu makna tergantung konteksnya. Misalnya 'pasta' di masakan 'saus tomat (tomato paste)' dengan 'pasta' dalam 'pasta gigi (tooth paste)' tentu berbeda.

  2. Keterbatasan Embeddings: Embeddings memang mengubah kata-kata menjadi angka (vektor) yang membuat komputer bisa memahami dan membandingkan kata-kata tersebut. Akan tetapi, embeddings tidak selalu bisa memahami konteks dengan baik.

Untuk mengatasi masalah ini, kita bisa menggunakan 'knowledge graphs'. Dengan ini, selain makna, hubungan antar kata juga dipertimbangkan. Misalnya, dalam knowledge graph, 'tomato paste' akan dihubungkan dengan 'makanan' dan 'tooth paste' dengan 'kebersihan'. Sehingga ketika kita bertanya , "Pasta apa yang enak untuk membuat spaghetti?" Knowledge graph akan memahami bahwa kita sedang berbicara tentang makanan dan hanya akan memberikan 'tomato paste' sebagai jawaban yang relevan.

Meskipun demikian, tidak semua kondisi memerlukan knowledge graphs. Sistem AI biasanya menggabungkan berbagai sumber data seperti database tradisional, API, embeddings, dan knowledge graphs, tergantung pada keperluan dan jenis data yang ada. Pada umumnya, disarankan untuk memulai dengan metode yang paling sederhana, seperti menggunakan database dengan API, dan kemudian mencoba opsi yang lebih advance ketika masalah semakin kompleks.

Fine-Tuning

RAG memang merupakan salah satu metode yang efektif untuk meningkatkan kualitas jawaban dari LLM. Namun, ia juga bukan satu-satunya, contoh metode lain yang bisa dilakukan adalah fine tuning. Metode ini merupakan salah satu cara untuk meningkatkan kinerja model AI agar bisa memberikan jawaban yang lebih spesifik dan sesuai dengan keperluan kita. Cara kerjanya adalah pertama-tama, kita memberikan model AI banyak contoh dialog yang sudah lengkap. Setiap contoh berisi pesan sistem, permintaan pengguna, dan jawaban yang diharapkan. Kemudian Model AI dilatih dengan contoh-contoh ini sehingga dia belajar bagaimana harus merespons permintaan yang serupa di masa depan.

Fine-Tuning memiliki sejumlah manfaat. Setidaknya ada tiga benefit utama dari fine-tuning. Pertama adalah jawaban yang lebih konsisten, karena ia sudah tahu bagaimana harus merespon. Kedua, model akan bisa disesuaikan untuk menjawab dengan gaya bahasa tertentu. Ketiga, model bisa dilatih agar melakukan tindakan tertentu seperti memberikan referensi ke dokumen atau mengarahkan ke database.

Meskipun menjanjikan, fine-tuning juga memiliki sejumlah tantangan antara lain:

  • Diperlukan banyak contoh data latih agar bisa berhasil.

  • Proses melatih model perlu dilakukan berkali-kali agar model benar-benar mengikuti pola yang diinginkan.

  • Meskipun sudah dilatih, model mungkin saja tidak memberi hasil yang sesuai harapan, sehingga akan perlu banyak uji coba dan penyesuaian.

Fine-tuning sangat berguna dalam situasi di mana kita memerlukan konsistensi jawaban. Dengan fine-tuning, kita bisa memiliki kendali langsung atas perilaku model AI, sesuatu yang akan sulit dicapai jika hanya menggunakan model dasar.

RAG dengan Fine-Tuning = RAFT

RAFT adalah singkatan dari Retrieval Augmented Fine-Tuning. Ini adalah metode yang menggabungkan dua teknik untuk membuat sistem AI yang lebih efisien dan akurat dalam menangani data spesifik, seperti dokumen internal perusahaan. Bisa demikian karena dengan RAG (Retrieval-Augmented Generation) AI bisa menemukan informasi relevan dari sumber data yang luas. Kemudian dengan Fine-Tuning AI juga dilatih agar memberikan jawaban yang sesuai dengan contoh spesifik. Berikut contoh alur dari RAFT:

  1. Langkah Pertama: Menggunakan RAG

    Kita menggunakan RAG untuk melatih model AI dengan data spesifik. Misalnya, dokumen internal perusahaan sehingga AI mengenali pola dalam data tersebut.

  2. Langkah Kedua: Membuat Pertanyaan Spesifik

    Buat daftar pertanyaan yang mencerminkan jenis pertanyaan yang mungkin diajukan oleh pengguna sistem.

  3. Langkah Ketiga: Ambil Dokumen Terkait

    Gunakan RAG untuk mengambil dua jenis dokumen:

    • A : Dokumen yang berisi jawaban yang benar.

      B : Dokumen yang berisi informasi yang tidak relevan.

  4. Langkah Keempat: Gabungkan Pertanyaan dan Dokumen

    Gabungkan pertanyaan dengan dokumen A untuk membuat jawaban yang rinci, termasuk di dalmnya penjelasan langkah demi langkah.

  5. Langkah Kelima: Proses Fine-Tuning

    Lakukan fine-tuning dengan menggunakan tiga jenis contoh data:

    1. Pertanyaan + Dokumen A + Jawaban rinci.

    2. Pertanyaan + Dokumen B + Jawaban rinci.

    3. Pertanyaan + Campuran data + Jawaban rinci.

Setelah dilatih hasilnya adalah model akan belajar menggunakan data yang relevan dan mengabaikan data yang tidak relevan dan bisa menentukan data mana yang bisa relevan untuk setiap pertanyaan yang ada.

Kesimpulan

Dalam penerapan Kecerdasan Artifisial, terutama dengan Large Language Models (LLMs), terdapat berbagai tantangan yang perlu diatasi agar dapat memberikan jawaban yang akurat dan relevan. Teknik-teknik seperti RAG (Retrieval-Augmented Generation) dan Fine-Tuning memainkan peran penting dalam mengatasi tantangan tersebut. Dengan menggunakan teknik-teknik ini, kita dapat menciptakan sistem AI yang tidak hanya canggih, tetapi juga lebih dapat diandalkan dalam memberikan jawaban yang relevan dan akurat sesuai dengan keperluan. Penerapan RAG, fine-tuning, dan RAFT dalam sistem AI akan membantu mengatasi keterbatasan model dasar dan memastikan bahwa AI dapat memberikan kontribusi yang signifikan dalam berbagai aplikasi dunia nyata. Terimakasih telah membaca artikel ini, selamat belajar!