Modernisasi Pipeline Pemrosesan Dokumen Warisan dan Penghematan Biaya
Mengurangi Pemeliharaan dengan Integrasi Logika Konversi Markdown
Jika Anda menghabiskan 5 jam lembur setiap minggu untuk memasukkan ratusan file PDF, PPT, dan Excel ke dalam sistem RAG, penyebab masalahnya adalah pustaka penguraian (parsing) yang terfragmentasi. Struktur lama yang mencampur PyPDF2 atau openpyxl hanya meningkatkan kompleksitas kode. Dengan mengadopsi MarkItDown dari Microsoft, Anda dapat menghapus logika percabangan yang rumit.
Saat melakukan refaktorisasi pipeline, gunakan processor factory pattern.
- Singkirkan pustaka yang tersebar di setiap format dan unifikasi antarmuka pemanggilan dengan fungsi convert() dari MarkItDown.
- Lakukan percabangan metode pemrosesan berdasarkan kompleksitas dokumen. Gunakan parser ringan untuk teks sederhana, dan pilih MarkItDown untuk dokumen kompleks dengan banyak tabel.
- Isolasi semua dependensi dalam kontainer Docker (Python 3.11 atau lebih tinggi) dan distribusikan dengan FastAPI.
Struktur ini membuat parsing engine dapat diskalakan secara independen. Jika struktur tabel tetap utuh, kesalahan preservasi tabel saat LLM membaca dokumen berkurang sebesar 34% (berdasarkan pengumuman Microsoft 2024).
Menghemat 30% Biaya API dengan Pra-pemrosesan Markdown
Biaya token embedding berbanding lurus dengan panjang file Markdown. Hasil keluaran MarkItDown sering kali bercampur dengan metadata atau noise yang tidak perlu dikirim ke LLM. Hanya dengan memfilter hal ini, Anda dapat mengurangi biaya API sebesar 30%.
Bangun logika penyaringan yang efisien.
- Gunakan modul re di Python untuk mengurangi baris baru yang berurutan (\n{3,}) menjadi dua, dan hapus teks hak cipta di bagian bawah atau tag HTML yang berulang dengan regular expression.
- Gunakan MarkdownHeaderTextSplitter untuk melakukan chunking berdasarkan header. Mengelola child chunk untuk pencarian dan parent chunk untuk konteks akan meningkatkan akurasi pencarian.
- Gunakan hash MD5 untuk mencegah embedding duplikat dari laporan yang sama sejak awal.
Dengan memperhatikan efisiensi token, Anda dapat menurunkan biaya API perusahaan secara signifikan setiap bulannya.
Mengelola Kualitas Data dengan Snapshot Testing
Saat versi pustaka berubah, hasil penguraian bisa sedikit bergeser. Berhentilah melakukan verifikasi manual di mana insinyur harus membuka file satu per satu. Dengan memperkenalkan snapshot testing, Anda dapat mendeteksi penurunan kualitas secara instan.
Buat lingkungan pengujian unit untuk mencegah regresi.
- Instal plugin pytest-regressions dan simpan Markdown yang telah dikonversi dengan baik sebagai golden master file.
- Pastikan skrip pengujian membandingkan hasil konversi dengan golden master setiap saat. Jika terjadi perbedaan (diff), kirim pemberitahuan segera.
- Gunakan model sentence transformer untuk mengukur kemiripan kosinus antara versi asli dan versi yang dikonversi. Anda hanya perlu mengatur agar log dicatat jika tingkat preservasi format di bawah 0,9.
Sistem otomatisasi ini akan menghilangkan tugas perbandingan manual yang memakan waktu 5 jam setiap minggu.
Meningkatkan Kecepatan Batch Job dengan Pemrosesan Paralel
Memproses ribuan dokumen secara sekuensial adalah pemborosan sistem. Dengan menggunakan concurrent.futures.ProcessPoolExecutor untuk memparalelkan pemrosesan batch, pekerjaan yang biasanya memakan waktu berhari-hari dapat diselesaikan dalam hitungan jam.
Implementasikan arsitektur paralel dengan cara berikut:
- Jika memori server adalah 16GB, batasi jumlah worker hingga 20-25. Jika dipaksakan lebih, hanya akan menyebabkan error memori.
- Bagi file ke dalam batch berukuran 50-100, dan panggil garbage collection secara paksa di setiap akhir batch untuk menangani kebocoran memori.
- Pisahkan PDF berukuran besar di atas 10MB ke dalam antrean khusus agar ditangani oleh worker berkinerja tinggi.
Metode ini membantu menjaga kekinian data sekaligus memanfaatkan sumber daya sistem secara efisien.