Memilih model embedding untuk teks Indonesia
Saat membangun RuangBaca Similarity, satu keputusan yang paling lama saya pikirkan adalah: model embedding mana yang harus dipakai untuk judul skripsi berbahasa Indonesia?
Kandidat yang saya coba
1. paraphrase-multilingual-MiniLM-L12-v2
Model ringan, 118MB, mendukung 50+ bahasa termasuk Indonesia. Latency
rendah di CPU.
2. sentence-transformers/LaBSE
Language-Agnostic BERT Sentence Embeddings. Lebih akurat untuk cross-lingual
similarity, tapi ukurannya 1.8GB dan lambat di CPU.
3. indobenchmark/indobert-base-p1
Model BERT yang dilatih khusus pada corpus Indonesia. Bagus untuk
downstream NLP task, tapi tidak didesain untuk similarity scoring.
Cara saya mengevaluasi
Saya buat dataset kecil: 50 pasang judul skripsi yang saya label manual sebagai “mirip”, “agak mirip”, atau “berbeda”. Lalu saya hitung korelasi antara skor model dan label manual.
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")
pairs = [
("Analisis sentimen ulasan produk menggunakan LSTM",
"Klasifikasi opini konsumen dengan deep learning"),
# ...
]
for a, b in pairs:
emb_a = model.encode(a)
emb_b = model.encode(b)
score = util.cos_sim(emb_a, emb_b).item()
print(f"{score:.3f}")Hasil
| Model | Korelasi dengan label manual | Ukuran | Latency (CPU) |
|---|---|---|---|
| MiniLM-L12-v2 | 0.71 | 118MB | ~45ms |
| LaBSE | 0.78 | 1.8GB | ~380ms |
| IndoBERT | 0.58 | 420MB | ~210ms |
LaBSE menang di akurasi, tapi 8x lebih lambat dan membutuhkan memori yang tidak tersedia di Hugging Face Spaces free tier.
IndoBERT mengejutkan saya — dilatih pada corpus Indonesia, tapi buruk untuk similarity. Itu karena BERT base tidak dioptimasi untuk sentence-level representation. Butuh fine-tuning tambahan.
Keputusan
MiniLM-L12-v2. Untuk judul skripsi yang panjangnya 10-20 kata, akurasi 0.71 sudah cukup — margin error-nya masih jauh lebih kecil dari penilaian manual seorang penguji.
Yang lebih penting: model ini bisa berjalan di free tier, startup di bawah 5 detik, dan tidak membuat user menunggu saat query. Akurasi yang sedikit lebih rendah lebih baik dari sistem yang tidak bisa dipakai karena lambat.