Keuntungan:
- Evaluasi secara numerik ukuran potongan, tumpang tindih, dan pengorbanan potongan semantik
- Memilih strategi pemotongan yang tepat untuk berbagai jenis dokumen (PDF, tabel, kode, log obrolan)
- Perkuat kualitas pengambilan dan pemfilteran dengan menambahkan metadata ke setiap bagian
Ini adalah langkah yang paling diabaikan namun paling menentukan dalam RAG: bagaimana Anda memecah dokumen. Ini disebut pemotongan. Bahkan jika Anda memberikan dokumen yang sama ke model yang sama, karena pemotongan yang buruk, pengambilan akan mengembalikan bagian yang salah dan model tidak akan pernah menghasilkan jawaban yang bagus. Dalam unit ini, kami membahas strategi fragmentasi, cara mengadaptasinya menurut tipe dokumen, dan cara menambahkan metadata yang bermakna ke setiap fragmen.
Mengapa Kita Menghancurkan?
Ada tiga alasan. Pertama, model penyematan mengubah teks hingga panjang tertentu menjadi vektor yang bermakna; Jika seluruh bab setebal 40 halaman dijejalkan ke dalam satu vektor, maknanya menjadi "kabur". Kedua, kami ingin memberikan model hanya bagian yang diperlukan sebagai konteks; menyerahkan seluruh dokumen itu mahal dan mengganggu. Ketiga, agar pengambilan dapat dilakukan dengan tepat, unit pencarian harus berukuran kecil dan terfokus.
Jadi chunk adalah unit pengambilan terkecil. Seharusnya tidak terlalu besar atau terlalu kecil – tepat.
Ukuran Potongan dan Saldo Tumpang Tindih
Ada dua pengaturan utama: ukuran bongkahan (berapa banyak token/kata yang akan ada dalam bongkahan) dan tumpang tindih (bagian yang dibagi oleh bongkahan yang berdekatan).
Potongan yang sangat kecil (misalnya 100 token): terfokus namun tidak terhubung dengan konteks. Dia bilang "selama 14 hari", tapi sisa 14 hari di kalimat sebelumnya. Potongan yang sangat besar (misalnya 2000 token): mempertahankan konteks tetapi banyak thread yang tercampur; penyematan menjadi kacau dan topik yang tidak relevan muncul bersamaan.
Tumpang tindih memecahkan masalah batas. Jika suatu kalimat terletak tepat pada batas dua bagian, maka kalimat itu terbagi menjadi dua tanpa tumpang tindih dan maknanya hilang. Tumpang tindih 50-100 token memastikan bahwa informasi yang berada dalam batas tetap utuh setidaknya di satu bagian.
Ukuran potongan
Keuntungan
Kerugian
konten yang sesuai
Kecil (100-250 token)
Sensitivitas tinggi, fokus
Konteksnya mungkin rusak
FAQ, artikel pendek, definisi
Sedang (300-600 token)
Saldo; sebagian besar skenario
—
Prosedur, teks kebijakan
Besar (800-1500 token)
Integritas konteks
penyematan buram
Narasi, penjelasan panjang
Tip: Jika Anda tidak tahu harus mulai dari mana, mulailah dengan 400-500 token chunk dan 50-80 token overlap; lalu ukur dan sesuaikan dengan data anda sendiri. Ukuran yang "tepat" tidak bersifat universal, bergantung pada konteksnya.
Strategi Pemotongan
Ukuran tetap: Memangkas teks setiap N token. Ini sederhana dan cepat, tetapi dapat menyela di tengah kalimat.
Berbasis pemisah (rekursif/pemisah): Membagi menurut paragraf dan kemudian batasan kalimat; Ini lebih menjaga integritas makna. Kebanyakan sistem produksi dimulai dengan ini.
Pengelompokan semantik: Ini melihat penyematan kalimat dan membaginya di tempat terjadinya perubahan subjek. Ini adalah metode dengan kualitas terbaik tetapi paling mahal; Dengan volume yang besar, biaya transaksi meningkat.
Sadar struktur: Menggunakan struktur dokumen seperti judul, bagian, tabel. Misalnya, memisahkan dokumen Markdown berdasarkan judul memastikan bahwa setiap bagian memiliki judulnya sendiri.
Adaptasi berdasarkan Jenis Dokumen
Tidak semua dokumen sama. Strategi bervariasi menurut jenisnya:
- PDF/teks kebijakan: Berbasis bookmark, ukuran sedang. Hapus pengulangan halaman atas/bawah (header/footer).
- Tabel: Jangan mengambil baris di luar konteks; simpan setiap baris dengan informasi header ("Item: X, Harga: Y, Stok: Z"). Mengubah tabel mentah menjadi teks biasa seringkali penting.
- Kode: Dibagi berdasarkan fungsi/batas kelas; Jangan menghilangkan suatu fungsi.
- Rekaman obrolan/tiket: Dibagi berdasarkan pesan atau putaran percakapan; Pertahankan pengetahuan tentang siapa mengatakan apa.
# potongan berbasis tanda kurung (konseptual) potongan = bol( teks, ukuran_target=450, # token tumpang tindih=70, # tanda kurung=["\n\n", "\n", ". ", " "] # paragraf pertama, kata terakhir)
Tambahkan Metadata ke Setiap Lagu
Chunking bukan sekadar "membagi"; adalah untuk memperkaya setiap bagian. Setiap tag yang Anda lampirkan ke trek bernilai emas untuk pemfilteran dan kutipan sumber di masa mendatang.
# Potongan yang diperkaya (konseptual){ "text": "Cuti tahunan yang dibayar adalah 14 hari dengan masa kerja 1-5 tahun...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5.2 Cuti Tahunan", "halaman": 23, "date": "2025-06", "department": "IK", "privacy": "internal" }}
Teknik ampuh lainnya adalah menambahkan header kontekstual: menulis judul bab di awal setiap bagian. Oleh karena itu, bahkan bagian yang terputus-putus seperti "Selama 14 hari" akan tertanam lebih baik dan lebih bermakna sebagai "Cuti Tahunan - 14 hari".
Potongan Lemah / Potongan Kuat
Lemah (hardcut buta, tidak ada metadata):
Potong teks setiap 1000 karakter. Simpan teksnya saja.# Hasil: tabel terbelah tengah, "14 hari" tetap tanpa konteks,# tidak diketahui dari dokumen mana, tidak ada filter yang dapat dibuat.
Kuat (sadar struktur + header + metadata):
Bagilah dokumen berdasarkan judul; tambahkan judul bagian ke setiap bagian; lampirkan sumber, halaman, tanggal dan metadata privasi; mengonversi baris tabel menjadi teks biasa dengan headernya.# Hasil: fokus, kontekstual, dapat difilter, dapat diperoleh dari sumber.
Tiga Kasus Mini
Kasus 1 — Lukisan bencana. Sebuah tim keuangan membagi daftar harga setebal 200 halaman dengan pemotongan buta; baris tabel dibagi secara acak. “Berapa harga produk X?” Model membaca baris yang salah dan memberikan harga yang salah (9 dari 12 kasus salah). Ketika saya mengonversi baris tabel menjadi teks biasa dalam format "Produk: … | Harga: … | Unit: …" kesalahannya berkurang menjadi 0 dari 12.
Kasus 2 — Potongan yang sangat besar. Di wiki, setiap halaman terbuat dari satu bagian (ada yang mengatakan 3.000 token). Penyisipannya kabur karena ada "cuti", "lembur" dan "penggajian" dalam satu halaman; Bagian jam kerja juga ikut berperan terkait pertanyaan cuti. Ketika halaman dibagi menjadi ukuran sedang berdasarkan judul, recall@5 meningkat dari 64% menjadi 91%.
Kasus 3 — Kalimat terpotong tanpa tumpang tindih. 250 token potongan tetap untuk tim hukum, tidak ada tumpang tindih. Definisi kritis jatuh tepat di perbatasan dua bagian dan terbelah menjadi dua; Tidak satu pun yang berisi jawaban lengkap. Ketika 60 token tumpang tindih ditambahkan, definisi yang sama tetap utuh dan jawaban yang benar dikembalikan.
Kesalahan umum
- Potongan tetap buta: Memisahkan kalimat dan tabel di tengah; maknanya hilang.
- Membiarkan tumpang tindih di nol: Informasi yang berada di batas terpecah dan hilang.
- Tidak menambahkan metadata: Pemfilteran dan tampilan sumber menjadi tidak mungkin.
- Membiarkan tabel mentah: Model tidak dapat menyelesaikan struktur tabel; Ubah baris menjadi teks biasa.
- Menerapkan satu strategi: PDF, kode dan tabel tidak dipisahkan dengan metode yang sama; Sesuaikan dengan genre.
Perhatian: Jangan atur Chunking satu kali dan lupakan saja. Ukur ulang kualitas pengambilan saat jenis dokumen baru tiba (tiket dari sistem baru, pindaian PDF). Data input yang buruk berarti respon yang buruk (“sampah masuk, sampah keluar”).
Singkatnya
- Potongan adalah unit pengambilan terkecil; Tidak terlalu besar dan tidak terlalu kecil – harus seimbang sesuai dengan isinya.
- Ukuran potongan menunjukkan keseimbangan fokus-konteks; Tumpang tindih mengelola hilangnya batas.
- Pengelompokan berbasis braket dan sadar struktur adalah titik awal dari sebagian besar sistem pembangkitan; potongan semantik berkualitas bagus tetapi mahal.
- Jenis seperti tabel, skrip, dan obrolan memerlukan strateginya sendiri; Ubah tabel menjadi teks biasa.
- Tambahkan metadata sumber/tanggal/bab/privasi dan judul bagian ke setiap lagu; Ini adalah dasar dari penyaringan dan kutipan.
Tugas aplikasi
Bagi bagian dokumen yang Anda pilih menjadi tiga cara berbeda: (1) potongan kecil sebanyak 200 token, (2) potongan sedang sebanyak 500 token (70 token tumpang tindih), (3) potongan besar tunggal. Ajukan 3 pertanyaan yang sama untuk setiap strategi, tandai secara manual bagian mana yang akan diajukan, dan tuliskan alasan strategi mana yang paling cocok untuk dokumen tersebut. Kemudian tambahkan setidaknya empat bidang metadata dan “judul bab” ke setiap lagu. Jika dokumen berisi tabel, ubah baris tabel menjadi teks biasa dalam format "bidang:nilai".
daftar periksa
- [ ] Saya tahu bahwa potongan adalah unit pengambilan terkecil dan ukuran adalah keseimbangan fokus-konteks.
- [ ] Saya tahu mengapa Tumpang tindih mencegah hilangnya batas.
- [] Saya dapat membedakan antara pengelompokan berbasis braket, semantik, dan sadar struktur.
- [ ] Saya dapat mengadaptasi strategi untuk tabel, kode, dan obrolan.
- [ ] Saya memperkuat pengambilan dengan menambahkan metadata dan judul bab ke setiap lagu.