AGENTIKA
  • Blog
  • Learn
  • FAQ
Menu
Blog→Learn→FAQ→
AGENTIKA

Platform AI untuk UMKM Indonesia. Tools AI, tutorial otomatisasi, dan strategi side hustle.

Platform

  • Blog
  • Learn
  • FAQ

Community

  • Twitter / X
  • GitHub

© 2026 AGENTIKA. All rights reserved.

HomeBlogLearnFAQ

Ai Basics

  • Pengantar AI Modern
  • Prompt Engineering Fundamentals
  • LLM API Primer
  • Machine Learning Overview
  • AI Tools untuk Produktivitas
  • AI Agents dan Autonomous Systems
  • Data & Pipeline ML
  • RAG & Vector Search
  • Evaluasi Model AI
  • Etika & Responsible AI
  • Dasar API LLM: Menghubungkan Aplikasi dengan AI
  • Prompt Design Patterns untuk Aplikasi
  • Streaming Response dari LLM
  • Error Handling untuk LLM Applications
  • Optimasi Biaya LLM API
  • Multi-Provider LLM Architecture
  • Kapan Harus Fine-tuning Model AI?
  • Menyiapkan Dataset untuk Fine-tuning
  • Proses Training Fine-tuning LLM
  • Evaluasi Model Fine-tuned
  • Deploy Model Fine-tuned ke Produksi
  • Arsitektur RAG: Retrieval-Augmented Generation
  • Embeddings untuk RAG
  • Vector Database untuk RAG
  • Retrieval Strategies untuk RAG
  • RAG di Produksi: Monitoring dan Optimasi
  • Arsitektur AI Agent
  • Tool Use untuk AI Agent
  • Memory Systems untuk AI Agent
  • Multi-Agent Systems
  • Evaluasi AI Agent
  • Safety untuk AI Agent
Learn / Ai Basics / Lessons / Vector Database untuk RAG

Vector Database untuk RAG

Vector database menyimpan dan mencari embedding vectors secara efisien. Ini adalah komponen kunci dari sistem RAG.

Mengapa Vector DB?

Database biasa (PostgreSQL, MongoDB) tidak optimal untuk similarity search pada vector berdimensi tinggi. Vector DB menggunakan index khusus (HNSW, IVF) untuk pencarian cepat.

Pilihan Vector DB

Managed (Hosted)

  • Pinecone — Paling populer, serverless, mudah setup
  • Weaviate Cloud — Open-source, bisa self-host
  • Qdrant Cloud — Rust-based, cepat
  • Zilliz — Managed Milvus, enterprise-grade

Self-hosted / Embedded

  • pgvector — Extension PostgreSQL, zero infra tambahan
  • ChromaDB — Embedded, cocok untuk prototyping
  • FAISS — Facebook AI, cepat tapi butuh Python
  • SQLite-VSS — SQLite extension, lightweight

pgvector (Recommended untuk Mulai)

Karena web3ai-hub sudah pakai PostgreSQL, pgvector paling mudah:

-- Install extension
CREATE EXTENSION IF NOT EXISTS vector;

-- Tambah kolom embedding
ALTER TABLE "Article" ADD COLUMN embedding vector(156);

-- Buat index untuk fast search
CREATE INDEX ON "Article" USING hnsw (embedding vector_cosine_ops);

-- Similarity search
SELECT title, content,
       1 - (embedding <=> $1::vector) as similarity
FROM "Article"
ORDER BY embedding <=> $1::vector
LIMIT 5;

dengan Prisma + pgvector

import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

// Store embedding
await prisma.$executeRaw`
  UPDATE "Article" 
  SET embedding = ${vector}::vector 
  WHERE id = ${articleId}
`;

// Search
const results = await prisma.$queryRaw`
  SELECT id, title, content,
         1 - (embedding <=> ${queryVector}::vector) as similarity
  FROM "Article"
  WHERE embedding IS NOT NULL
  ORDER BY embedding <=> ${queryVector}::vector
  LIMIT 5
`;

Pinecone (Scalable Production)

import { Pinecone } from "@pinecone-database/pinecone";

const pinecone = new Pinecone();
const index = pinecone.index("web3ai-hub");

// Upsert vectors
await index.upsert([
  {
    id: "article-123",
    values: embeddingVector,
    metadata: { title: "Apa itu DeFi?", category: "web3" },
  },
]);

// Query
const results = await index.query({
  vector: queryEmbedding,
  topK: 5,
  includeMetadata: true,
});

Indexing Strategy

HNSW (Hierarchical Navigable Small World)

  • Kecepatan: Cepat untuk query
  • Memory: Tinggi (index di RAM)
  • Best for: Dataset sampai ~10M vectors

IVF (Inverted File Index)

  • Kecepatan: Sedang
  • Memory: Lebih rendah
  • Best for: Dataset sangat besar (100M+)

Hybrid Search

Gabungkan vector search dengan keyword search:

async function hybridSearch(query: string, keywords: string[]) {
  // Vector search (semantic)
  const vectorResults = await vectorSearch(query, 20);

  // Keyword search (exact match)
  const keywordResults = await keywordSearch(keywords, 20);

  // Reciprocal Rank Fusion
  const combined = reciprocalRankFusion([vectorResults, keywordResults]);
  return combined.slice(0, 5);
}

function reciprocalRankFusion(resultSets: Result[][], k = 60) {
  const scores: Map<string, number> = new Map();

  for (const results of resultSets) {
    results.forEach((result, rank) => {
      const current = scores.get(result.id) ?? 0;
      scores.set(result.id, current + 1 / (k + rank + 1));
    });
  }

  return Array.from(scores.entries())
    .sort((a, b) => b[1] - a[1])
    .map(([id, score]) => ({ id, score }));
}

Latihan

Setup pgvector di PostgreSQL lokal, buat tabel dengan kolom vector, dan lakukan similarity search untuk 10 dokumen.

← Previous Lesson

Embeddings untuk RAG

Next Lesson →

Retrieval Strategies untuk RAG

Eksplorasi Modul Lain

Belajar Terstruktur

Ikuti kurikulum AI step-by-step di modul Learn.

AI Tools Directory

Bandingkan tools AI untuk kebutuhan konten dan produktivitas.