Meningkatkan kualitas Model AI secara Instan: Memanfaatkan HNSW Vector dengan Firebase Genkit untuk “Retrieval-Augmented Generation (RAG)”

Surahutomo Aziz Pradana
Firebase Indonesia
Published in
8 min readMay 26, 2024

A. Pendahuluan

Kemajuan pesat dalam AI Generatif telah mengubah cara kita berinteraksi dengan teknologi, memungkinkan sistem yang lebih cerdas dan kontekstual. Komponen penting untuk mencapai hal ini adalah Retrieval-Augmented Generation (RAG), yang memungkinkan model AI untuk mengambil konteks atau pengetahuan tertentu tanpa perlu membangun atau melatih ulang model dari awal.

Salah satu teknologi paling efisien yang memfasilitasi ini adalah indeks vektor berbasis graf Hierarchical Navigable Small World (HNSW). Artikel ini akan memandu kita melalui pengaturan dan penggunaan plugin Genkit HNSW Vector untuk meningkatkan aplikasi AI kita, memastikan AI mampu memberikan respons yang lebih akurat dalam suatu konteks.

B. Memahami AI Generatif

https://voiceoc.com

Untuk kalian yang masih belum memahami apa itu AI Generatif, silakan baca tentangnya di sini!

C. “Tuning” dalam “Generative AI”

Image by Author

Peningkatan dan penyesuaian (Tuning) adalah metode yang sangat baik untuk meningkatkan Model AI kita! Dengan ini, kita dapat menambahkan lebih banyak pengetahuan dan konteks untuk Model AI kita.

Ada berbagai cara untuk menerapkan Penyempurnaan, penting untuk mengetahui bagaimana kita dapat memanfaatkan Model AI secara maksimal agar sesuai dengan kebutuhan aplikasi kita.

Jika kamu ingin membaca lebih lanjut tentang ini dan perbedaannya, kamu bisa membaca lebih lanjut di sini ya!

Sekarang, setelah kita mengetahui tentang “Generative AI” dan “Tuning”, kita akan belajar bagaimana kita dapat menerapkan salah satu teknik yang cukup populer untuk dapat meningkatkan akurasi dari Model AI kita secara instan, teknik ini bernama Retrieval-Augmented Generation (RAG).

D. Menerapkan Retrieval-Augmented Generation (RAG)

Untuk dapat menerapkan teknik ini kita dapat menggunakan salah satu teknologi vektor yang bernama Indeks Vektor HNSW. Kombinasi ini memungkinkan AI untuk mengambil dan memanfaatkan informasi kontekstual tertentu secara efisien, menghasilkan output yang lebih akurat dan relevan secara kontekstual.

Contoh Penerapan

Pada suatu aplikasi atau situs web restoran di mana ada pelanggan menanyakan daftar harga restoran kita di Kota Surabaya, AI dapat memberikan jawaban yang tepat berdasarkan pengetahuan yang diperluas dengan informasi yang lebih spesifik tentang restoran kita, seperti alamat, daftar menu, dan harga, yang diintegrasikan ke dalam basis pengetahuan AI.

Contoh Percakapan dengan Model AI:

Anda: Apa tambahan menu baru minggu ini?
AI: Minggu ini, kami menambahkan item berikut ke menu kami:
- Nasi Goreng Kampung - Rp. 18.000
- Sate Ayam Madura - Rp. 20.000
- Es Cendol - Rp. 10.000 Dengan RAG kita bisa mencapai respons yang sangat rinci dan spesifik dari Model AI.

Sekarang, untuk menerapkan ini, kita akan menggunakan:

  • HNSW Vector
    Kita akan mengubah data yang telah ditentukan menjadi indeks vektor, yang dapat dipahami oleh Model AI, sehingga Model AI dapat memberikan respons yang lebih baik.
  • Firebase Genkit (Tamu istimewa kita!)
    Kita akan menggunakan ini untuk mendemonstrasikan Retrieval-Augmented Generation (RAG) menggunakan indeks vektor HNSW dan Model AI Gemini.

Menerapkan Indeks Vektor HNSW

Apa itu HNSW?

HNSW adalah singkatan dari Hierarchical Navigable Small World, algoritma berbasis graf yang unggul dalam pencarian kemiripan vektor. HNSW terkenal karena kinerjanya yang tinggi, menggabungkan kecepatan pencarian cepat dengan akurasi pengingatan yang luar biasa. Ini menjadikan HNSW pilihan ideal untuk aplikasi yang memerlukan pengambilan informasi yang efisien dan akurat berdasarkan embedding vektor.

