Unit 3 / 11

Chunking dan Penyediaan Dokumen

Keuntungan:

  • Nilaikan saiz bongkah, pertindihan dan tukar ganti potongan semantik
  • Memilih strategi chunking yang sesuai untuk jenis dokumen yang berbeza (PDF, jadual, kod, log sembang)
  • Kuatkan kualiti perolehan dan penapisan dengan menambahkan metadata pada setiap bahagian

Ini adalah langkah yang paling diabaikan tetapi paling menentukan dalam RAG: cara anda memecahkan dokumen. Ini dipanggil chunking. Walaupun anda memberikan dokumen yang sama kepada model yang sama, disebabkan pemotongan yang tidak baik, pengambilan mengembalikan bahagian yang salah dan model itu tidak akan menghasilkan jawapan yang hebat. Dalam unit ini, kami merangkumi strategi pemecahan, cara menyesuaikannya mengikut jenis dokumen dan cara menambah metadata yang bermakna pada setiap serpihan.

Kenapa Kita Cincang?

Terdapat tiga sebab. Pertama, model benam menukar teks sehingga panjang tertentu menjadi vektor yang bermakna; Jika keseluruhan bab 40 halaman dijejalkan ke dalam satu vektor, maknanya menjadi "kabur." Kedua, kami ingin memberikan model hanya bahagian yang diperlukan sebagai konteks; menyerahkan keseluruhan dokumen adalah mahal dan mengganggu. Ketiga, untuk mendapatkan semula menjadi tepat, unit carian mestilah kecil dan fokus.

Jadi chunk ialah unit terkecil untuk mendapatkan semula. Ia tidak sepatutnya terlalu besar atau terlalu kecil – betul.

Saiz Ketulan dan Baki Bertindih

Terdapat dua tetapan utama: saiz ketulan (berapa banyak token/perkataan akan berada dalam ketulan) dan bertindih (bahagian yang dikongsi oleh ketulan jiran).

Bahagian yang sangat kecil (mis. 100 token): difokuskan tetapi terputus hubungan daripada konteks. Dia berkata "selama 14 hari", tetapi apa yang tinggal 14 hari dalam ayat sebelumnya. Ketulan yang sangat besar (cth. 2000 token): mengekalkan konteks tetapi banyak benang bercampur; pembenaman menjadi kacau bilau dan topik yang tidak berkaitan disatukan.

Pertindihan menyelesaikan masalah sempadan. Jika ayat jatuh tepat pada sempadan dua bahagian, ia terbahagi kepada dua tanpa bertindih dan hilang maknanya. Pertindihan 50-100 token memastikan bahawa maklumat yang berada dalam had kekal utuh dalam sekurang-kurangnya satu bahagian.

Saiz ketulan

Kelebihan

Keburukan

kandungan yang sesuai

Kecil (100-250 token)

Sensitiviti tinggi, fokus

Konteks mungkin pecah

Soalan Lazim, artikel pendek, definisi

Sederhana (300-600 token)

Baki; kebanyakan senario

Prosedur, teks dasar

Besar (800-1500 token)

Integriti konteks

pembenaman kabur

Naratif, penjelasan panjang

Petua: Jika anda tidak tahu di mana hendak bermula, mulakan dengan 400-500 bahagian token dan 50-80 token bertindih; kemudian ukur dan sesuaikan dengan data anda sendiri. Saiz "betul" tidak universal, ia bergantung pada konteks.

Strategi Chunking

Saiz tetap: Memangkas teks setiap N token. Ia mudah dan pantas, tetapi boleh mengganggu pertengahan ayat.

Berasaskan pemisah (rekursif/pemisah): Membahagi mengikut perenggan dan seterusnya sempadan ayat; Ia lebih baik memelihara integriti makna. Kebanyakan sistem pengeluaran bermula dengan ini.

Pecahan semantik: Ia melihat pada benam ayat dan membahagikannya di mana perubahan subjek berlaku. Ia adalah kaedah berkualiti tinggi tetapi paling mahal; Dengan jumlah yang besar, kos transaksi meningkat.

Sedar Struktur: Menggunakan struktur dokumen seperti tajuk, bahagian, jadual. Contohnya, memisahkan dokumen Markdown dengan tajuk memastikan setiap bahagian membawa tajuknya sendiri.

Penyesuaian mengikut Jenis Dokumen

Tidak setiap dokumen adalah sama. Strategi berbeza mengikut jenis:

  • Teks PDF/dasar: Berasaskan penanda halaman, saiz sederhana. Kosongkan ulangan atas/bawah halaman (header/footer).
  • Jadual: Jangan ambil garis di luar konteks; simpan setiap baris dengan maklumat pengepala ("Item: X, Harga: Y, Stok: Z"). Menukar jadual mentah kepada teks biasa selalunya penting.
  • Kod: Pisah mengikut sempadan fungsi/kelas; Jangan potong fungsi keluar dari jalan.
  • Rakaman sembang/tiket: Pisah mengikut mesej atau pusingan perbualan; Kekalkan pengetahuan tentang siapa yang berkata apa.

# ketulan (konseptual) berasaskan kurungan = bol( teks, saiz_sasaran=450, # tindih token=70, # kurungan token=["\n\n", "\n", ". ", " "] # perenggan pertama, perkataan terakhir)

Tambahkan Metadata pada Setiap Lagu

Chunking bukan hanya "membahagikan"; adalah untuk memperkayakan setiap bahagian. Setiap teg yang anda lampirkan pada trek berbaloi dengan beratnya dalam emas untuk penapisan masa hadapan dan petik sumber.

