Lewati ke konten utama

Apa Itu Faiss (Facebook AI Similarity Search)?

Faiss adalah pustaka open-source yang dirancang untuk pencarian kemiripan dan pengelompokan vektor padat secara efisien, yang memungkinkan aplikasi seperti sistem rekomendasi dan pencarian gambar.
Ryan Ong
Ryan Ong

Buat Akun Gratis Anda

Berlatih dan lacak kemajuan Anda.

Lanjutkan dengan GoogleDengan melanjutkan, Anda menyetujui Ketentuan Penggunaan, Kebijakan Privasi dan bahwa data Anda disimpan di AS.

Mesin pencari tradisional bekerja dengan baik untuk menemukan kecocokan yang persis, tetapi sering kurang efektif dalam mengidentifikasi item serupa berdasarkan konten seperti gambar, video, atau teks. Keterbatasan ini dapat menghambat pengembangan aplikasi seperti sistem rekomendasi, pencarian gambar, dan sistem deteksi anomali.

Untuk mengatasinya, Meta AI (sebelumnya Facebook AI) mengembangkan Facebook AI Similarity Search (Faiss).

Faiss adalah pustaka yang dirancang khusus untuk menangani pencarian kemiripan secara efisien, yang sangat berguna saat menangani himpunan data multimedia berskala besar.

Dalam artikel ini, saya akan menjelaskan apa itu Faiss dan memandu Anda untuk mulai menggunakannya pada aplikasi pencarian Anda.

Apa Itu Faiss?

Faiss, singkatan dari Facebook AI Similarity Search, adalah pustaka open-source yang dibuat untuk pencarian kemiripan dan pengelompokan vektor padat. Faiss dapat digunakan untuk membangun indeks dan melakukan pencarian dengan kecepatan dan efisiensi memori yang luar biasa. Selain itu, Faiss meningkatkan kinerja pencarian melalui implementasi GPU untuk berbagai metode pengindeksan.

Fungsionalitas inti

Faiss membuat pencarian tetangga terdekat menjadi cepat dengan mengindeks vektor menggunakan algoritma canggih seperti klastering k-means dan product quantization. Metode ini membantu Faiss mengatur dan mengambil vektor secara efisien, memastikan pencarian kemiripan berjalan cepat dan akurat. Berikut ini tinjauan lebih dekat terhadap algoritma pengindeksan:

  1. K-means clustering: Algoritma ini membagi data ke dalam klaster, yang membantu mempersempit ruang pencarian dengan berfokus pada klaster yang paling relevan saat melakukan kueri.
  2. Product quantization (PQ): PQ mengompresi vektor menjadi kode yang lebih pendek, secara signifikan mengurangi penggunaan memori dan mempercepat pencarian tanpa penurunan akurasi yang besar.
  3. Optimized product quantization (OPQ): Versi PQ yang ditingkatkan, OPQ memutar data agar lebih sesuai dengan kisi kuantisasi, sehingga meningkatkan akurasi vektor terkompresi.

Fleksibilitas

Faiss cukup fleksibel dalam mengukur kemiripan antar vektor, menawarkan berbagai metrik jarak untuk dipilih. Yang utama adalah:

  • Jarak Euclidean: Mengukur jarak garis lurus antara dua titik, cocok ketika Anda peduli pada kemiripan geometris vektor.
  • Kemiripan kosinus: Melihat cosinus sudut antara dua vektor, lebih berfokus pada orientasi daripada ukurannya. Sangat berguna untuk analisis teks di mana arah lebih penting daripada panjang.

Opsi-opsi ini memungkinkan Anda memilih metrik yang paling sesuai dengan data dan kebutuhan aplikasi Anda.

Faiss dapat berjalan di CPU dan GPU, memanfaatkan perangkat keras modern untuk mempercepat proses pencarian. Faiss dirancang untuk berbagai platform komputasi, dari komputer pribadi hingga klaster komputasi kinerja tinggi. Ia berpindah dengan mulus antara indeks CPU dan GPU, dan antarmuka Python-nya bekerja baik dengan indeks C++, sehingga memudahkan transisi dari pengujian ke penerapan. Dukungan multi-platform ini memastikan Faiss dapat digunakan secara efisien di berbagai lingkungan komputasi, mengoptimalkan kinerja dan penggunaan sumber daya.

Fitur Utama Faiss

