Tutorial Lengkap Pinecone: Vector Database untuk AI dan Semantic Search
Pinecone adalah managed vector database yang dirancang khusus untuk menyimpan, mengindeks, dan melakukan pencarian similarity pada data vektor berdimensi tinggi. Dalam ekosistem AI modern, Pinecone menjadi salah satu pilihan utama untuk membangun sistem Retrieval-Augmented Generation (RAG), semantic search, recommendation engine, dan berbagai aplikasi berbasis embedding.
Berbeda dengan database tradisional yang mengandalkan exact match, Pinecone memungkinkan pencarian berdasarkan kemiripan semantik. Ketika Anda mengubah teks, gambar, atau data lainnya menjadi vektor embedding, Pinecone dapat menemukan item yang paling mirip dalam hitungan milidetik, bahkan pada skala miliaran vektor.
Dalam tutorial ini, kita akan mempelajari cara menggunakan Pinecone dari instalasi hingga penggunaan lanjutan, termasuk integrasi dengan model embedding populer dan membangun pipeline RAG yang lengkap.
Mengapa Memilih Pinecone?
Sebelum masuk ke implementasi, ada beberapa alasan mengapa Pinecone menjadi pilihan populer untuk vector database:
Instalasi dan Setup
Prasyarat
Pastikan Anda memiliki Python 3.8 atau lebih baru terinstal di sistem Anda.
Instalasi Pinecone Client
pip install pinecone-client
Untuk instalasi dengan dependensi tambahan yang berguna:
pip install pinecone-client sentence-transformers openai python-dotenv
Membuat Akun dan API Key
.env# .env
PINECONEAPIKEY=your-api-key-here
Inisialisasi Client
import os
from dotenv import loaddotenv
from pinecone import Pinecone
loaddotenv()
pc = Pinecone(apikey=os.getenv("PINECONEAPIKEY"))
Verifikasi koneksi
print("Indexes yang tersedia:", pc.listindexes().names())
Konsep Dasar Pinecone
Index
Index adalah unit penyimpanan utama di Pinecone, mirip dengan "table" di database relasional. Setiap index dikonfigurasi dengan dimensi vektor tertentu dan metrik similarity.
Namespace
Namespace memungkinkan Anda mempartisi data dalam satu index. Setiap namespace bersifat independen, sehingga query pada satu namespace tidak akan mengembalikan hasil dari namespace lain.
Vektor dan Metadata
Setiap record di Pinecone terdiri dari:
- ID: Identifier unik untuk vektor
- Values: Array numerik (vektor embedding)
- Metadata: Data tambahan berupa key-value pairs yang dapat difilter
Metrik Similarity
Pinecone mendukung tiga metrik:
- Cosine: Mengukur sudut antara dua vektor (paling umum untuk teks)
- Euclidean: Mengukur jarak geometris antara dua titik
- Dot Product: Mengukur proyeksi satu vektor ke vektor lainnya
Basic Usage
Membuat Index
from pinecone import Pinecone, ServerlessSpec
pc = Pinecone(apikey=os.getenv("PINECONEAPIKEY"))
indexname = "tutorial-index"
if indexname not in pc.listindexes().names():
pc.createindex(
name=indexname,
dimension=384, # Sesuaikan dengan model embedding Anda
metric="cosine",
spec=ServerlessSpec(
cloud="aws",
region="us-east-1"
)
)