Press enter to see results or esc to cancel.

Memahami dasar Vector Database

Baik, kini kita sudah masuk ke materi lebih dalam yaitu Vector. Berikut ini akan menjadi outline kita pada materi ini:

  •  Apa itu Vector?
    •  Vector dalam LLM
    •  Vector Representation
  •  Apa Itu Vector Database?
    •  Perbedaan Traditional Database dengan Vector Database
    •  Apa Peran Vector Database?
    •  Penyedia Vector Database
  •  Apa Itu Vector Search?
  •  Bagaimana Vector Search Bekerja?

Apa itu Vector?

Bayangkan sebuah rumah (data) punya alamat seperti koordinat (5, 3). Koordinat ini memberitahu lokasi rumah itu di peta (arah dan jaraknya dari titik awal). Vector bisa dibayangkan sebagai rumah yang berada pada suatu lokasi (ruang) yang dituliskan dan disimpan dalam bentuk koordinat (angka).

Vector adalah kumpulan angka yang mewakili data dalam bentuk arah dan besaran. Dalam konsep matematika dan fisika, pengertian Vector akan sedikit membingungkan karena digambarkan sebagai besaran dengan arah dan magnitudo (panjang). Kita batasi dalam konteks LLM dan AI, vector digunakan untuk menggambarkan informasi seperti kata, gambar, atau suara sehingga bisa diproses oleh komputer. Misalnya, sebuah kata seperti “kucing” bisa diubah menjadi angka-angka seperti [0.2, 0.8, 0.5] yang menunjukkan maknanya dalam ruang matematika.

Sederhananya, Vector adalah array berdimensi tunggal.

Mesin hanya memahami angka, data seperti teks dan gambar harus diubah menjadi vector. Vector adalah satu-satunya format yang dipahami oleh jaringan saraf dan arsitektur transformer.

Operasi pada vector, seperti perkalian, membantu kita menemukan apakah dua vector identik atau sama lain dalam proses pencarian kesamaan pada vector yang disimpan dalam memori atau dalam basis data vector khusus.

Vector dalam LLM

Token adalah unit dasar data yang diproses oleh LLM. Dalam konteks teks, token dapat berupa kata, bagian dari kata (subkata), atau bahkan karakter tergantung pada proses tokenisasi.

Saat teks melewati tokenizer, terjadi pengkodean input berdasarkan skema tertentu dan menghasilkan vector khusus yang dapat dipahami oleh LLM. Skema pengodean sangat bergantung pada LLM. Tokenizer dapat memutuskan untuk mengubah setiap kata dan bagian dari kata menjadi vector, yang didasarkan pada pengodean. Saat token dilewatkan melalui decoder, token tersebut dapat dengan mudah diterjemahkan kembali menjadi teks.

Vector Representation

Vector Representation

Vector Representation

Diagram ini menggambarkan bagaimana data (seperti gambar) dapat diubah menjadi representasi matematis dalam bentuk vector. Setelah data berada dalam bentuk vector, hubungan atau kemiripan antar data dapat dihitung menggunakan berbagai metrik jarak. Hal ini banyak digunakan dalam machine learning, seperti pada pencarian gambar, klasifikasi data, atau rekomendasi berbasis kemiripan.

  • Data:
    • Diagram ini menunjukkan bagaimana data berupa gambar (contohnya kucing dan anjing) diproses.
    • Data awal berupa gambar kucing dan anjing akan digunakan sebagai input untuk model embedding.
  • Embedding Model:
    • Embedding model bertugas mengonversi data (seperti gambar) menjadi representasi dalam bentuk vector.
    • Vector ini adalah angka-angka yang menyatakan fitur penting dari data tersebut, seperti karakteristik atau pola yang relevan.
  • Vector Embeddings:
    • Hasil dari embedding model adalah vektor embeddings, misalnya [5, 30, 2] atau [9, 62, 5].
    • Setiap vektor ini merepresentasikan data dalam ruang multidimensi, memungkinkan model memahami hubungan antara data (seperti kemiripan).
  • Vector Representation:
    • Vector embeddings tersebut kemudian divisualisasikan dalam ruang multi-dimensional, di mana setiap titik mewakili sebuah data (contohnya kucing atau anjing).
    • Titik-titik ini ditempatkan di ruang 3D berdasarkan fitur yang dihasilkan dari embedding.
  • Pengukuran Jarak:
    • Untuk menentukan kemiripan antara dua data, digunakan berbagai metode pengukuran jarak:
      • Cosine Distance: Mengukur sudut antara dua vektor.
      • Euclidean Distance: Mengukur jarak langsung (linear) antara dua titik dalam ruang.
      • Manhattan Distance: Mengukur jarak dalam lintasan berbentuk grid (seperti kota Manhattan).
      • Dot Product: Menghitung kesamaan berdasarkan produk dari vektor.