Faiss menonjol sebagai alat untuk pencarian kemiripan, dilengkapi fitur-fitur yang dirancang untuk menangani himpunan data besar dan beragam secara efektif. Berikut tinjauan lebih dekat beberapa kemampuan inti yang membuatnya menjadi aset kuat untuk tugas-tugas intensif data.

Skalabilitas

Faiss dirancang untuk mengelola himpunan data dari jutaan hingga miliaran vektor, ideal untuk aplikasi seperti sistem rekomendasi berskala besar atau basis data gambar dan video masif. Ia menggunakan teknik canggih seperti sistem berkas terbalik dan graf hierarchical navigable small world (HNSW) untuk menjaga efisiensi bahkan pada himpunan data yang luas.

Kecepatan

Faiss cepat berkat algoritma dan struktur data yang dioptimalkan. Ia menggunakan klastering k-means, product quantization, dan pencarian brute-force yang dioptimalkan untuk mempercepat proses. Jika Anda menggunakan GPU, Faiss dapat hingga 20 kali lebih cepat pada perangkat keras kelas Pascal yang lebih baru dibanding versi CPU-nya. Kecepatan ini krusial untuk aplikasi waktu nyata yang membutuhkan respons cepat.

Akurasi

Faiss memberi Anda fleksibilitas dalam akurasi, menyeimbangkan kecepatan dan presisi sesuai kebutuhan. Anda dapat menyetelnya untuk pencarian yang sangat akurat atau memilih hasil yang lebih cepat namun kurang presisi. Tersedia berbagai metode pengindeksan dan parameter, dan Anda dapat mengukur kinerja dengan metrik seperti 1-recall@1 dan 10-intersection untuk melihat performanya dibandingkan pendekatan brute-force.

Kebolehsuaian

Faiss dapat menangani berbagai jenis data dengan mengonversinya menjadi representasi vektor. Artinya, Anda dapat menggunakannya untuk gambar, teks, audio, dan lainnya, sehingga bermanfaat di berbagai bidang dan industri. Ia mendukung beberapa metrik jarak, termasuk jarak Euclidean, kemiripan kosinus, dan inner-product distance, memungkinkan Anda menyesuaikan proses pencarian dengan kebutuhan Anda. Faiss dapat diadaptasi untuk beragam aplikasi seperti pencarian kemiripan gambar, penelusuran dokumen teks, dan audio fingerprinting.

Kasus Penggunaan Faiss

Faiss serbaguna dan efisien, sehingga cocok untuk berbagai aplikasi di berbagai industri. Mari kita telusuri beberapa kasus penggunaan utama di mana Faiss unggul.

Sistem rekomendasi

Faiss merupakan pengubah permainan untuk sistem rekomendasi. Ia dapat dengan cepat menemukan item serupa dalam himpunan data yang sangat besar, seperti produk, film, atau artikel.

Bayangkan sebuah platform e-niaga menggunakan Faiss untuk menganalisis perilaku pengguna dan interaksi produk. Ia menghasilkan vektor berdimensi tinggi untuk interaksi ini, dan dengan melakukan pencarian tetangga terdekat, Faiss mengidentifikasi produk yang mirip dengan yang telah dilihat atau dibeli pengguna. Pendekatan yang dipersonalisasi ini meningkatkan keterlibatan dan kepuasan pengguna, yang mendorong penjualan dan retensi pelanggan.

Pencarian gambar dan video

Faiss juga mendukung mesin pencari yang mengambil gambar atau video yang mirip secara visual dengan mengindeks vektor berdimensi tinggi dari konten multimedia. Bayangkan aplikasi pengelola foto yang menggunakan Faiss untuk membantu pengguna menemukan semua gambar dari suatu landmark tertentu di pustaka foto mereka. Dengan mengonversi gambar menjadi vektor dan mengindeks vektor ini dengan Faiss, aplikasi dapat dengan cepat melakukan pencarian kemiripan. Kemampuan ini sama bermanfaatnya untuk platform video, di mana Faiss dapat mengindeks dan mencari klip video serupa berdasarkan fitur visual dan audio, sehingga meningkatkan penemuan konten dan fitur rekomendasi.

Deteksi anomali

Dalam deteksi anomali, Faiss andal dalam mengidentifikasi outlier atau anomali dalam himpunan data dengan menemukan titik yang menyimpang secara signifikan dari tetangga terdekatnya.

