Chunking mengubah konten halaman yang sudah dinormalisasi menjadi unit retrieval. Pilihan yang buruk menaikkan biaya (terlalu banyak fragmen), menurunkan recall (blok terlalu besar), atau mengencerkan precision (batas yang mematahkan makna). Tidak ada metode terbaik universal; strategi harus selaras dengan struktur corpus, volatilitas, dan pola query. Panduan ini memetakan ruang desain, trade-off, workflow evaluasi, dan tuas optimisasi untuk pipeline RAG produksi.
Mengapa chunking penting
Tujuan:
- Memaksimalkan probabilitas fakta relevan muncul dalam retrieval top-k.
- Menjaga kohesi semantik agar jawaban yang dihasilkan tetap grounded.
- Mengoptimalkan penggunaan token, menghindari embedding boilerplate berulang.
- Memungkinkan pembaruan incremental yang deterministik dengan ID chunk stabil.
Chunking yang tidak selaras terlihat sebagai redundansi tinggi, Recall@k rendah, fakta batas yang berhalusinasi, dan biaya embedding yang membengkak.
Chunking jendela tetap
Jendela sederhana berukuran N token, misalnya 500 token. Kelebihan: deterministik, mudah diimplementasikan, dan perilaku pembaruan stabil. Kekurangan: batas dapat memotong konsep; overlap redundan diperlukan untuk mengurangi truncation sehingga biaya tumbuh. Gunakan seperlunya: ini baseline baik untuk konten heterogen atau kurang terstruktur ketika sinyal semantik tidak andal.
Jendela geser dengan overlap
Ukuran jendela W dengan overlap O, misalnya 500 / 50 token, mengurangi pemotongan fakta di batas. Overlap di atas sekitar 15% memberi kenaikan recall yang makin kecil sambil memperbesar ukuran indeks. Lacak duplication_ratio = distinct_token_count / total_token_count untuk menurunkan O secara terukur.
Deteksi batas semantik
Segmentasikan berdasarkan sinyal struktural: heading H2/H3, pengelompokan daftar, blok kode, dan batas tabel. Terapkan batas token minimum/maksimum, dengan menggabungkan sibling terlalu kecil dan memecah section terlalu besar. Manfaatnya: kohesi lebih tinggi dan overlap lebih sedikit. Risikonya: markup cacat dan hierarki heading tidak konsisten. Mitigasi dengan perbaikan hierarki serta fallback ke pemecahan paragraf ketika heading tidak ada.
Chunking hierarkis
Indeks dua tingkat: embedding section kasar, misalnya seluruh section tutorial, ditambah subchunk yang lebih halus. Alur retrieval: ANN kasar -> filter N section teratas -> retrieval halus di dalamnya. Keuntungan: menurunkan ruang pencarian global untuk corpus besar dan memperbaiki latensi. Kompleksitas: lebih banyak komponen bergerak dan butuh logika scoring cascade.
Chunking adaptif / dinamis
Sesuaikan ukuran chunk berdasarkan densitas semantik lokal dan petunjuk struktural. Contoh logika: mulai dari section heading; jika >800 token, pecah berdasarkan cluster paragraf yang diberi skor kemiripan semantik; jika <120 token, gabungkan dengan sibling berikutnya kecuali divergensi topik melewati threshold. Ini membutuhkan pre-pass embedding atau similarity; biaya dibayar sekali saat ingestion untuk efisiensi retrieval jangka panjang yang lebih baik.
Pertimbangan embedding
Pertahankan metadata: token_count, model_version, content_hash. Hindari truncation dengan menghitung token lebih dulu dan memecah sebelum pemanggilan model. Model dense menurun kualitasnya dengan boilerplate berlebih; hapus artefak navigasi sebelum chunking. Pantau vector_density (istilah unik / token) untuk menemukan fragmen bersinyal rendah yang menjadi kandidat penggabungan ulang.
Metode evaluasi
Benchmark per strategi:
| Metrik | Tujuan |
|---|---|
| Recall@k | Retensi fakta |
| Precision@k | Noise konteks |
| Jumlah chunk | Indikator biaya |
| Rasio duplikasi | Penyetelan overlap |
| Rata-rata token per chunk | Pemanfaatan jendela |
| Latensi (retrieval) | Efisiensi indeks |
Jalankan pada gold query set; adopsi strategi hanya jika kenaikan recall lebih besar daripada delta biaya dan latensi.
Playbook implementasi
- Baseline: Fixed 500 + overlap 10%; kumpulkan benchmark.
- Perkenalkan batas semantik: ganti jendela ketika heading andal; ukur ulang.
- Tambahkan layer hierarkis jika corpus >250k chunk atau latensi > target.
- Deploy logika adaptif untuk ukuran section yang sangat bervariasi.
- Reassessment triwulanan: bandingkan biaya per delta kualitas dengan kapabilitas model baru.
Simpan diff manifest chunk per iterasi untuk rollback.
Poin utama
- Batas semantik biasanya mengalahkan jendela tetap murni dalam precision/biaya.
- Overlap adalah dial: ukur duplikasi, jangan menebak.
- Retrieval hierarkis membantu scaling tanpa pertumbuhan latensi linear.
- ID chunk stabil memungkinkan refresh embedding incremental yang aman.
- Evaluasi perubahan strategi seperti deploy kode: benchmark, bandingkan, catat.