Embedding & Vector Search — AI Web

Embedding & Vector Search Embedding mengubah teks menjadi vektor (array angka) yang menangkap makna. Teks yang mirip maknanya → vektor yang berdekatan. Ini memu

Embedding & Vector Search

Embedding mengubah teks menjadi vektor (array angka) yang menangkap makna. Teks yang mirip maknanya → vektor yang berdekatan. Ini memungkinkan semantic search.

Keyword vs Semantic Search

// Keyword search: "cara masak nasi goreng"
// Match: dokumen yang mengandung kata "nasi goreng"
// Miss: dokumen tentang "resep fried rice" (padahal sama)

// Semantic search: "cara masak nasi goreng"
// Match: semua dokumen tentang memasak nasi goreng
// Termasuk "fried rice recipe" karena maknanya dekat

Membuat Embedding

const response = await openai.embeddings.create({
  model: "text-embedding-3-small",
  input: "Cara membuat REST API di Express.js",
});

const vector = response.data[0].embedding;
// [0.023, -0.041, 0.078, ...] — array of 1536 numbers

Cosine Similarity

// Ukur kemiripan dua vektor (0 = tidak mirip, 1 = identik)
function cosineSimilarity(a, b) {
  let dot = 0, normA = 0, normB = 0;
  for (let i = 0; i < a.length; i++) {
    dot += a[i] * b[i];
    normA += a[i] ** 2;
    normB += b[i] ** 2;
  }
  return dot / (Math.sqrt(normA) * Math.sqrt(normB));
}

// sim("kucing", "cat") ≈ 0.85
// sim("kucing", "database") ≈ 0.15

Workflow

  1. Index time — Embed semua dokumen, simpan vektor di vector database
  2. Query time — Embed query, cari vektor terdekat (nearest neighbor search)
  3. Return — Dokumen yang paling mirip secara semantik

Yang akan kamu pelajari