RAG dan Evaluasi Sederhana
Kalau mau RAG, yang wajib disiapkan dulu: evaluasi dan mesin pencari. Kali ini kita bahas yang pertama, evaluasi.
Artinya, membuat sistem RAG itu bukan pusing dengan vector, chunking, embedding, dsb. Kalaulah hal-hal itu yang bikin pening, dijamin merana dan akan main tambal sulam.
Bahkan, evaluasi paling sederhana bisa dimulai hanya dengan regex! Perhatikan tangkapan layar ini, yang melukiskan sederet pertanyaan yang harus dijawab oleh LLM dengan benar!
Contoh tersebut sudah termasuk dalam demo CoT (Chain of Thought) sebelumnya. Reponya sendiri bisa diakses dari GitHub saya, lebih rincinya di tulisan yang lalu, Chain of Thought: Lebih Santun dengan LLM.
Perhatikan bahwa hal yang sama juga berjalan untuk Gamal, contoh RAG dari nol yang kemarin saya jabarkan juga.
Secara arsitektur, dua-duanya sangat mirip. Untuk Gamal, karena ada RAG, maka ada langkah mencari informasi tambahan (R dalam RAG adalah untuk Retrieval), lihat juga RAG dari Nol.
Walaupun query-llm atau Gamal bisa diluncurkan secara interaktif, sehingga saya bisa melontarkan pertanyaan dan harus dijawab, saya sudah menyisipkan evaluator di kode yang sama.
Bila ada file yang dilemparkan sebagai argument, maka evaluatornya yang bekerja (tidak lagi mode interaktif):
./query-llm.js tests/canary-multi-turn.txt
Seperti itu kira-kira.
Dalam contoh ini, file canary-multi-turn.txt
adalah data "ujian" buat LLM. Isinya adalah pertanyaan yang harus dijawab, beserta kunci jawabannya.
Karena LLM akan "mengarang indah" untuk menulis jawaban, maka ada regex di dalam jawaban yang mesti cocok. Artinya, jawaban dari LLM tidak mesti persis sama, asalkan ada yang pas dengan si regex
Ini contohnya. Kalau ada pasangan pertanyaan dan jawaban seperti ini.
User: Which planet is the biggest?
Assistant: /Jupiter/ is the largest planet in our solar system.
Maka LLM bisa memberikan variasi jawaban berikut dan akan tetap dianggap lolos.
The largest planet in our solar system is Jupiter.
That must be Jupiter, the largest planet.
Kenapa? Karena regex /Jupiter/
masuk di situ.
Harapan saya kita semua paham pentingnya kumpulan evaluasi, sebelumnya ngulik arsitektur RAG yang terlalu kompleks (yang banyak digembar-gemborkan para influencer dan startup penuh hype).
Himbauan ini pernah saya cetuskan di sebuah utas Threads.