# Enriched chunk (konseptual){ "text": "Cuti bergaji tahunan ialah 14 hari dengan 1-5 tahun perkhidmatan...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5.2 Annual Leave", "page": 23, "date": "2025-06", "private": "2025-06" }}

Satu lagi teknik yang berkuasa ialah menambahkan tajuk kontekstual: menulis tajuk bab yang dimilikinya pada permulaan setiap bahagian. Oleh itu, walaupun sekeping terputus-putus seperti "Selama 14 hari" kedua-duanya lebih baik tertanam dan lebih bermakna sebagai "Cuti Tahunan - 14 hari."

Chunking Lemah / Chunking Kuat

Lemah (potongan keras buta, tiada metadata):

Potong teks setiap 1000 aksara. Simpan teks sahaja.# Keputusan: jadual dibahagikan di tengah, "14 hari" kekal tanpa konteks,# tidak diketahui dari mana dokumen itu datang, tiada penapis boleh dibuat.

Berkuasa (sedar struktur + pengepala + metadata):

Bahagikan dokumen dengan tajuk; tambah tajuk bahagian pada setiap bahagian;lampirkan sumber, halaman, tarikh dan metadata privasi; tukar tablerow kepada teks biasa dengan pengepalanya.# Hasil: terfokus, kontekstual, boleh ditapis, boleh sumber.

Tiga Kes Mini

Kes 1 — Melukis bencana. Pasukan kewangan membahagikan senarai harga 200 muka surat dengan pemotongan keras buta; baris jadual dibahagikan secara rawak. "Berapa harga produk X?" Model membaca baris yang salah dan memberikan harga yang salah (9 daripada 12 kes adalah salah). Apabila saya menukar baris jadual kepada teks biasa dalam format "Produk: … | Harga: … | Unit: …" ralat menurun kepada 0 daripada 12.

Kes 2 — Bongkah yang sangat besar. Dalam wiki, setiap halaman dibuat daripada satu bahagian (ada yang mengatakan 3,000 token). Pembenaman menjadi kabur kerana terdapat "cuti", "lebih masa" dan "gaji" pada satu halaman; Bahagian waktu bekerja juga terlibat dalam soalan cuti. Apabila halaman dibahagikan kepada saiz sederhana mengikut tajuk, ingat@5 meningkat daripada 64% kepada 91%.

Kes 3 — Ayat dipotong tanpa pertindihan. Potongan tetap 250 token untuk pasukan undang-undang, tiada pertindihan. Definisi kritikal jatuh tepat pada sempadan dua bahagian dan terbelah dua; Tidak satu pun atau yang lain mengandungi jawapan yang lengkap. Apabila 60 pertindihan token ditambah, definisi yang sama kekal utuh dalam satu bahagian dan jawapan yang betul telah dikembalikan.

Kesilapan biasa

  • Potongan tetap buta: Pisahkan ayat dan jadual di tengah; makna hilang.
  • Meninggalkan pertindihan pada sifar: Maklumat yang jatuh pada sempadan dibahagikan dan hilang.
  • Tidak menambah metadata: Penapisan dan paparan sumber menjadi mustahil.
  • Membiarkan jadual mentah: Model tidak dapat menyelesaikan struktur jadual; Tukar baris kepada teks biasa.
  • Mengenakan satu strategi: PDF, kod dan jadual tidak dibahagikan dengan kaedah yang sama; Sesuaikan dengan genre.
Awas: Jangan tetapkan Chunking sekali dan lupakannya. Ukur semula kualiti perolehan apabila jenis dokumen baharu tiba (tiket daripada sistem baharu, PDF yang diimbas). Data input buruk bermakna tindak balas yang buruk ("sampah masuk, sampah keluar").

Secara ringkasnya

  • Chunk ialah unit terkecil untuk mendapatkan semula; Tidak terlalu besar dan tidak terlalu kecil - ia harus seimbang mengikut kandungan.
  • Saiz ketulan menunjukkan keseimbangan konteks fokus; Pertindihan menguruskan kehilangan sempadan.
  • Pecahan berasaskan kurungan dan sedar struktur ialah titik permulaan kebanyakan sistem penjanaan; semantik chunking adalah kualiti yang baik tetapi mahal.
  • Jenis seperti jadual, skrip dan sembang memerlukan strategi mereka sendiri; Tukar jadual kepada teks biasa.
  • Tambahkan metadata sumber/tarikh/bab/privasi dan tajuk bahagian pada setiap lagu; Ini adalah asas penapisan dan petikan.

Tugasan permohonan

Pecahkan bahagian dokumen yang anda pilih kepada tiga cara berbeza: (1) kepingan kecil 200 token, (2) kepingan sederhana 500 token (70 token bertindih), (3) kepingan besar tunggal. Tanya 3 soalan yang sama untuk setiap strategi, tandakan secara manual bahagian mana yang hendak dibawa masuk, dan tuliskan alasan untuk strategi mana yang paling sesuai untuk dokumen itu. Kemudian tambahkan sekurang-kurangnya empat medan metadata dan "tajuk bab" pada setiap lagu. Jika dokumen mengandungi jadual, tukar baris jadual kepada teks biasa dalam format "field:value".

senarai semak

  • [ ] Saya dapat memberitahu bahawa bongkah ialah unit terkecil untuk mendapatkan semula dan saiz ialah keseimbangan konteks fokus.
  • [ ] Saya tahu sebab Pertindihan menghalang kehilangan sempadan.
  • [ ] Saya boleh membezakan antara chunking berasaskan kurungan, semantik dan sedar struktur.
  • [ ] Saya boleh menyesuaikan strategi untuk jadual, kod dan sembang.
  • [ ] Saya memperkukuh perolehan semula dengan menambahkan metadata dan tajuk bab pada setiap lagu.