Implementasi RAG Lokal · Bab 4.2

Instalasi Vector Database (Semantic Search)

9 menit baca Database Infrastructure Menengah

Bagaimana kamu mencari dokumen di komputermu selama ini? Mungkin menekan *CTRL+F* dan mengetik kata "Cuti Hamil". Masalah utamanya adalah: bagaimana jika divisi HRD menamakan peraturannya sebagai "Izin Melahirkan"? Mesin pencari tradisional (Berbasis Keyword) seketika gagal menemukan file tersebut lantaran hurufnya berbeda 100%.

Disinilah peran penting *Enjin Pengambil* dalam sistem RAG. AI tidak peduli dengan huruf yang persis sama. Ia peduli dengan makna / semantik. Dan untuk menyimpang jutaan "makna" tersebut, hadirlah bintang baru di industri data: Vector Database.

Apa Itu Ruang Vektor (Embedding)?

Teknik ini bernama **Embedding**. Sebelum kamu menyimpan dokumen perusahanmu, dokumen-dokumen itu akan dibaca oleh AI model khusus dan diterjemahkan menjadi deretan angka berjejer panjang di dalam array dimensi (Katakanlah deretan [0.124, 0.457, -0.892...]).

Angka-angka fiksi ini bukanlah sembarang nomor. Mereka mewakili titik koordinat "Makna" di ranah 3D spasial tak kasat mata (disebut Euclidean Space). Di "peta galaksi" ini, kalimat bernada **Kucing liar** akan ditempatkan sangat berdekatan kordinatnya secara fisik dengan titik letak kalimat **Harimau buas**. Sementara kalimat **Rumah mewah** akan dilempar jauh sekali dari mereka.

"Pencarian Berbasis Vektor bukan tentang mencari huruf yang mirip. Ia ibarat mencari objek terdekat di peta satelit Google Maps, dengan memanfaatkan perhitungan matematika jarak 'Cosine Similarity'." - Lead Database Architect

Sehingga, ketika *User* bertanya "Bagaimana prosedur perijinan persalinan karyawan perempuan?", pertanyaan tersebut dikonversi terlebih dahulu menjadi angka (Vektor), lalu database akan mencari sekumpulan angka lain yang "jaraknya memusat paling dekat" dengan pertanyaan itu, dan voila! Ketemulah artikel "Cuti Hamil" HRD tadi.

Software Pilihan: ChromaDB & Qdrant

Memilih manajemen *Vector Database* nyaris serupa menuntukan mau menggunakan *MySQL* atau *PostgreSQL* sedekade lalu. Beberapa jagoan populer di ekosistem open-source dan Private AI lokal adalah:

  • ChromaDB: Favorit para developer indie. Sangat ringan, terkompilasi murni dalam modul Python, dan cocok untuk prototyping proyek RAG berskala kecil hingga menengah yang langsung jalan dari folder laptop.
  • Qdrant (Atau Weaviate): Monster mutlak jika direksimu mau menyuntikkan jutaan PDF jurnal akademis. Ditulis meenggunakan bahasa pemrograman modern `Rust` untuk memeras kecepatan CPU server tanpa jeda. Bisa dikemas kokoh dalam satu klaster `Docker`.

Instalasi Kilat ChromaDB

Menyiapkan infrastruktur semantik tidak semengerikan kedengarannya. Bukalah environment terminal Python di komputermu, dan ketik perintah berikut:


# Terminal instalasi modul Python
pip install chromadb
        

Lalu cobalah menulis sedikit skrip penambahan entri *(indexing)* dokumen yang se-simpel baris di bawah:


import chromadb
chroma_client = chromadb.Client()

# Membuat / memuat koleksi basis data layaknya 'Table' di SQL
collection = chroma_client.create_collection(name="tata_tertib")

# Menyuntikkan potongan dokumen ke dalam Vektor (Secara instan embedder bekerja bersembunyi)
collection.add(
    documents=["Karyawan mendapat jatah cuti nikah 3 hari.", "Gaji turun setiap tanggal 25."],
    ids=["doc1", "doc2"]
)

# Mengeksekusi Query Semantik (Pencarian makna)
results = collection.query(
    query_texts=["Kapan gajian?"], # Kata ini TIDAK mirip dengan "Gaji turun", tapi maknanya selaras!
    n_results=1 
)

print(results)
# Output sistem akan memunculkan "Gaji turun setiap tanggal 25." !!
        

Ringkasan Bab

  • Algoritma **Vector Database** tidak mencari pencocokan huruf (*Keyword-based*), melainkan mengalkulasi kedekatan angka spasial dari konsep/makna sebuah kata (Semantic Search) melalui metode *Embedding*.
  • Ini krusial bagi AI, karena user bisa bertanya memakai ribuan ragam bahasa slang, prokem, curhatan, namun model AI tetap menemukan akar informasi murninya (*Intent retrieval*).
  • **ChromaDB** adalah database vektor terpopuler untuk _Data-scientist_ yang gemar bereksperimen, mengingat syntax library bawaannya sangat ramah pemula layaknya SQLite.

Kuis Sub-bab

8 huruf, awalan C

› Contoh database yang didesain untuk pencarian semantik vektor?