LESSON 02 / 05
Chunking & Embedding
18 menit bacaRAG dari Nol
Chunking: potong yang benar
Kualitas RAG dibatasi oleh kualitas potongan dokumen. Potongan terlalu besar → noise ikut terbawa; terlalu kecil → konteks hilang.
Strategi chunking
- Fixed-size + overlap — sederhana, baseline yang layak (mis. 500 token, overlap 50).
- Struktural — potong per section/heading dokumen. Terbaik untuk markdown/HTML.
- Semantik — potong saat topik berubah (deteksi embedding similarity). Paling mahal.
function chunk(text: string, size = 500, overlap = 50): string[] {
const tokens = tokenize(text);
const chunks: string[] = [];
for (let i = 0; i < tokens.length; i += size - overlap) {
chunks.push(detokenize(tokens.slice(i, i + size)));
if (i + size >= tokens.length) break;
}
return chunks;
}
Embedding: teks jadi arah makna
Embedding memetakan teks ke vektor dimensi tinggi sehingga teks yang mirip maknanya berdekatan. Poin penting:
- Pilih model embedding satu keluarga untuk seluruh pipeline — mencampur model merusak skala jaraknya.
- Bahasa Indonesia: pastikan model embedding multibahasa (bukan yang Inggris-sentris).
- Simpan metadata (judul dokumen, heading, halaman) bersama vektor — ini yang menyelamatkanmu saat debug "kenapa potongan ini yang terambil".
Prefiks kontekstual
Menambahkan judul dokumen + heading ke awal tiap chunk ("Dokumen: SOP Keuangan > Bab 3 > ...") terbukti menaikkan akurasi retrieval secara signifikan dengan biaya nyaris nol.