Sebuah embedding adalah representasi objek, biasanya potongan teks, sebagai vektor angka pada ruang berdimensi tinggi. Topik ini menjelaskan makna geometris dari representasi tersebut, yaitu titik, arah, dan jarak, kemudian menunjukkan melalui perhitungan sederhana bahwa teks bertema serupa jatuh dekat satu sama lain. Contohnya menggunakan vektor buatan dua dimensi dengan konstanta eksplisit, sehingga setiap angkanya dapat dihitung ulang.
Vektor sebagai titik pada ruang berdimensi tinggi#
Model embedding mengubah teks menjadi daftar angka dengan panjang yang tetap. Panjang daftar itu disebut dimensi, dan nilainya dikunci oleh model yang digunakan. Model all-MiniLM-L6-v2 dari keluarga model sentence-transformers menghasilkan 384 dimensi, bge-m3 menghasilkan 1024 dimensi untuk teks multibahasa, sedangkan text-embedding-3-small dan text-embedding-3-large menghasilkan 1536 serta 3072 dimensi. Teks pendek maupun teks panjang sama-sama menghasilkan panjang tersebut, karena panjang keluaran ditentukan oleh arsitektur model, bukan oleh panjang masukannya.
Posisi pada ruang itu tidak ditetapkan secara manual, melainkan dipelajari saat pelatihan. Model yang sama menghasilkan vektor yang sama untuk teks yang sama, tetapi dua model berbeda menempatkan teks yang sama pada dua ruang yang berbeda pula. Karena itu semua vektor pada satu koleksi harus berasal dari satu model yang sama agar perbandingannya sah.
Daftar angka itu dibaca sebagai koordinat satu titik pada ruang berdimensi tinggi. Ruang dengan 384 dimensi tidak dapat dibayangkan seperti ruang tiga dimensi, tetapi seluruh alat geometrinya tetap terdefinisi. Dua titik memiliki jarak, dua vektor memiliki sudut di antara keduanya, dan satu vektor memiliki arah. Panjangnya yang tetap pula menjadikan embedding layak disimpan sebagai kolom data, karena setiap baris menempati ruang dengan ukuran yang sama. Mesin pencari memanfaatkan konsistensi itu, karena model dilatih agar teks yang bermakna serupa menempati daerah yang berdekatan, sehingga pertanyaan tentang makna dapat dijawab dengan pertanyaan geometris tentang jarak dan sudut.
Kedekatan geometris sebagai kedekatan makna#
Dua vektor dibandingkan dengan ukuran yang saling melengkapi, yaitu cosine sebagai ukuran kesamaan arah dan jarak L2 sebagai panjang garis lurus antar titik. Nilai cosine yang mendekati 1 berarti arah keduanya hampir sama, sedangkan jarak L2 yang kecil berarti titiknya hampir bertumpuk. Pada vektor ternormalisasi, keduanya menghasilkan peringkat yang sama, sehingga salah satunya sudah cukup untuk mengurutkan hasil.
Diagram berikut menempatkan tiga catatan pendek dari arsip kelas pada bidang dua dimensi, yaitu catatan tentang kalkulator, catatan statistik nilai ujian, dan catatan jadwal piket. Kedua catatan bertema perhitungan terlihat berdekatan, sedangkan catatan jadwal piket berdiri sendiri di kuadran lain.
Visual pada diagram diperkuat dengan perhitungan. Skrip berikut menggunakan vektor buatan dua dimensi, bukan keluaran model, dengan konstanta eksplisit agar polanya mudah diperiksa, lalu menghitung cosine dan jarak L2 untuk ketiga pasangan catatan.
import numpy as np
# Vektor ilustrasi dua dimensi, bukan keluaran model embedding.
# Dimensi pertama mengarah ke tema perhitungan, dimensi kedua ke tema jadwal.
vektor = {
"tips kalkulator": np.array([0.90, 0.10]),
"statistik nilai ujian": np.array([0.80, 0.20]),
"jadwal piket kelas": np.array([0.10, 0.90]),
}
nama = list(vektor)
for i in range(len(nama)):
for j in range(i + 1, len(nama)):
a, b = vektor[nama[i]], vektor[nama[j]]
cos = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
l2 = np.linalg.norm(a - b)
print(f"{nama[i]} vs {nama[j]}: cosine = {cos:.4f}, jarak L2 = {l2:.4f}")tips kalkulator vs statistik nilai ujian: cosine = 0.9910, jarak L2 = 0.1414
tips kalkulator vs jadwal piket kelas: cosine = 0.2195, jarak L2 = 1.1314
statistik nilai ujian vs jadwal piket kelas: cosine = 0.3482, jarak L2 = 0.9899Pasangan “tips kalkulator” dan “statistik nilai ujian” memperoleh cosine 0,9910 dengan jarak hanya 0,1414, sedangkan kedua pasangan yang melibatkan jadwal piket berada jauh di bawah nilai tersebut. Pada vektor buatan, kedekatan ini dirancang melalui konstantanya. Model embedding sungguhan mencapai pola yang sama secara otomatis, yaitu menempatkan teks bertema serupa pada daerah berdekatan berdasarkan pola yang dipelajari dari data pelatihan, dan perbandingan jarak itulah yang menjadi dasar pencarian kemiripan.
Dimensi bukan kolom makna#
Pada tabel basis data, setiap kolom memiliki nama dan makna yang disepakati. Dimensi vektor tidak demikian. Komponen ke-217 dari vektor 384 dimensi tidak memiliki label, tidak dipetakan ke konsep tertentu, dan tidak dapat dibaca sendirian. Pola maknanya tersimpan pada konfigurasi antar komponen, bukan pada satu komponen tertentu.
Mengubah satu kata dalam kalimat umumnya menggeser banyak komponen sekaligus meskipun gesernya kecil, sehingga tidak ada sumbu tunggal yang berarti “sentimen” atau “topik ujian”. Karakter ini disebut representasi laten, yakni pola tersembunyi yang baru bermakna jika dibaca secara keseluruhan. Konsekuensi praktisnya jelas, yaitu isi vektor tidak ditafsirkan melainkan dibandingkan, dan penafsiran hasil pencarian dilakukan terhadap metadata atau dokumen sumbernya, bukan terhadap komponen vektornya. Apabila dua teks yang semestinya mirip memperoleh skor yang jauh, gejalanya diperiksa melalui model dan data masukannya, bukan melalui pembacaan komponen vektor.
Perbedaan dengan kolom tabel relasional perlu digarisbawahi. Kolom tabel dapat dibaca, diurutkan, dan diuji satu per satu karena maknanya disepakati lebih dahulu. Komponen vektor hanya berarti ketika seluruh vektornya dibandingkan dengan vektor lain, dan itulah sebabnya pencarian vektor selalu berpangkal dari perbandingan, bukan dari pembacaan.
Ringkasan#
- Embedding memetakan teks menjadi vektor dengan panjang tetap, misalnya 384, 1024, atau 1536 dimensi, dan daftar angka itu dibaca sebagai koordinat titik.
- Kedekatan makna diwujudkan sebagai kedekatan geometris, sehingga perbandingan makna menjadi perbandingan cosine dan jarak L2.
- Dimensi vektor bersifat laten, yaitu tidak berlabel dan hanya bermakna jika dibaca secara keseluruhan.
Referensi#
- Dokumentasi Qdrant — Qdrant — Dokumentasi resmi Qdrant yang memuat konsep vektor, payload, dan pencarian kemiripan.
- Dokumentasi Milvus — Milvus — Dokumentasi resmi Milvus yang menjelaskan collection berisi field vektor dan metrik jaraknya.