24 poin oleh GN⁺ 2024-04-18 | 1 komentar | Bagikan ke WhatsApp

Panduan penggunaan embedding untuk pengembang aplikasi

  • Embedding vektor cocok untuk fitur pencarian dan rekomendasi karena efektif dalam mengukur kemiripan pada berbagai jenis input. Ini juga bekerja dengan baik untuk bahasa lain seperti Prancis atau Jepang.
  • Pgvector adalah ekstensi Postgres untuk menyimpan dan melakukan kueri embedding, sehingga kuat karena dapat menggabungkan logika SQL dan operasi embedding tanpa menambahkan layanan baru.
  • Berbeda dengan LLM, penggunaan embedding terasa mirip dengan kode deterministik pada umumnya.

Mengembangkan proyek pencarian dan rekomendasi ikon

  • Setelah menyiapkan Pgvector, dibuat strategi untuk mengodekan data ikon menjadi vektor embedding.
  • Menggunakan model text-embedding-3-small dari OpenAI.
  • Mengukur kemiripan antara kata kunci pencarian dan embedding setiap ikon dengan cosine similarity.
  • Menggabungkan logika bisnis seperti pemfilteran set ikon ke dalam pencarian embedding.
  • Menunjukkan contoh algoritma peringkat yang memanfaatkan data klik ikon untuk kata kunci pencarian.
  • Memanfaatkan perbandingan embedding untuk merekomendasikan ikon yang mirip dengan ikon yang dipilih.

Ringkasan pendekatan implementasi

  • Memilih pgvector/Postgres sebagai DB vektor. Ada juga opsi lain seperti MongoDB.
  • Dikembangkan dengan Typescript dan menggunakan drizzle-orm. Tersedia juga banyak pustaka untuk bahasa/framework lain.
  • Aplikasi di-host di Neon. Bisa juga memanfaatkan layanan hosting DB terkelola seperti fly.io atau Supabase.
  • Menggunakan model embedding text-embedding-3-small dari OpenAI. Model lain juga bisa dipilih dari leaderboard Huggingface.
  • Meng-embedding atribut ikon yang paling relevan untuk pencarian sebagai pasangan key-value.
  • Menggunakan cosine similarity sebagai fungsi jarak. Pgvector juga mendukung l2 distance dan inner product.
  • Hasil pencarian dibatasi pada 50 teratas. Saat menggunakan rentang jarak, disarankan memakai rentang yang lebar dan menggabungkannya dengan limit.

Opini GN⁺

  • Untuk sebagian besar proyek, pendekatan menambahkan kemampuan vektor ke DB yang sudah ada seperti pgvector kemungkinan sudah cukup. Penerapan DB vektor terpisah tampaknya hanya diperlukan untuk layanan berskala besar.
  • Keunggulan besarnya adalah logika bisnis dapat digabungkan secara alami dengan pencarian embedding. Kekuatan SQL bisa dimanfaatkan sepenuhnya.
  • Ide memasukkan data umpan balik pengguna ke dalam algoritma peringkat sangat bagus. Ini tampaknya bisa terus meningkatkan akurasi pencarian.
  • Dibandingkan LLM, layanan berbasis embedding memiliki perilaku yang lebih jelas dan lebih mudah di-debug, sehingga tampaknya jauh lebih mudah diterapkan ke layanan nyata.
  • Berbagai model embedding open source telah tersedia, sehingga embedding berkualitas tinggi bisa dimanfaatkan dengan mudah bahkan ketika sulit mengembangkan model sendiri.

1 komentar

 
GN⁺ 2024-04-18
Komentar Hacker News

Ringkasan komentar Hacker News

Kemudahan embedding dokumen dan pencarian kemiripan dengan memanfaatkan model RAG

  • Dengan library sentence-transformers dan faiss, embedding dokumen dan pencarian kemiripan bisa diimplementasikan dengan mudah
  • Akan menjadi proyek yang menarik jika bisa menunjukkan performa yang lebih baik daripada sistem rekomendasi New York Times
  • Konten terkait dijelaskan dengan baik di kanal YouTube James Briggs

Memahami konsep dasar embedding

  • Bahkan tanpa AI/deep learning, embedding bisa dibuat dengan memberi indeks unik pada kata dan mengakumulasikan nilai berdasarkan frekuensinya
  • Pencarian kemiripan juga dimungkinkan dengan memanfaatkan cosine similarity dan sejenisnya
  • Embedding berbasis deep learning pada dasarnya menambahkan fitur seperti pemfilteran kata/token, penanganan sinonim, dan lain-lain di atas konsep dasar ini

Kurangnya penjelasan rinci tentang proses pembuatan embedding

Sulitnya menangani homonim

  • Karena adanya homonim, hasil pencarian kadang bisa muncul tidak sesuai maksud (misalnya saat mencari "king", malah muncul ikon ruler)
  • Di sisi lain, kemampuan menemukan ikon terkait juga bisa menjadi tantangan yang menarik

Embedding tetap bisa dimanfaatkan tanpa vector store

  • Di lingkungan produksi dengan data besar, vector store penting karena alasan seperti latensi, tetapi untuk proyek main-main, hal ini bisa diimplementasikan secara sederhana dengan Numpy dan sejenisnya
  • Kemiripan bisa dihitung dengan mencari hasil dot product antara vektor kueri yang sudah dinormalisasi dan matriks record menggunakan operator @ di Numpy

Cara menjalankan logika embedding di lingkungan lokal

  • Muncul pertanyaan tentang cara membuat embedding langsung di lingkungan lokal atau di database tanpa bergantung pada OpenAI API

Potensi penggunaan embedding saat menulis dokumentasi teknis

  • Sejak kemunculan ChatGPT, di kalangan penulis dokumentasi teknis ramai dibahas kemungkinan memanfaatkannya sebagai alat semantic search
  • Hal ini dapat membantu meningkatkan efisiensi pada tahap riset yang diperlukan untuk penulisan dokumentasi

Cara menyimpan dan memanfaatkan embedding

  • Umumnya embedding dibuat lalu disimpan, kemudian dimuat kembali saat dibutuhkan
  • Untuk kasus sederhana, embedding juga bisa langsung diteruskan sebagai array dan digunakan
  • Penyimpanan embedding memang bagian yang sulit, tetapi tidak membutuhkan database khusus; SQLite BLOB pun bisa digunakan
  • Tidak ada kasus embedding menjadi 'kedaluwarsa'

Kurangnya penjelasan pengetahuan latar belakang bagi developer pemula di AI

  • Artikel langsung masuk ke cara penggunaan embedding dan vector database tanpa lebih dulu menjelaskan konsepnya
  • Bagi orang yang mencari titik awal yang baik untuk developer aplikasi yang tertarik pada AI, tampaknya pengenalan atas konsep-konsep terkait memang dibutuhkan