Bagaimana chunking dan reranking bekerja dalam RAG?
Chunking adalah tahap dalam retrieval-augmented generation (RAG) yang memecah dokumen menjadi potongan pendek, masing-masing diubah menjadi embedding dan disimpan sebagai vector sendiri. Reranking adalah tahap retrieval kedua yang memberi skor ulang pada hasil awal dengan model yang lebih lambat tetapi lebih akurat. Keduanya menentukan teks mana yang sampai ke prompt model bahasa, sehingga menjadi batas atas kualitas jawaban RAG.
Setiap sistem RAG melakukan chunking pada dokumennya, baik untuk menjawab pertanyaan dari artikel dukungan, kontrak hukum, kode, maupun manual produk. Ukuran chunk, overlap, dan letak batasnya mengubah apa yang bisa ditemukan pencarian. Di kebanyakan pipeline produksi, reranker berada di antara vector search dan prompt, karena cross-encoder menangkap potongan relevan yang diberi peringkat terlalu rendah oleh bi-encoder yang cepat. Tim menyetel keduanya dengan kumpulan pertanyaan berlabel dan metrik seperti recall@k dan MRR.
Ide utama
- RAG mengambil chunk, bukan dokumen utuh, jadi chunking menentukan apa yang bisa ditunjukkan ke model.
- Chunk kecil cocok secara presisi tetapi bisa memotong jawaban, sedangkan chunk besar menjaganya tetap utuh tetapi mengencerkan embedding-nya.
- Overlap menjamin jawaban sepanjang overlap pasti muat utuh di salah satu chunk, dengan biaya penyimpanan tambahan.
- Memotong pada kalimat, paragraf, dan heading menjaga teks yang berkaitan tetap bersama, lebih baik daripada jumlah token tetap.
- Reranker cross-encoder membaca query bersama setiap kandidat dan memperbaiki urutan pencarian tahap pertama yang cepat, tetapi tidak bisa memulihkan chunk yang tidak pernah terambil.
- Recall@k dan MRR pada kumpulan pertanyaan berlabel mengubah pilihan chunking dan retrieval menjadi angka yang bisa diukur.
Ulasan singkat tentang topik ini
Pertanyaan umum
Ukuran chunk berapa yang sebaiknya dipakai untuk RAG?
Tidak ada satu ukuran terbaik. Banyak tim mulai di antara 256 dan 512 token dengan overlap 10 sampai 20 persen, lalu membandingkan beberapa ukuran pada kumpulan pertanyaan berlabel. Pertanyaan faktual pendek cenderung cocok dengan chunk kecil, dan pertanyaan yang butuh satu bagian utuh cocok dengan chunk besar.
Apa itu semantic chunking?
Semantic chunking membuat embedding setiap kalimat dan memulai chunk baru ketika kemiripan antarkalimat yang bertetangga turun, dengan asumsi penurunan itu menandai pergantian topik. Caranya tidak butuh ukuran tetap dan mengikuti isi. Biayanya satu panggilan embedding per kalimat saat indexing, dan pada dokumen yang terstruktur baik, hasilnya sering kurang lebih sama dengan pemotongan yang memperhatikan heading.
Apakah reranker sepadan dengan tambahan latensinya?
Sering kali ya. Cross-encoder atas 20 sampai 100 kandidat biasanya menambah puluhan hingga beberapa ratus milidetik di GPU, sedangkan menghasilkan jawaban butuh waktu lebih lama. Manfaatnya paling besar ketika chunk yang benar terambil, tetapi peringkatnya di bawah batas untuk prompt. Kalau chunk yang benar sama sekali tidak ada di daftar kandidat, chunking yang lebih baik atau hybrid search akan lebih membantu.
Apa bedanya BM25 dan vector search?
BM25 memberi skor dokumen berdasarkan kecocokan istilah persis, dengan bobot lebih tinggi untuk istilah langka dan normalisasi panjang dokumen. Vector search membandingkan embedding yang dipelajari, jadi cocok untuk parafrase, tetapi bisa mengaburkan nama langka, kode, dan angka. Hybrid search menjalankan keduanya dan menggabungkan dua daftar peringkat, sering kali dengan reciprocal rank fusion.
Penjelasan terkait
- Retrieval-Augmented Generation · Mendasarkan output model bahasa pada dokumen yang diambil untuk mengurangi halusinasi
- Embedding · Mengubah kata dan kategori menjadi vector
- TF-IDF · Menilai seberapa penting sebuah kata bagi satu dokumen dalam koleksi, dasar mesin pencari dan text retrieval
- BERT dan Masked Language Modeling · Sembunyikan satu kata, prediksi dari dua sisi: cara BERT mempelajari representasi bidirectional yang dalam
- Evaluasi Model dan Metrik · Precision, recall, F1, kurva ROC, dan metrik regresi
- Norm dan Metrik Jarak · L1, L2, cosine similarity: cara mengukur kedekatan di ruang vector
Referensi
- Lewis et al. (2020), "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"
- Karpukhin et al. (2020), "Dense Passage Retrieval for Open-Domain Question Answering"
- Nogueira and Cho (2019), "Passage Re-ranking with BERT"
- Cormack, Clarke, and Buettcher (2009), "Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods"
Terakhir diperbarui