Mengapa Memilih HNSW?

  • Pengaturan Sederhana: HNSW menawarkan proses pengaturan yang mudah, membuatnya dapat diakses bahkan bagi mereka yang memiliki keahlian teknis terbatas.
  • Indeks yang Dikelola Sendiri: Pengguna memiliki fleksibilitas untuk menangani dan mengelola indeks vektor di server kita sendiri.
  • Manajemen Berbasis File: HNSW memungkinkan pengelolaan indeks vektor sebagai file, memberikan kemudahan penggunaan dan portabilitas, baik disimpan sebagai blob atau disimpan di database.
  • Ringkas dan Efisien: Meskipun ukurannya kecil, HNSW memberikan kinerja cepat, menjadikannya cocok untuk berbagai aplikasi.

Pelajari lebih lanjut tentang HNSW.

Menerapkan Firebase Genkit

https://firebase.google.com/docs/genkit

Apa itu Firebase Genkit?

Firebase Genkit adalah rangkaian alat dan layanan yang kuat yang dirancang untuk meningkatkan pengembangan, penerapan, dan pengelolaan aplikasi bertenaga AI. Memanfaatkan infrastruktur backend yang kuat dari Firebase.

Genkit menyederhanakan integrasi kemampuan AI ke dalam aplikasi kita, menyediakan akses yang mudah ke model pembelajaran mesin, penyimpanan data, autentikasi, dan banyak lagi.

Fitur Utama Firebase Genkit

  • Integrasi Tanpa Hambatan: Firebase Genkit menawarkan proses integrasi yang sederhana, memungkinkan pengembang dengan cepat menambahkan fungsionalitas AI ke aplikasi mereka tanpa konfigurasi ulang yang ekstensif.
  • Infrastruktur Skalabel: Dibangun di atas infrastruktur cloud Firebase yang sangat skalabel, Genkit memastikan bahwa aplikasi AI kita dapat menangani peningkatan beban dan permintaan pengguna secara efisien.
  • Rangkaian Komprehensif: Genkit mencakup alat untuk manajemen data, basis data waktu nyata, penyimpanan cloud, autentikasi, dan banyak lagi, menyediakan solusi komprehensif untuk pengembangan aplikasi AI.

Meningkatkan AI Generatif dengan Firebase Genkit

Dengan mengintegrasikan Firebase Genkit ke dalam aplikasi AI Generatif kita, kita dapat meningkatkan fungsionalitas dan pengalaman pengguna secara signifikan.

Berikut adalah bagaimana Firebase Genkit berkontribusi terhadap efektivitas aplikasi AI:

  • Penanganan Data Waktu Nyata: Basis data waktu nyata Firebase Genkit memungkinkan pembaruan dan pengambilan data secara instan, memastikan bahwa model AI kita selalu memiliki akses ke informasi terbaru. hal ini akan sangat berguna untuk aplikasi yang memerlukan pembuatan konten dinamis berdasarkan data terkini, seperti chatbot dan sistem rekomendasi.
  • Penerapan AI yang Skalabel: Dengan memanfaatkan infrastruktur cloud Firebase, Genkit memungkinkan penerapan model AI yang skalabel. Ini berarti bahwa saat aplikasi kita tumbuh dan permintaan pengguna meningkat, infrastruktur dapat secara otomatis diskalakan untuk memenuhi kebutuhan ini tanpa mengorbankan kinerja.
  • Manajemen Data yang Disederhanakan: Dengan alat penyimpanan dan manajemen data terintegrasi dari Firebase, pengembang dapat dengan mudah menangani data yang diperlukan untuk melatih dan mengoperasikan model AI. Ini termasuk kemampuan untuk menyimpan dataset besar, pembaruan waktu nyata, dan penanganan data yang aman.

Untuk mulai menggunakan Firebase Genkit dalam aplikasi AI kita, ikuti langkah-langkah berikut:

  1. Set Up Firebase: Buat proyek Firebase dan atur basis data waktu nyata, penyimpanan, dan layanan autentikasi kita.
  2. Install Genkit: Integrasikan Genkit ke dalam projek kita dengan mengikuti petunjuk instalasi yang disediakan dalam dokumentasi Genkit.
  3. Konfigurasikan Plugin: Tambahkan dan konfigurasikan plugin Genkit yang diperlukan untuk manajemen data, integrasi model AI, dan autentikasi pengguna.

Pelajari lebih lanjut tentang Firebase Genkit

Sekarang mari kita coba belajar lebih lanjut agar kita bisa membangun Aplikasi AI seperti ini ya!

Menyiapkan Plugin Genkit HNSW

Persiapan

Sebelum menginstal plugin, pastikan kita telah menginstal:

  • Node.js (versi 12 atau lebih tinggi) npm (termasuk dengan Node.js)
  • TypeScript (install secara global melalui npm: npm install -g typescript)
  • Genkit (install secara global melalui npm: npm install -g genkit)