Apa Itu Vector Database?

image.png

Vector Database adalah jenis database khusus yang dirancang untuk menyimpan dan mengelola vector—kumpulan angka yang mewakili data seperti teks, gambar, atau suara yang mensupport pencarian kesamaan dan pengambilan data cepat karena berbasis vector.

Source Unsplash Tanja Tepavac

Source Unsplash Tanja Tepavac

Bayangkan kita punya sekotak besar pencil warna-warni, dan setiap pencil punya warna unik. Nah, basis data vektor itu seperti mesin pintar yang bisa membantu kita menemukan pencil dengan warna mirip dalam sekejap. Kalau kita mau cari pencil yang warnanya mirip dengan pencil biru favoritmu, tinggal masukkan fotonya ke mesin. Mesin itu langsung memeriksa semua pencil di kotak dan menemukan yang warnanya paling mirip.

Perbedaan Traditional Database dengan Vector Database

Perbedaan Traditional Database & Vector Database

Perbedaan Traditional Database & Vector Database

Berikut adalah penjelasan mengenai diagram tersebut perbedaan antara Traditional Database dan Vector Database:

Aspek Traditional Database Vector Database
Tipe Data Scalar data (angka, teks, tanggal, dll.) Vector data (representasi vektor dalam ruang multi-dimensional)
Struktur Baris dan kolom (tabel relasional) Ruang multi-dimensional (multi-dimensional space)
Dioptimalkan untuk Query transaksi (transactional query) Pembelajaran mesin (machine learning)
Metode Pencarian SQL Query Similarity Search (pencarian berdasarkan kemiripan)

Penjelasan Singkat:

  1. Traditional Database:
    • Dirancang untuk data terstruktur seperti angka dan teks.
    • Menggunakan tabel dengan baris dan kolom untuk menyimpan data.
    • Sangat cocok untuk aplikasi bisnis yang memerlukan query transaksi.
    • Mengandalkan SQL sebagai metode pencarian utama.
  2. Vector Database:
    • Dibuat untuk menyimpan data dalam bentuk vektor, sering digunakan dalam machine learning atau aplikasi AI.
    • Data diorganisasikan dalam ruang multi-dimensional, memungkinkan pencarian berbasis kemiripan.
    • Sangat berguna untuk tugas seperti pencarian gambar, teks, atau audio berdasarkan fitur yang mirip.
    • Menggunakan algoritma similarity search alih-alih query tradisional.

Apa Peran Vector Database?

image.png

Diagram ini menunjukkan alur kerja sistem yang menggunakan Large Language Model (LLM) seperti GPT4All atau OpenAI, dengan integrasi Vector Database untuk mendukung pengambilan informasi dari data yang diolah sebelumnya. Berikut penjelasannya:

1. Data Gathering dan Extraction

  • Data dikumpulkan dari berbagai sumber seperti PDF, teks, URL, atau video YouTube.
  • Data ini diekstraksi untuk mendapatkan konten yang relevan, seperti teks yang bisa diolah lebih lanjut.

2. Splitting dan Embedding

  • Setelah data diekstraksi, data tersebut dibagi menjadi potongan-potongan kecil atau “chunks”.
  • Setiap potongan data diubah menjadi representasi numerik (vector) menggunakan teknik embedding, agar dapat disimpan dan dicari secara efisien.

3. Penyimpanan di Vector Database

  • Vector hasil embedding disimpan di dalam Vector Database. Basis data ini dirancang untuk mendukung pencarian berbasis kesamaan (similarity search).

4. Proses Query

  • Ketika pengguna mengajukan pertanyaan (query), pertanyaan tersebut juga diubah menjadi representasi vector menggunakan model embedding.
  • Vector Database mencari potongan-potongan data yang paling relevan dengan query berdasarkan kesamaan.

