Weaviate: Database Vektor dengan AI Modules Terintegrasi
Weaviate adalah database vektor open-source yang dirancang untuk menyimpan objek data beserta vektor embeddingnya. Yang membuat Weaviate unik adalah kemampuannya mengintegrasikan AI modules langsung ke dalam database, memungkinkan auto-vectorization, pencarian semantik, dan bahkan generative AI tanpa infrastruktur tambahan.
Dalam tutorial ini, kita akan mempelajari cara menggunakan Weaviate mulai dari instalasi, definisi schema, pencarian vektor dan hybrid, hingga membangun mesin pencari produk semantik dengan auto-vectorization dan jawaban generatif.
Mengapa Weaviate?
Weaviate menawarkan beberapa keunggulan dibanding database vektor lainnya:
- AI Modules Terintegrasi: Vectorizer dan generative modules langsung di dalam database
- Auto-Vectorization: Data otomatis di-vektorisasi saat dimasukkan tanpa preprocessing manual
- Hybrid Search: Kombinasi pencarian vektor (semantic) dan keyword (BM25)
- GraphQL API: Interface query yang fleksibel dan powerful
- Multi-Tenancy: Isolasi data untuk aplikasi multi-tenant
- Skalabilitas: Mendukung horizontal scaling untuk dataset besar
- Ekosistem Integrasi: Kompatibel dengan LangChain, LlamaIndex, dan framework AI lainnya
Instalasi
Menggunakan Docker (Rekomendasi untuk Development)
Buat file docker-compose.yml:
version: '3.4'
services:
weaviate:
image: cr.weaviate.io/semitechnologies/weaviate:1.25.0
restart: on-failure:0
ports:
- "8080:8080"
- "50051:50051"
environment:
QUERYDEFAULTSLIMIT: 25
AUTHENTICATIONANONYMOUSACCESSENABLED: 'true'
PERSISTENCEDATAPATH: '/var/lib/weaviate'
DEFAULTVECTORIZERMODULE: 'text2vec-openai'
ENABLEMODULES: 'text2vec-openai,generative-openai'
OPENAIAPIKEY: 'sk-your-openai-api-key'
CLUSTERHOSTNAME: 'node1'
volumes:
- weaviatedata:/var/lib/weaviate
volumes:
weaviatedata:
Jalankan Weaviate:
docker-compose up -d
Menggunakan Weaviate Cloud (WCD)
Untuk deployment produksi, Anda bisa menggunakan Weaviate Cloud:
Instalasi Python Client
pip install weaviate-client
Koneksi ke Weaviate
import weaviate
from weaviate.classes.init import Auth
Koneksi ke instance lokal (Docker)
client = weaviate.connecttolocal()
Koneksi ke Weaviate Cloud
client = weaviate.connecttoweaviatecloud(
clusterurl="https://your-cluster.weaviate.network",
authcredentials=Auth.apikey("your-wcd-api-key"),
headers={
"X-OpenAI-Api-Key": "sk-your-openai-api-key"
}
)
Verifikasi koneksi
print(client.isready()) # True jika berhasil
Schema Definition
Schema di Weaviate mendefinisikan struktur data, termasuk properti dan konfigurasi vectorizer.
Membuat Collection (Class)
import weaviate
import weaviate.classes.config as wc
client = weaviate.connecttolocal()
Membuat collection sederhana
client.collections.create(
name="Article",
description="Koleksi artikel blog",
vectorizerconfig=wc.Configure.Vectorizer.text2vecopenai(
model="text-embedding-3-small",
),
generativeconfig=wc.Configure.Generative.openai(
model="gpt-4",
),
properties=[
wc.Property(
name="title",
datatype=wc.DataType.TEXT,
description="Judul artikel",
),
wc.Property(
name="content",
datatype=wc.DataType.TEXT,
description="Isi artikel",
),
wc.Property(
name="author",
datatype=wc.DataType.TEXT,
description="Nama penulis",