𝗕𝘂𝗮𝘁 𝗖𝗵𝗮𝘁𝗯𝗼𝘁 𝗥𝗔𝗚 𝗟𝗼𝗸𝗮𝗹 𝗱𝗮𝗹𝗮𝗺 𝟯𝟬 𝗠𝗲𝗻𝗶𝘁
Saya mengunggah spesifikasi API sebanyak 40 halaman ke chatbot lokal saya. Saya bertanya tentang rate limit untuk endpoint tertentu.
Bot tersebut menjawab dalam tiga detik. Ia mengutip bagian dokumen yang tepat.
Bagian terbaiknya? Biayanya $0. Semuanya berjalan di laptop saya menggunakan .NET 8, Ollama, dan React. Tidak ada data yang keluar dari perangkat saya.
Kebanyakan tutorial menyarankan Anda untuk menggunakan OpenAI. Itu berhasil untuk demo, tetapi gagal untuk pekerjaan nyata karena:
- Privasi: Anda tidak ingin data sensitif perusahaan berada dalam alur pelatihan cloud.
- Biaya: Mengirim file besar ke LLM akan memakan biaya yang cepat membengkak.
- Halusinasi: Model sering kali melupakan bagian tengah dari dokumen yang panjang.
Solusinya adalah RAG (Retrieval-Augmented Generation). Alih-alih mengirim seluruh PDF, Anda hanya mengirim potongan (chunks) yang relevan.
Berikut adalah cara saya membangun pipeline ini:
• Text Extraction: Saya menggunakan PdfPig untuk mengekstrak teks dari PDF. • Chunking: Saya membagi teks menjadi potongan 500 kata dengan tumpang tindih (overlap) 50 kata. Tumpang tindih ini memastikan model tidak melewatkan jawaban yang terbagi di antara dua potongan. • Embeddings: Saya menggunakan model nomic-embed-text melalui Ollama untuk mengubah teks menjadi vektor. • Vector Store: Saya membangun daftar in-memory sederhana menggunakan cosine similarity untuk menemukan kecocokan terbaik. • Generation: Saya menggunakan llama3.2 untuk menjawab pertanyaan hanya berdasarkan potongan yang ditemukan.
Tiga pelajaran yang saya pelajari selama proses pembuatan:
- Gunakan timeout yang lama: Model lokal membutuhkan waktu untuk dimuat ke dalam memori. Saya mengatur timeout HttpClient saya menjadi 5 menit untuk menghindari kesalahan selama cold start.
- Prompt engineering adalah kunci: Saya memerintahkan model untuk menjawab HANYA menggunakan konteks yang disediakan. Ini mengurangi halusinasi sebesar 80%.
- Chunking itu penting: Saya melakukan chunking berdasarkan kata, bukan karakter. Ini menjaga ukuran tetap dapat diprediksi dan tetap dalam batas model.
Anda dapat menjalankan seluruh stack ini secara lokal. Ini adalah alat kelas profesional dengan anggaran nol dolar.
Lihat log pembuatan dan kode lengkapnya di sini:
Optional learning community: https://t.me/GyaanSetuAi
