- Embedding menawarkan potensi kemajuan yang revolusioner di bidang penulisan teknis belakangan ini
- Embedding memiliki karakteristik mengembalikan array numerik berdimensi tetap terlepas dari ukuran teks masukan
- Melalui array numerik ini, perbandingan matematis antar teks arbitrer menjadi mungkin
- Embedding menghitung jarak berdasarkan makna teks dalam ruang multidimensi, dan dapat dimanfaatkan untuk berbagai hal seperti rekomendasi keterkaitan, analisis semantik, dan lainnya
- Ke depan, dengan situs dokumentasi teknis membuka data embedding mereka, alat baru dan contoh pemanfaatan komunitas diperkirakan akan meluas
Gambaran umum teknologi embedding berbasis machine learning
- Dalam teknologi machine learning, tidak seperti model pembangkitan teks, embedding memiliki potensi untuk memberi dampak revolusioner pada penulisan teknis
- Dalam beberapa tahun terakhir, penggunaan embedding telah menjadi jauh lebih mudah diakses
- Melalui embedding, penulis teknis dapat melakukan perbandingan dan analisis semantik di antara beragam teks
Membangun intuisi tentang embedding
- Embedding menerima teks sebagai masukan (kata, kalimat, beberapa dokumen, dan sebagainya) lalu mengembalikan array numerik berukuran tetap
- Terlepas dari panjang teks masukan, selalu dihasilkan data array dengan ukuran yang sama
- Karena itu, muncul kemungkinan perbandingan matematis bahkan untuk teks arbitrer dengan panjang yang berbeda-beda
Cara membuat embedding
- Embedding dapat dibuat hanya dengan beberapa baris kode melalui penyedia layanan utama
- Ukuran array embedding berbeda tergantung model yang digunakan; dalam kasus Gemini dikembalikan 768 angka, sedangkan Voyage AI mengembalikan 1024 angka
- Karena makna embedding sepenuhnya berbeda menurut penyedia atau model, maka tidak ada kompatibilitas antarmodel
Biaya dan dampak lingkungan
- Pembuatan embedding sendiri tidak terlalu mahal
- Proses pembuatannya diperkirakan mengonsumsi sumber daya komputasi lebih rendah dibanding model pembangkitan teks, tetapi dampak lingkungannya masih memerlukan lebih banyak informasi ke depannya
Kriteria memilih model embedding
- Model yang paling sesuai bergantung pada kemampuan mendukung data masukan berukuran besar
- voyage-3 dari Voyage AI menyediakan batas input tertinggi per 2024
- Penting memilih model yang sesuai dengan tujuan penggunaan dan kebutuhan
Konsep ruang multidimensi
- Setiap nilai dalam array numerik embedding sesuai dengan satu koordinat dalam ruang multidimensi, dan karakteristik teks direpresentasikan sebagai posisi semantik dalam ruang tersebut
- Sebagai contoh, operasi seperti ‘king’ - ‘man’ + ‘woman’ ≈ ‘queen’ menunjukkan kemungkinan merepresentasikan hubungan semantik
- Karakteristik setiap dimensi dalam ruang embedding sebagian besar tidak jelas dan abstrak
- Melalui proses ini, pembelajaran makna oleh mesin dan penalaran makna teks menjadi mungkin
Membandingkan dan menyimpan embedding
- Embedding yang telah dibuat disimpan untuk setiap teks (misalnya halaman) di database dan sebagainya
- Dengan perhitungan jarak matematis antara dua embedding (menggunakan aljabar linear), dimungkinkan menilai kemiripan semantik
- Dengan memanfaatkan pustaka seperti NumPy dan scikit-learn, beban menerapkan rumus yang rumit menjadi kecil
Contoh penerapan embedding
- Di situs dokumentasi teknis, embedding dimanfaatkan secara efektif untuk fitur rekomendasi halaman terkait
- Setelah membuat embedding untuk setiap halaman, dimungkinkan merekomendasikan dokumen yang saling terkait secara semantik di antara halaman-halaman dengan kemiripan numerik tinggi
- Setiap kali isi halaman diubah, cukup memperbarui embedding-nya saja sehingga sangat efisien
- Hasil penerapan pada dokumentasi [Sphinx] yang sebenarnya menunjukkan kinerja yang positif
Komunitas dan potensi data terbuka
- Ke depannya, situs dokumentasi dapat menyediakan data embedding melalui REST API atau well-known URI
- Melalui hal ini, komunitas dapat mengembangkan beragam alat dan layanan terapan
Penutup
- Menarik untuk menghubungkan konsep ruang berdimensi ratusan dengan pekerjaan sehari-hari
- Dengan adopsi embedding, dapat diharapkan potensi kemajuan besar dalam pemeliharaan dokumentasi dan perluasan fitur
1 komentar
Komentar Hacker News
Halo, saya ingin menyampaikan terima kasih karena telah menulis artikel ini
Saya ingin memberi tahu bahwa ada diskusi serupa juga 6 bulan lalu
Ungkapan "embedding diremehkan" dimaksudkan untuk menekankan bahwa ini adalah alat yang berguna bagi penulis teknis, bukan hanya bagi praktisi machine learning
Saya menyadari bahwa artikel ini kurang menjelaskan secara rinci bagaimana tepatnya embedding digunakan dalam penulisan teknis
Saya sedang menyiapkan proyek dan posting blog tentang penggunaan embedding
Embedding penting karena dapat membantu menyelesaikan tiga masalah yang sulit dipecahkan dalam penulisan teknis
Untuk memungkinkan orang mengalami secara langsung masalah sulitnya menemukan informasi yang diinginkan, saya mencoba menerapkan UX layer berupa "semantic scrolling"
Alih-alih seperti pencarian, pengguna bisa menjelajahi cluster dalam struktur pohon <details>/<summary>
[1] adalah titik awal, dan [2] adalah seluruh koleksi (buku, film, musik, anime, dll.)
Saya juga membagikan tautannya
Akan lebih baik jika isi tulisan disusun agar lebih menarik bagi penulis teknis daripada pakar machine learning
Misalnya, bagian seperti "Anda bisa menemukan keterhubungan antar teks pada skala yang sebelumnya mustahil" sebaiknya dijelaskan lebih rinci
Jika contoh penerapan ditempatkan lebih awal, pesannya akan tersampaikan lebih efektif kepada pembaca
Sebagai contoh penerapan langsung embedding dalam penulisan teknis, saya merekomendasikan sebuah paper terkait
Saya menyertakan tautannya
Setelah membaca ini, saya penasaran seperti apa kualitas hasilnya
Walaupun tidak sampai ke evaluasi (evals) yang disukai di dunia machine learning, saya ingin tahu apakah secara kasar hasilnya terasa masuk akal
Saya sudah membaca artikelnya, tetapi tidak menemukan penjelasan tentang apa itu "embedding"
Paragraf ketiga memang menjelaskan cara penggunaannya, tetapi definisi embedding sendiri masih kurang di bagian awal
Bagi pemula, tulisan ini terasa terlalu mendasar
Setelah membacanya, saya tidak mendapatkan informasi atau wawasan baru
Kalau setidaknya ada contoh inti penggunaan embedding sebagai gambaran singkat, saya rasa saya akan lebih menantikan tulisan berikutnya
Terima kasih sudah membagikannya
Keunggulan lain embedding dan pencarian embedding adalah implementasinya bisa dibuat cukup ringan di sisi klien
Model ONNX dapat dimuat dan dijalankan dengan transformer.js
Anda juga bisa membuat indeks seperti hnsw dan meng-host-nya secara statis
Saya sendiri juga membuat demo open source
Indeksnya dapat direpresentasikan sebagai file parquet yang bisa di-query dan lalu ditanyakan dengan duckdb
Dengan Github Pages, ini bisa dilakukan gratis atau hampir gratis
Fakta bahwa embedding bisa dijalankan di sisi klien dengan JS adalah penemuan baru bagi saya
Saya antusias karena sepertinya ini membuka aplikasi baru untuk situs dokumentasi
Saya mulai memperhatikan Parquet dan Polars karena artikel yang pernah saya baca sebelumnya
Saya memang punya rasa penasaran soal implementasi seperti ini
Saya selama ini ragu mengadopsinya karena khawatir dengan latensi pencarian berbasis embedding
Jika modelnya ditempatkan dan dirender secara lokal, saya penasaran bagaimana kualitasnya dibandingkan OpenAI/Google
Gratis/instan jelas merupakan kelebihan
Akan bagus jika ada penjelasan rinci tentang apa yang terjadi di demo itu
Saya tidak terlalu memahami hasilnya
Bagian yang mengatakan "embedding selalu mengembalikan array angka dengan ukuran yang sama terlepas dari ukuran teks input, sehingga teks apa pun bisa dibandingkan secara matematis satu sama lain" sebaiknya dijelaskan dengan lebih jelas
Fungsi hash juga menghasilkan keluaran dengan ukuran yang sama terlepas dari ukuran input, tetapi perbandingan matematis di sana sama sekali berbeda dengan perbandingan pada embedding
Perlu ditekankan bahwa kualitas embedding ditentukan oleh proses pelatihannya
Tidak ada "embedding umum" yang memungkinkan perbandingan bermakna untuk teks sembarang
Saya juga membagikan tautannya
Embedding memang merepresentasikan input besar secara terkompresi seperti hash, tetapi berbeda dari hash, embedding memiliki makna intrinsik
Kalau begitu, saya penasaran apakah ada riset tentang "cracking" yang menghasilkan teks dengan makna serupa secara terbalik dari embedding
Saya juga membayangkan pada output LLM, penilaian token berikutnya mungkin bisa memasukkan kemiripan dengan embedding atau perubahan arah vektornya
Seperti operasi antar vektor embedding yang disebut penulis, saya membayangkan apakah "aljabar makna" juga dapat diterapkan pada teks berskala besar seperti seluruh paragraf atau buku
Saya juga penasaran apakah mungkin memvektorkan konsep inti seperti "afinitas" lalu menambahkannya ke teks yang sudah ada
"Menghasilkan teks dengan makna serupa secara terbalik dari embedding" disebut embedding inversion atau Universal Zero-shot Embedding Inversion
Ada paper terkait, dan diffusion yang memanfaatkan embedding CLIP pada gambar juga berhubungan
Secara kasar, embedding memiliki peran yang mirip dengan fuzzy hashes
Saya bukan pakar di bidang ini, tetapi ada juga riset yang disebut inference-time intervention yang mungkin relevan
Saya menyertakan tautan papernya
Pernyataan "embedding dapat menghasilkan kemajuan kelas atas dalam penulisan teknis" tidak cukup konkret, jadi sebagai pembaca itu tidak terlalu membantu
Saat membaca atau menulis dokumentasi teknis, saya pada umumnya tidak pernah merasa membutuhkan widget "halaman serupa"
Tesisnya ada di paragraf kedua
Embedding memungkinkan penulis teknis menemukan hubungan antar teks dengan cara yang sebelumnya mustahil ditemukan
Saya mengakui bahwa posting ini belum benar-benar menunjukkan tesis itu lewat contoh
Saya rasa embedding dapat menyelesaikan berbagai masalah sulit dalam penulisan teknis, dan saya akan membahas contoh yang lebih langsung nanti
Terlepas dari dokumen terkait, dokumentasi teknis sangat terbantu oleh pencarian yang hebat
Embedding sangat berguna untuk "fuzzy matching" dan dapat menemukan fungsi yang benar-benar diinginkan pengguna bahkan ketika mereka tidak ingat kata yang tepat
Pendekatan hybrid yang menggabungkan pencarian kata kunci dan pencarian kemiripan vektor cukup efisien
Saya ingin menemukan lebih banyak contoh penerapan yang konkret
Analogi peta 2 dimensi adalah titik awal yang baik untuk membantu pemahaman, tetapi embedding bekerja dalam ratusan hingga ribuan dimensi
Tidak jelas pula makna tiap dimensi, dan contoh 'king - man + woman = queen' bukan karena ada "dimensi yang memiliki konsep gender", melainkan karena ada "arah tertentu"
Dalam ruang n-dimensi, ada sangat banyak arah yang hampir ortogonal secara eksponensial
Itulah alasan miliaran konsep bisa dimuat dalam ruang 1000 dimensi
Dalam paper arXiv yang sebenarnya, jika Anda memasukkan 1000 kata laki-laki ke embedding, tidak akan terjadi bahwa 950 kata perempuan ditemukan secara akurat
Sekitar 20 memang akan tampak berkumpul secara kasatmata, tetapi karena dimensinya banyak, jika diproyeksikan apa pun bisa tampak "benar"
Ketika N membesar, hasilnya cenderung menjadi tidak jelas
Embedding berbasis transformer jauh lebih unggul daripada word vector lama karena mempertimbangkan konteks
Bahkan dalam pencarian teks penuh, embedding yang sadar konteks efektif menyelesaikan masalah di bidang information retrieval yang selama 50 tahun terakhir terus dicoba dipecahkan, seperti penanganan sinonim
Terima kasih atas kritik yang rinci; saya mengakui bahwa menjelaskan seolah satu dimensi dipetakan satu lawan satu dengan satu konsep adalah kesalahan konseptual
Saya akan merevisi posting ini dengan memperhalus konsep tersebut bersama penjelasan tentang cara kerja cosine similarity
Berkat komentar ini, saya merasa kualitas pemikiran saya meningkat
Saya ingin menegaskan bahwa ungkapan yang tepat bukanlah "dimensi yang hampir ortogonal", melainkan "arah yang hampir ortogonal"
Saya penasaran tentang informasi terkait Johnson-Lindenstrauss lemma, juga soal dimensi embedding yang dipertahankan dan presisi pelestarian jaraknya
Untuk mempertahankan jarak dengan galat 10%, tampaknya dibutuhkan sekitar 18 ribu dimensi
Saya juga mengarahkan ke tautan wiki
Lebih tepat lagi, yang dimaksud bukan "dimensi yang hampir ortogonal" tetapi "arah yang hampir ortogonal"
Jika dimensi individual benar-benar cocok dengan konsep yang bermakna, misalnya ada dimensi gender, maka akan mudah mengetahui bahwa perbedaan antara "king" dan "queen" hanya ada pada satu dimensi
Jika setiap konsep memiliki dimensinya sendiri, kita bisa menelusuri konsep itu secara intuitif berdasarkan perbedaannya
Saya memperkenalkan artikel yang bagus tentang konsep vektor yang hampir ortogonal
Saya membagikan tautannya
Apakah prinsipnya adalah setiap dimensi diperlakukan seperti bilangan biner sehingga 2^n arah bisa dienkode, atau saya sedang salah paham?
Jika gender direpresentasikan dengan dua dimensi, bukankah kita jadi tidak bisa membedakan antara "gendernya berbeda" dan "setiap dimensi memiliki komponen yang berbeda"?
Walaupun tidak bisa divisualisasikan, jarak Euclidean tetap bisa dihitung
Dimensi juga bisa dikurangi dengan alat seperti UMAP
Terkait contoh king-man+woman=queen, operasi penjumlahan vektor tidak selalu bekerja sesuai harapan
Makna bisa dibatasi hanya oleh arah dan besar satu vektor, dan karena jaringan mempelajari perilaku nonlinier, maknanya bisa berubah tergantung titik awal
Ada batasan dalam menggeneralisasi dengan operasi vektor sederhana tanpa bukti eksperimental
Embedding adalah lompatan baru menuju universalitas, seperti alfabet atau angka
Saya membagikan tautannya
Pertanyaan untuk para ahli
Jika embedding memuat konten, yaitu makna itu sendiri, sebagai vektor, saya penasaran apakah ada vektor terpisah khusus untuk "gaya"
Saya merasa jika embedding juga mudah digunakan untuk riset yang menganalisis gaya penulisan lewat style, itu akan menjadi kemajuan besar
Saya sepenuhnya setuju dengan penggunaan embedding
Saat mengembangkan sesuatu bernama Recallify, saya jadi bisa dengan cepat menemukan kembali informasi langka yang pernah saya baca secara online
Bahkan hanya dengan 1024 dimensi, konten bisa dihubungkan secara efektif berdasarkan kemiripan makna, bukan kata kunci
Ini adalah alat yang revolusioner untuk mengubah konsep yang samar menjadi insight yang bisa ditindaklanjuti
Saya juga sedang merekrut beta tester untuk aplikasi iOS
Saya tidak yakin apakah artikel itu benar-benar memberikan contoh penggunaan langsung untuk penulis teknis
Embedding memang sangat penting dalam LLM, semantic search, dan sebagainya, tetapi penjelasan tentang kegunaan langsung yang diisyaratkan penulis masih kurang
Contoh penerapan langsung memang belum muncul
Saya tadinya ingin membahas berbagai penggunaan embedding lewat tulisan lanjutan dan proyek, tetapi belakangan ini tertunda karena mengurus bayi usia 3 bulan
Saya sedang menyiapkan proyek dan tulisan terkait ke depannya, dan embedding membantu menyelesaikan tiga tantangan penting dalam penulisan teknis
Penggunaan embedding yang paling praktis adalah semantic search, klasifikasi, dan clustering
Di bidang pencarian, lompatan besar biasanya terjadi sekali tiap 10 tahun
Anda bisa membuat embedding lalu memasukkannya ke algoritme ML yang sudah ada untuk klasifikasi yang efektif
Pendekatan Bag-of-Words sekarang hasilnya kurang memadai, sedangkan embedding + algoritme sederhana saja sudah cukup untuk mendapatkan cluster yang bagus
Untuk menemukan vektor terdekat pun, ini lebih merupakan soal dot product daripada linear algebra yang rumit
Akan sangat berguna untuk mencari paper dan literatur secara semantik dengan embedding
Namun embedding sendiri tidak memuat informasi sumber, jadi dalam pencarian RAG Anda pada akhirnya hanya bisa ditautkan ke halaman sumber
Masalah sitasi dan verifikasi tetap ada
Model sitasi berbasis graf seperti GraphRAG lebih maju dalam hal ini
Saya pernah membuat pengklasifikasi feed RSS dengan semantic search berbasis embedding
Klasifikasi berdasarkan kategori arbitrer juga dimungkinkan
Saat ini layanannya sudah dihentikan karena saya keluar dari AWS