Ambil contoh deteksi penipuan: transaksi keuangan dapat diubah menjadi vektor yang mencakup atribut seperti jumlah transaksi, lokasi, dan waktu. Faiss melakukan pencarian kemiripan untuk menandai transaksi yang merupakan outlier, yang mengindikasikan potensi penipuan.

Dalam keamanan jaringan, Faiss dapat mendeteksi pola lalu lintas jaringan yang tidak biasa yang mungkin menandakan serangan siber.

Dalam pengendalian mutu, ia dapat mengidentifikasi produk cacat dengan membandingkan fiturnya dengan produk normal.

Temu kembali informasi

Faiss juga merupakan alat yang sangat baik untuk temu kembali informasi, membantu menemukan dokumen atau bagian yang relevan berdasarkan kemiripan semantik. Ini sangat berharga bagi mesin pencari, perpustakaan digital, atau sistem apa pun yang memerlukan temu kembali teks yang cepat dan akurat.

Sebagai contoh, mesin pencari dapat mengonversi dokumen dan kueri menjadi vektor berdimensi tinggi menggunakan teknik seperti word2vec atau embedding BERT embedding. Dengan mengindeks vektor ini menggunakan Faiss, mesin pencari dapat dengan cepat melakukan pencarian kemiripan untuk mengambil dokumen yang sesuai dengan makna kueri pengguna alih-alih sekadar mencocokkan kata kunci. Ini membuat hasil pencarian lebih relevan, sehingga meningkatkan pengalaman pengguna dan efisiensi dalam temu kembali informasi.

Mulai Menggunakan Faiss

Di bagian ini, saya akan menunjukkan cara menyiapkan Faiss dan menggunakannya bersama LangChain dan OpenAI embeddings.

Instalasi

Untuk menginstal Faiss, Anda dapat menggunakan pip untuk mendapatkan versi CPU atau GPU:

# For CPU
pip install faiss-cpu

# For GPU
pip install faiss-gpu

Selain itu, untuk menggunakan Faiss dengan LangChain dan OpenAI embeddings, Anda perlu menginstal paket berikut:

pip install -U langchain-community langchain-openai tiktoken

Aplikasi dasar

Berikut contoh kode sederhana yang mendemonstrasikan cara mengindeks vektor dan melakukan pencarian tetangga terdekat menggunakan Faiss, LangChain, dan OpenAI embeddings:

from langchain.document_loaders import WikipediaLoader
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

# Load content from Wikipedia using WikipediaLoader
loader = WikipediaLoader("Machine_learning")
document = loader.load()

# Chunking
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# Loading embeddings model
embeddings = OpenAIEmbeddings()

# Convert documents to vectors and index vectors
db = FAISS.from_documents(docs, embeddings)
print(db.index.ntotal)

# Search query
query = "What is machine learning?"
docs = db.similarity_search(query)
print(docs[0].page_content)

Jika Anda ingin melihat lebih banyak contoh dan membiasakan diri dengan Faiss, lihat dokumentasi resmi dan tutorial ini.

Kesimpulan

Faiss menonjol sebagai alat yang kuat untuk pencarian kemiripan yang efisien, menawarkan skalabilitas, kecepatan, akurasi, dan kebolehsuaian. Ia dapat menangani himpunan data besar dan melakukan pencarian kemiripan yang cepat dan akurat, menjadikannya sangat berharga untuk berbagai aplikasi seperti sistem rekomendasi, deteksi anomali, dan temu kembali informasi.

Dengan menggunakan Faiss, kita dapat menciptakan sistem yang lebih cerdas dan intuitif yang meningkatkan pengalaman pengguna dan efisiensi operasional.

Untuk pembelajaran dan sumber daya lebih lanjut, pertimbangkan untuk menjelajahi artikel terkait berikut:

Ryan Ong

Penulis

Ryan Ong

Ryan adalah lead data scientist yang mengkhususkan diri dalam membangun aplikasi AI menggunakan LLM. Ia adalah kandidat PhD di bidang Pemrosesan Bahasa Alami dan Knowledge Graph di Imperial College London, tempat ia juga menyelesaikan gelar Master di Ilmu Komputer. Di luar data science, ia menulis newsletter Substack mingguan, The Limitless Playbook, di mana ia membagikan satu ide yang dapat langsung dipraktikkan dari para pemikir top dunia dan sesekali menulis tentang konsep inti AI.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026