5. Penyerahan ke LLM

  • Potongan data relevan yang ditemukan oleh Vector Database dikirimkan ke LLM bersama dengan query pengguna.
  • LLM memanfaatkan potongan data ini sebagai konteks untuk menghasilkan jawaban yang lebih akurat.

6. Jawaban ke Pengguna

  • LLM menghasilkan jawaban berdasarkan kombinasi potongan data relevan dan modelnya sendiri, kemudian mengembalikannya kepada pengguna.

Penyedia Vector Database

Berikut ini beberapa penyedia yang mensupport Vector Database

Feature Chroma Pinecone Weaviate Faiss Qdrant Milvus PGVector
Open-source
Primary Use Case LLM Apps Development Managed Vector Database for ML Scalable Vector Storage and Search High-Speed Similarity Search and Clustering Vector Similarity Search High-Performance AI Search Adding Vector Search to PostgreSQL
Integration LangChain, LlamaIndex LangChain OpenAI, Cohere, HuggingFace Python/NumPy, GPU Execution OpenAPI v3, Various Language Clients TensorFlow, PyTorch, HuggingFace Built into PostgreSQL ecosystem
Scalability Scales from Python notebooks to clusters Highly scalable Seamless scaling to billions of objects Capable of handling sets larger than RAM Cloud-native with horizontal scaling Scales to billions of vectors Depends on PostgreSQL setup
Search Speed Fast similarity searches Low-latency search Milliseconds for millions of objects Fast, supports GPU Custom HNSW algorithm for rapid search Optimized for low-latency search Approximate Nearest Neighbor (ANN)
Data Privacy Supports multi-user with data isolation Fully managed service Emphasizes security and replication Primarily for research and development Advanced filtering on vector payloads Secure multi-tenant architecture Inherits PostgreSQL’s security
Programming Language Python, JavaScript Python Python, Java, Go, others C++, Python Rust C++, Python, Go PostgreSQL extension (SQL-based)

Apa Itu Vector Search?

Vector Search adalah metode pengambilan informasi yang menggunakan pembelajaran mesin untuk menemukan item serupa dalam set data besar dengan merepresentasikan data sebagai vector.

image.png

Dalam Vector Database, kata-kata (string) yang sudah ditokenisasi menjadi angka (token) yang lalu disimpan menjadi embedding vector (token yang disematkan) memiliki posisi-posisi yang unik satu sama lain, penyesuaian posisi ini tentukan oleh model yang sudah dilatih di dalam proses embedding. Sehingga saat Vector Search bekerja, ia hanya akan memetakan dimana saja vector yang berdekatan dengannya.

Bagaimana Vector Search Bekerja?

Vector Search Bekerja

Vector Search Bekerja

Cara Kerja Vector Search:

  1. Query Vector:
    • Pengguna memberikan input, dalam hal ini berupa gambar sepatu (misalnya sepatu hitam pada sisi kiri).
    • Input tersebut diubah menjadi query vector, sebuah representasi angka (contohnya: [0.5, -0.4, 0.7, 0.8, -0.9, -0.7]).
  2. Vector Database:
    • Database menyimpan koleksi vector embeddings untuk data sebelumnya, seperti sepatu merah, biru, dan boot coklat di gambar.
    • Setiap vector ini mewakili karakteristik dari masing-masing item dalam bentuk angka.
  3. Similarity Search:
    • Query vector dibandingkan dengan semua vector yang tersimpan menggunakan metrik kesamaan seperti cosine similarity atau euclidean distance.
    • Sistem menemukan item yang memiliki nilai kesamaan tertinggi (dengan representasi vector mirip query).
  4. Hasil Pencarian:
    • Sistem mengembalikan item yang paling relevan, dalam hal ini sepatu merah yang memiliki representasi vector paling mirip dengan query vector.

Referensi:

https://www.decube.io/post/vector-database-concept

https://thenewstack.io/the-building-blocks-of-llms-vectors-tokens-and-embeddings/#:~:text=In the realm of LLMs,or in specialized vector databases.&text=While the vector shown above,to represent text in vectors.

https://aws.amazon.com/id/what-is/vector-databases/

https://www.datacamp.com/blog/the-top-5-vector-databases

https://medium.com/data-and-beyond/vector-databases-a-beginners-guide-b050cbbe9ca0#:~:text=Imagine you have a big,fast querying and similarity searches.