Mengapa memberi model Markdown, bukan PDF
Saat Anda melampirkan PDF ke chat, aplikasinya mengekstrak teks untuk Anda, dan Anda tidak melihat apa yang sebenarnya diterima model. Mengonversinya sendiri lebih dulu punya tiga keuntungan:
- Anda melihat teksnya. Tabel rusak, kolom yang teracak, dan halaman tanpa teks terlihat sebelum membingungkan model, bukan sesudahnya.
- Strukturnya bertahan. Judul, daftar, dan tabel tetap sebagai Markdown, yang mudah dibaca model, bukan deretan baris datar.
- Lebih hemat token. Nomor halaman, header berulang, tanda hubung di akhir baris, dan spasi tata letak dibuang, sehingga lebih banyak jendela konteks dipakai untuk isi.
Halaman ini dibuka dengan pengaturan untuk itu: gambar tidak disertakan, ada komentar <!-- Page N --> di awal setiap halaman agar model bisa mengutip halaman, dan baris gambar dibuang.
Jumlah token yang bisa dipercaya
Angka di atas Markdown adalah jumlah token persis dari apa yang akan Anda salin atau unduh, termasuk front matter dan penanda halaman. Angka ini dihitung dengan o200k_base, encoding yang dipakai GPT-4o dan model OpenAI setelahnya. Model lain, termasuk Claude, memakai tokenizer sendiri, jadi untuk model itu anggap angkanya perkiraan dekat, bukan angka pasti.
Setiap sakelar di Ringkas untuk LLM menunjukkan berapa token yang dihemat pada file Anda sebelum Anda menyalakannya:
| Sakelar | Fungsinya |
|---|---|
| Buang alamat tautan | Teks tautan tetap, URL dibuang |
| Buang tebal dan miring | Membuang tanda ** dan * |
| Buang baris gambar | Tanpa penanda atau tautan gambar |
| Teks biasa untuk tag HTML | <sup>, <sub>, dan <br> menjadi teks biasa |
| Normalisasi karakter | Ligatur seperti fi menjadi fi; spasi aneh menjadi spasi biasa |
| Tabel ringkas | Membuang kolom kosong dan spasi di sekitar sel |
Sakelar diterapkan dalam hitungan milidetik, karena PDF tidak dibaca ulang.
Chunk untuk RAG
Retrieval butuh dokumen dalam potongan yang cukup kecil untuk dibuat embedding dan masuk akal jika berdiri sendiri. Tab Chunk membagi Markdown untuk Anda:
- Di judul lebih dulu. Sebisa mungkin chunk tidak dimulai di tengah bagian, jadi setiap chunk membahas satu topik.
- Di bawah batas token yang Anda pilih, dari 256 sampai 8.192 token. Bagian yang lebih besar dari batas dibagi di antara kalimat, dan tabel besar di antara baris, dengan baris judul diulang.
- Dengan jalur judulnya. Setiap chunk tahu judul di atasnya, seperti
Metode › Pengumpulan data, dan bisa diawali dengan judul itu, sehingga chunk yang diambil tetap menyebut asalnya. - Dengan halamannya, agar jawaban bisa merujuk ke halaman 12 dokumen asli.
Unduh JSONL memberi satu objek JSON per baris:
{
"id": "report.pdf#3",
"source": "report.pdf",
"chunk": 3,
"headings": ["Methods", "Data collection"],
"page_start": 4,
"page_end": 5,
"tokens": 812,
"text": "..."
}
Beberapa baris kode cukup untuk memuatnya ke vector store yang Anda pakai.
Alur kerja yang berhasil
- Taruh PDF dan lihat Halaman untuk dicek lebih dulu. Perbaiki atau baca dengan OCR halaman yang keluar salah.
- Nyalakan pemangkasan yang penghematannya sepadan; biarkan tautan jika Anda ingin model mengutip sumber.
- Untuk chat, salin Markdown lalu tempel. Untuk pipeline, ambil chunk JSONL.
Semuanya terjadi di browser Anda, dan di sini itu penting: dokumen yang diberikan ke model sering berupa laporan internal, kontrak, atau riset yang tidak seharusnya diunggah ke layanan lain lagi.
Pertanyaan umum
Apakah Markdown benar-benar lebih baik daripada teks biasa untuk LLM?
Untuk dokumen yang berstruktur, biasanya membantu: judul memberi tahu model bagaimana bagian-bagian bersarang, dan tabel menjaga setiap angka di samping labelnya. Untuk satu halaman prosa, bedanya kecil. Sakelar memungkinkan Anda mempertahankan atau membuang struktur itu.
Ukuran chunk berapa yang sebaiknya dipakai?
Mulailah dengan 512 atau 1.024 token untuk tanya jawab atas dokumen. Chunk kecil lebih tepat untuk pertanyaan yang sempit; chunk besar menjaga lebih banyak konteks bersama. Ringkasan di bawah tab Chunk menunjukkan jumlah dan chunk terbesar, jadi Anda langsung melihat efeknya.
Apakah token dihitung di perangkat saya?
Ya. Tokenizer berjalan di tab, sama seperti bagian lain konverter. Tidak ada yang dikirim ke OpenAI atau siapa pun untuk menghitungnya.
Bisakah memproses banyak PDF untuk dataset?
Anda bisa menaruh hingga 20 file sekaligus dan mengunduh semuanya sebagai satu .zip. Untuk ribuan file, skrip adalah alat yang lebih baik; lihat PDF ke Markdown dengan Python.