Pengalaman Production RAG dari pemrosesan lebih dari 5 juta dokumen
(blog.abdellatif.io)- Selama 8 bulan menjalankan proyek RAG (Retrieval-Augmented Generation), penulis dapat membedakan metode yang benar-benar efektif dan yang hanya membuang waktu
- Pada tahap awal, prototipe cepat diselesaikan menggunakan Langchain dan Llamaindex, tetapi dari umpan balik pengguna nyata terlihat adanya keterbatasan performa
- Faktor terbesar yang meningkatkan performa pencarian dokumen adalah pembuatan kueri, reranking, strategi chunking, pemanfaatan metadata, dan query routing
- Dalam praktiknya, penulis membangun pipeline kustom dengan memilih secara fleksibel vector database, embedding, reranking, LLM, dan komponen lainnya
- Seluruh pengalaman dan know-how tersebut dirangkum dan dibuka melalui proyek open source (agentset-ai/agentset)
Gambaran umum pengalaman membangun Production RAG selama 8 bulan
- Penulis membagikan pengalaman membangun dan mengoperasikan sistem RAG pada dataset berskala besar seperti total 9 juta halaman (Usul AI) dan 4 juta halaman (sebuah perusahaan AI hukum anonim)
- Di awal, penulis mengikuti tutorial YouTube, berpindah dari Langchain ke Llamaindex, dan menyelesaikan prototipe hanya dalam beberapa hari, tetapi saat benar-benar dideploy muncul masalah performa rendah yang hanya bisa disadari oleh pengguna nyata
- Selama beberapa bulan, penulis memperbaiki komponen sistem secara bertahap hingga mencapai performa optimal
Faktor-faktor yang benar-benar berkontribusi pada peningkatan performa (berdasarkan urutan ROI)
-
Pembuatan Kueri (Query Generation)
- Karena kueri terakhir pengguna tidak dapat memuat seluruh konteks, penulis menggunakan LLM untuk meninjau isi percakapan dan menghasilkan beberapa kueri semantik serta kueri berbasis kata kunci
- Kueri-kueri ini diproses secara paralel lalu dikirim ke reranker untuk mendapatkan efek memperluas cakupan pencarian dan mengompensasi bias hybrid search
-
Reranking
- Dampak reranking terhadap performa, yang bisa diimplementasikan hanya dengan sekitar 5 baris kode, jauh lebih besar dari yang dibayangkan
- Dalam skenario input chunk besar (misalnya 50), proses menyusun ulang dan menyeleksi sebagian chunk teratas (misalnya 15) memberikan ROI paling tinggi
- Dengan reranking saja, kekurangan dari pipeline yang desainnya kurang matang pun dapat tertutupi dalam kadar yang cukup besar
-
Strategi Chunking (Chunking Strategy)
- Bagian ini menyita porsi waktu terbesar selama proses pengembangan
- Diperlukan pemahaman yang akurat terhadap struktur dan pola data, lalu melakukan chunking berdasarkan unit logis serta meninjau langsung agar huruf atau kalimat tidak terpotong di tengah
- Setiap chunk harus tetap mempertahankan makna yang mandiri
-
Pemanfaatan metadata pada input LLM
- Alih-alih hanya mengirim teks chunk ke LLM, penulis menambahkan metadata (title, author, dan sebagainya) untuk sangat meningkatkan konteks dan kualitas jawaban
-
Query Routing
- Untuk tipe pertanyaan yang tidak bisa dijawab dengan RAG (misalnya ringkasan artikel atau permintaan informasi penulis), penulis memperkenalkan router ringan yang mengalihkan kueri tersebut ke jalur pemrosesan API+LLM
Stack praktik lapangan (Our stack)
- Vector database: Azure → Pinecone → Turbopuffer (lebih murah dan secara default mendukung pencarian kata kunci)
- Ekstraksi dokumen: menggunakan pendekatan kustom
- Alat chunking: pada dasarnya Unstructured.io, sedangkan pipeline enterprise menggunakan solusi kustom (Chonkie juga disebut memiliki reputasi baik)
- Model embedding: menggunakan text-embedding-large-3 (model lain belum diuji)
- Reranker: None → Cohere 3.5 → Zerank (tidak terlalu populer, tetapi sangat baik dalam praktik)
- LLM: GPT 4.1 → GPT 5 → GPT 4.1 (terutama menggunakan kredit Azure)
Open source dan kesimpulan
- Semua hasil pembelajaran dan pengalaman praktik dirangkum dalam proyek open source agentset-ai/agentset
- Dirilis dengan lisensi MIT, sehingga dapat digunakan secara bebas dan terbuka untuk pertanyaan lebih lanjut (kontak disediakan)
1 komentar
Komentar Hacker News
text-embedding-large-3.