Setelah empat bulan memindahkan pipeline Retrieval-Augmented Generation (RAG) dari Jupyter notebook ke layanan live, penulis mengidentifikasi lima pilihan konkret yang mengubah demo peraga menjadi sistem yang benar-benar dapat diandalkan oleh pengguna. Perbedaannya terlihat pada angka: perubahan sederhana pada cara teks dipotong meningkatkan hit rate retrieval dari 61% menjadi 83%, dan set evaluasi sederhana berisi 200 kueri nyata kini dapat menangkap sebagian besar regresi sebelum mencapai pelanggan.
Mengapa ini penting
Demo RAG terlihat mengesankan – mereka mengambil kutipan dan menghasilkan jawaban yang masuk akal dalam hitungan detik. Dalam produksi, pendekatan yang sama sering kali mengembalikan fakta yang kedaluwarsa, melewatkan kode kesalahan, atau kalimat yang rusak, sehingga mengikis kepercayaan pengguna. Hambatannya jarang terletak pada model bahasa; melainkan pada cara konten dimasukkan (ingested), diindeks, dan disajikan. Membangun pipeline dengan benar dapat menjadi pembeda antara produk yang memberi nilai tambah dan produk yang justru menjadi beban.
1. Berhenti menggunakan chunk berukuran tetap
Banyak prototipe memotong setiap dokumen menjadi blok 512-token. Itu berhasil untuk teks pendek, tetapi menghancurkan manual teknis, utas dukungan, dan cuplikan kode. Kalimat terpecah, tajuk (heading) menghilang, dan mesin retrieval tidak dapat mencocokkan konteks yang diharapkan pengguna.
Beralihlah ke chunking berbasis struktur—memotong pada tajuk, batas percakapan, atau code fences—untuk menjaga unit semantik. Dalam sistem penulis, hal ini saja meningkatkan fraksi kueri yang menemukan kutipan relevan dari 61% menjadi 83%. Peningkatannya berasal dari perubahan format data; model dasarnya tetap sama.
2. Gunakan pencarian hybrid
Pencarian vektor murni (kemiripan berbasis embedding) sangat baik dalam menemukan kutipan dengan makna yang sama, tetapi ia kesulitan dengan pengenal eksak seperti kode kesalahan, nomor versi, atau terminologi khusus. Seorang pengguna yang mencari kode kesalahan seperti “ERR-XXXX” mungkin mendapatkan paragraf yang secara semantik mirip tetapi sama sekali tidak mengandung kode tersebut.
Pencarian hybrid menggabungkan indeks vektor padat (dense vector index) dengan indeks BM25 tradisional (berbasis frekuensi istilah). Dengan memberikan bobot pada kedua skor tersebut, sistem mengambil item yang secara semantik dekat sekaligus mengandung istilah eksak yang diketik pengguna. Untuk produksi, pencarian hybrid adalah persyaratan dasar, bukan sekadar fitur tambahan yang opsional.
3. Tangani data usang
Tabel harga, dokumen kebijakan, atau catatan rilis firmware yang kedaluwarsa dapat dengan cepat merusak kredibilitas. Tiga langkah praktis untuk menjaga indeks tetap segar:
- Beri tag pada setiap dokumen dengan stempel versi atau timestamp.
- Terapkan recency boost selama penilaian skor agar item yang lebih baru mengungguli salinan yang lebih lama.
- Jalankan re-indexing inkremental setiap malam untuk menarik perubahan dari sistem sumber.
Langkah-langkah pengamanan ini mencegah sistem menyajikan harga yang valid pada kuartal lalu atau kebijakan yang sudah digantikan.
4. Lakukan rerank alih-alih meningkatkan model
Meningkatkan model embedding hanya memberikan sedikit peningkatan kualitas, sementara menambahkan cross-encoder reranker memberikan lonjakan yang jauh lebih besar dengan biaya yang lebih rendah.
Alur produksi mengambil 20 kandidat murah menggunakan pencarian hybrid, lalu melewatkannya melalui reranker untuk memilih lima teratas. Pendekatan dua tahap ini menghasilkan lonjakan kualitas yang lebih besar dengan biaya yang jauh lebih kecil dibandingkan peningkatan model secara penuh.
5. Bangun set evaluasi yang nyata
Anda tidak bisa meningkatkan apa yang tidak Anda ukur. Penulis menyusun rangkaian pengujian berisi 200 kueri pengguna asli, yang masing-masing dipasangkan dengan jawaban yang disusun oleh ahli. Setiap perubahan kode dijalankan terhadap rangkaian ini; setiap regresi ditangkap sebelum penerapan.
Ketika pengguna melaporkan jawaban yang buruk, tambahkan kueri tersebut ke set evaluasi segera, mengubah kegagalan dunia nyata menjadi pengaman di masa depan. Pencatatan (logging) berkelanjutan dari setiap jawaban yang dihasilkan memberi makan loop evaluasi, menjaga sistem tetap selaras dengan penggunaan aktual.
Pipeline produksi dalam praktik
- Ingest: Chunking berbasis struktur menjaga tajuk, blok kode, dan giliran percakapan.
- Index: Simpan embedding padat dan statistik istilah BM25.
- Retrieve: Pencarian hybrid mengembalikan 20 kandidat, menyeimbangkan kemiripan semantik dan kecocokan istilah eksak.
- Rerank: Cross-encoder mempersempit daftar menjadi lima kutipan yang paling menjanjikan.
- Generate: LLM menerima chunk teratas ini beserta metadatanya untuk menyusun jawaban akhir.
- Evaluate: Setiap respons dicatat; kegagalan dimasukkan kembali ke dalam set pengujian 200-kueri.
Risiko dan trade-off
Pipeline yang dioptimalkan dengan baik mengurangi halusinasi, meningkatkan relevansi jawaban, dan memangkas biaya model yang over-provisioned. Keuntungannya adalah kepuasan pengguna yang lebih tinggi dan beban dukungan yang lebih rendah. Mengabaikan langkah-langkah ini akan menghasilkan layanan yang rapuh yang mengikis kepercayaan merek dan memaksa penanganan masalah darurat yang mahal.
Apa yang perlu diperhatikan selanjutnya
Seiring dengan matangnya embedding open-source dan basis data vektor, batasan antara retrieval "dense" dan "sparse" akan semakin kabur, namun prinsip penggabungan pencocokan semantik dan eksak tetap sama.
Poin Penting: Dalam sistem RAG, model bahasa jarang menjadi titik hambat (choke point). Pekerjaan yang sebenarnya terletak pada bagaimana Anda memotong, mengindeks, dan menyajikan konten yang mendasarinya. Mengambil keputusan yang tepat pada aspek-aspek tersebut akan mengubah demo yang sekadar memukau menjadi produk yang andal.