Pertama-tama, buat projek Genkit dengan

genkit init

Untuk lebih jelasnya, ikuti instruksi di sini ya!

Setelah proyek Genkit diinstal, pastikan proyek disiapkan dengan baik, kita dapat mencoba terlebih dahulu dengan

genkit start

Jika berjalan dengan baik dan membuka UI Genkit di browser, maka kita siap untuk melanjutkan!

Menginstal plugin HNSW

Untuk menginstal plugin Genkit HNSW, jalankan perintah berikut:

npm install genkitx-hnsw

Kita akan menggunakan 2 Plugin Genkit di sini.

  • Plugin HNSW Indexer Plugin
  • HNSW Retriever

Plugin HNSW Indexer

Plugin HNSW Indexer membantu membuat indeks vektor dari data yang disiapkan, yang dapat digunakan sebagai referensi konteks dan informasi atas Model AI nya.

Persiapan Data

Siapkan data atau dokumen kita, misalnya, data restoran, dalam folder khusus.

Mendaftarkan Plugin HNSW Indexer

Impor plugin ke dalam proyek Genkit kita, cari file genkit.config.ts di projek kamu, biasanya ada di /root/src/genkit.config.ts.

Kemudian impor plugin ke dalam file tersebut.

import { hnswIndexer } from "genkitx-hnsw";

export default configureGenkit({
plugins: [
hnswIndexer({ apiKey: "GOOGLE_API_KEY" })
]
});

Menjalankan Indexer

  • Buka UI Genkit dan pilih plugin HNSW Indexer yang terdaftar.
  • Jalankan alur dengan parameter yang diperlukan:
    - dataPath: direktori data dan dokumen kamu yang ingin dipelajari oleh AI Model.
    - indexOutputPath: direktori output yang diinginkan untuk penyimpanan indeks vektor.

Hasil Indeks Penyimpanan Vektor

Penyimpanan vektor HNSW akan disimpan di direktori output yang sudah ditentukan, yang akan digunakan dan diproses oleh plugin HNSW Retriever nantinya.

2.Plugin HNSW Retriever Plugin

HNSW Retriever memproses prompt dengan Model LLM Gemini, diperkaya dengan informasi tambahan spesifik dari indeks vektor HNSW.

Mendaftarkan Plugin HNSW Retriever

Impor plugin yang diperlukan ke dalam proyek Genkit kita:

import { googleAI } from "@genkit-ai/googleai";
import { hnswRetriever } from "genkitx-hnsw";
export default configureGenkit({
plugins: [
googleAI(),
hnswRetriever({ apiKey: "GOOGLE_API_KEY" })
]
});

Menjalankan Retriever

  1. Buka UI Genkit dan pilih plugin HNSW Retriever.
  2. Jalankan alur dengan parameter yang diperlukan:
    - prompt: Input an “prompt” atau pesan yang akan disampaikan ke AI. Modelnya.
    - indexPath: Direktori ke file indeks vektor yang dihasilkan oleh plugin HNSW Indexer sebelumnya.

Contoh “Prompt”

Menanyakan daftar harga restoran di Kota Surabaya:

prompt: "What is the price list of my restaurant in Surabaya City?"
indexPath: "/path/to/your/vector/index"

Dengan ini, kita bisa mendapatkan informasi dari AI Model kita dengan lebih spesifik, dimana AI Model nya juga tahu bahkan daftar makanannya serta harga nya, dimana semua informasi itu sudah kita ajarkan ke AI Model pada bagian “Persiapan Data” ketika menjalanakan “HNSW Indexer plugin” sebelumnya.

Kesimpulan

Integrasi Vektor Index HNSW dengan Genkit secara signifikan meningkatkan kemampuan model AI Generatif dengan memberikan konteks yang diperdalam dan spesifik.

Pendekatan ini tidak hanya meningkatkan akurasi respons AI tetapi juga menyederhanakan langkah-langkah untuk implementasi RAG, dimana kalian hanya perlu menggunakan Plugin pada Genkit ini.

Dengan ini, kita dapat secara efektif memanfaatkan indeks vektor HNSW untuk membangun sistem AI yang lebih cerdas dan kontekstual dalam waktu singkat hampir secara instan! karena kita hanya perlu memakai plugin genkit-hnsw saja.

Okee, Semoga ini bisa membantu dan sampai jumpa di artikel berikutnya yak!

--

--

Surahutomo Aziz Pradana
Firebase Indonesia

Google Developer Expert - Firebase, Co-Lead GDG Jakarta, GDSC Lead PENS, Engineering Manager, AR/VR Tech Lead, Fullstack Engineer