Pemecahan Teks untuk RAG dan LLM: Ukuran, Overlap, dan Batas yang Benar‑Benar Berhasil
Oleh Redaksi Safe Local Tools
RAG gagal secara diam‑diam ketika chunk salah ukuran. Terlalu kecil, Anda kehilangan konteks; terlalu besar, embedding mendilusi makna dan meledakkan anggaran token. Memotong acak setiap 512 karakter membelah kalimat dan mengubur paragraf yang menjawab pertanyaan pengguna.
Panduan ini menjelaskan pemecahan untuk retrieval‑augmented generation, trade‑off overlap, pemisahan sadar struktur, serta cara bereksperimen dengan pemecahan teks Safe Local Tools secara lokal sebelum Anda mengirim dokumen rahasia ke API embedding.
Chunk berkualitas adalah langkah bottleneck yang sering diabaikan tim yang buru‑buru mengganti model—padahal memperbaiki retrieval biasanya lebih murah daripada meningkatkan ukuran LLM.

Peran chunk dalam pipeline RAG
Alur umum: mengonsumsi dokumen → memecah menjadi chunk → embed tiap chunk ke indeks vektor → pada query mengambil top‑k chunk → memasukkan chunk ke prompt LLM.
Kualitas chunk membatasi kualitas jawaban; upgrade model tidak menyelamatkan retrieval yang tidak pernah melihat paragraf yang benar.
Ukuran chunk token dibanding karakter
Embedding sering ditagih per token; API penyimpanan menghitung byte.
Aturan awal: dokumentasi teknis dengan heading 400–800 token; log obrolan 200–400; prosa hukum 800–1200 dengan overlap besar; kode per fungsi atau kelas tanpa membelah blok.
Ukur pada korpus Anda—teks hukum tidak sama dengan referensi API.
Overlap mengapa 10–20 persen membantu
Overlap berarti chunk N berbagi kalimat akhir dengan chunk N+1.
Manfaat: kalimat yang menyeberangi batas tetap utuh minimal di satu chunk; embedding menangkap konteks lokal yang terduplikasi di tepi.
Biaya: lebih banyak penyimpanan dan biaya embedding; hit retrieval bisa menduplikasi kecuali Anda dedupe.
Mulai dengan overlap sekitar 10–15 persen dari ukuran chunk; sesuaikan recall/precision pada set pertanyaan berlabel.
Pemisahan sadar struktur mengalahkan panjang mentah
Prioritas batas: heading Markdown/HTML → jeda paragraf → akhir kalimat → whitespace → potong keras karakter terakhir.
Untuk kode: pecah pada fungsi; untuk tabel: jaga baris bersama atau serialkan baris‑per‑baris dengan header diulang.
Metadata yang harus disimpan bersama vektor
source_file, halaman, judul bagian, updated_at untuk freshness, id penyewa atau ACL untuk multi‑tenant, serta indeks chunk untuk rekonstruksi.
Retrieval tanpa metadata memaksa model menebak asal kutipan—buruk untuk sitasi.
Evaluasi: berhenti menebak
Bangun 30–50 pertanyaan pengguna nyata dengan gold passage.
Ukur Recall@k, MRR, dan kesetiaan jawaban dengan juri LLM atau review manusia.
Ubah satu hyperparameter sekali‑jalankan; catat versi model embedding.
Mode gagal umum
Chrome navigasi ikut ter‑chunk dan mencemari embedding.
Footer boilerplate berulang mendominasi similarity.
Tanpa deteksi bahasa pada indeks campuran.
Tabel besar diratakan menjadi teks yang tidak bermakna semantik untuk angka.
Dokumen basi mengembalikan API versi lawas.
Preprocess: strip template, dedupe header, versikan indeks Anda.
Pencarian hybrid tetap membutuhkan chunk baik
BM25 menyukai token langka utuh; vektor menyukai lingkungan semantik. Memecah kode produk (PT-2048-A) merusak keduanya.
Anggaran token setelah retrieval
Bahkan retrieval sempurna harus muat di jendela model.
Delapan chunk × 600 token bisa menghabiskan 4800 token sebelum pertanyaan pengguna—sisakan ruang sistem dan jawaban.
Re‑rank ke 3–5 teratas setelah tahap encoder murah jika perlu.
Privasi dan eksperimen lokal
Playbook korporat tidak seharusnya diunggah ke demo chunking acak.
Safe Local Tools memproses teks di browser sehingga Anda bisa menyetel ukuran pada draf sensitif tanpa menambah pemroses SaaS lain.
Resep berdasarkan kasus penggunaan
Wiki internal: berbasis heading, ~600 token, overlap ~80 token, buang navigasi.
Tiket dukungan: segmen utas pesan dengan metadata id tiket.
Kontrak: ikuti klausul jika ada; overlap lebih tinggi; review manusia untuk jawaban bernilai tinggi.
Dok API: satu chunk per endpoint dengan prefiks metode dan path.
Kapan melewati RAG sama sekali
FAQ pendek yang muat konteks tidak memerlukan vektor.
Chunking menambah bagian bergerak—gunakan prompt langsung jika korpus Anda di bawah ~8k token untuk model Anda.
PDF dan urutan ekstraksi
Urutan teks PDF bisa tidak cocok dengan urutan membaca visual.
Validasi layout kolom sebelum embedding; OCR untuk PDF scan daripada menyimpan karakter sampah.
Hubungan induk‑anak pada chunk
Simpan chunk kecil untuk retrieval tetapi tautkan ke span induk lebih besar yang ditampilkan ke model setelah seleksi.
Ini membantu menjawab pertanyaan penjelasan yang memerlukan konteks sekitar definisi ketat.
Retensi regulatoris
Chunk mewarisi kebijakan retensi dokumen sumber.
Penghapusan GDPR pada berkas harus menghapus vektor dan metadata terkait dalam job yang sama.
Chunk buruk adalah pembunuh senyap untuk demo RAG yang "berhasil di notebook". Perbaiki retrieval lebih dulu; baru kemudian debatkan model mana yang lebih pintar berbicara.
Saat Anda ingin melihat batas chunk pada dokumen panjang tanpa mengunggahnya, Coba Pemecah Teks →