Membangun mesin pencari ebook terdistribusi open source
- Atas rekomendasi seorang teman, penulis mengetahui situs web pencarian ebook bernama Liber3 yang menggunakan nama domain ENS.
- Liber3 membangun situs web pencarian ebook dengan memanfaatkan ENS dan IPFS, tetapi tidak membuka source code-nya.
- Setelah meninjau dokumentasi dan dataset Glitter, penulis memutuskan untuk mengimplementasikan sendiri versi komunitas open source.
Inisialisasi proyek
- Buat proyek baru dan pasang Glitter SDK agar dapat terhubung dengan mudah ke jaringan Glitter dan memperoleh metadata ebook.
Koneksi jaringan
- Buat klien yang dapat berinteraksi dengan jaringan Glitter.
- Inisialisasi instance
LCDClientmelalui Glitter SDK dan atur parameter yang relevan.
Membangun fitur pencarian
- Definisikan fitur pencarian yang menerima kata kunci kueri dari pengguna, menyusun pernyataan kueri, lalu mengirimkannya ke jaringan Glitter.
Menampilkan hasil pencarian
- Setelah fitur pencarian dibangun, rancang antarmuka yang menampilkan informasi dasar ebook dan sediakan elemen interaktif agar pengguna dapat dengan mudah menelusuri dan memilih buku.
- Melalui empat langkah ini, mesin pencari ebook dapat dibangun dan menyediakan platform yang efisien serta nyaman bagi pengguna untuk mencari sumber daya ebook.
- Jika versi situs web yang telah dikompilasi dipublikasikan ke jaringan IPFS, Anda dapat memiliki mesin pencari ebook terdistribusi yang dapat diakses melalui gateway IPFS.
- Seluruh source code dapat dilihat di repositori ini.
Opini GN⁺
- Artikel ini dapat menarik bagi orang-orang yang tertarik pada teknologi karena menjelaskan cara membangun mesin pencari ebook dengan memanfaatkan open source dan teknologi terdistribusi.
- Penggunaan database terdistribusi dan IPFS menghadirkan cara baru untuk menyimpan dan mencari data tanpa bergantung pada server terpusat, sehingga berpotensi meningkatkan persistensi dan aksesibilitas data.
- Saat mengadopsi teknologi ini, perlu mempertimbangkan stabilitas jaringan, kecepatan pencarian, pengalaman pengguna, dan penting untuk memahami kelebihan serta kekurangannya dibandingkan mesin pencari terpusat yang sudah ada.
- Proyek lain yang menawarkan fungsi serupa antara lain Project Gutenberg atau Google Books API, tetapi keduanya tidak menggunakan teknologi terdistribusi.
- Dengan menggunakan teknologi terdistribusi, kepemilikan dan kontrol data dapat dikembalikan kepada pengguna sekaligus memperkuat ketahanan konten terhadap sensor.
1 komentar
Pendapat di Hacker News
Dulu sekali saya ingin mencoba menangani dataset dan model AI di atas IPFS dengan cara serupa
Saya tidak tahu masa depan IPFS akan seperti apa, tetapi saat menangani dataset berskala besar, saya berharap inti infrastruktur berbagi data P2P yang memungkinkan individu menyelesaikan masalah bahkan dengan hardware terbatas menjadi lebih mudah diakses
https://github.com/JakeKalstad/IPFSPytorchDataset
https://github.com/JakeKalstad/load_ipfs_pytorch_model
Melihat judulnya, saya benar-benar antusias karena mengira ini melakukan pencarian teks penuh
Zlib dan Google Books sudah melakukannya, tetapi versi open source yang bisa dikontribusikan semua orang dan juga menyediakan akses teks penuh akan menjadi proyek yang keren
Contoh: https://openlibrary.org/search/inside?q=%22institutional+thi...
Ini open source dan selalu mencari kontributor. Sepertinya mereka akan sangat menyambut bantuan untuk meningkatkan pencarian
https://github.com/internetarchive/openlibrary/
Masalahnya, banyak buku berupa hasil scan PDF sehingga tidak memiliki teks asli, dan OcrMyPdf memang menanganinya cukup baik, tetapi sangat banyak memakai CPU
Kalau hanya mencari judul buku atau penulis, mesin pencari sudah banyak sekali
Yang kurang adalah indeks pencarian isi buku elektronik, dan di era AI generatif ini akan segera menjadi sangat penting
Di HN, ada yang mengatakan bisa mengindeks isi jutaan buku dengan satu laptop, sementara yang lain mengatakan cakupannya nyaris mustahil. Saya penasaran apakah ada proyek yang melakukan ini
Saat ini hanya mengindeks konten milik sendiri, tetapi nantinya saya ingin menambahkan mode untuk berbagi koleksi agar orang lain bisa menemukan ide-ide terkait yang ditemukan dalam buku melalui pencarian semantik. Cara kerjanya saat ini bisa dilihat di open source
[1] https://emdash.ai/
[2] https://github.com/dmotz/emdash
Saya ingat Google pernah mendokumentasikan hal seperti ini pada masa awalnya; indeks pencarian mengembalikan metadata relevan yang cocok dengan kueri tertentu. Ruang kueri terutama berbasis kata kunci mentah dan tuple, serta, kalau ingatan saya benar, n-gram 2–3 kata; yang terakhir harus memenuhi syarat frekuensi minimum. Frasa pencarian yang panjang bisa disusun dari n-gram yang lebih pendek
Kosakata penutur asli bahasa Inggris tingkat lanjut biasanya sekitar 40 ribu kata, dan kamus besar yang mencakup kata-kata lama pun mungkin kurang dari 250 ribu kata
Memetakan kosakata ke karya yang mengutip kata tersebut relatif sederhana. n-gram memang mengalami ledakan kombinatorial, tetapi ruangnya masih cukup terbatas, dan kita sudah memiliki pengalaman mengindeks dokumen skala web selama lebih dari 25 tahun
Menurut saya laptop pun sampai batas tertentu bisa membuat indeks yang layak pakai untuk jutaan buku, tetapi untuk indeks yang lebih komprehensif, terutama sampai indeks peringkat atas ruang pencarian, kemungkinan diperlukan sistem yang lebih besar. Mungkin itulah tantangan yang lebih besar
Dalam pekerjaan terbaru, saya menangani LLM lokal, dan meskipun kuantisasi sekarang sudah banyak maju, melakukan pekerjaan seperti ini di ThinkPad masih jauh tertinggal dibanding menyewa VPS dengan beberapa 4090/H100 selama beberapa jam
Dalam peringkasan, masalah terbesar adalah kebanyakan model LLM lokal tidak memiliki jendela konteks yang sangat besar, sehingga teks besar seperti novel pendek Vonnegut pun terasa berat. Saya mengujinya dengan ringkasan issue GitHub, dan bahkan dengan jendela konteks 16k token, kadang kewalahan jika komentarnya banyak
Tentu saja, orang yang lebih pintar daripada saya mungkin bisa membuatnya berjalan bahkan di Raspberry Pi
Saya tidak punya dasar, hanya dugaan, jadi ingin tahu lebih banyak
Bisakah Anda menjelaskan lebih detail bagaimana indeks pencarian diisi, dan kira-kira seperti apa batas memorinya yang diperkirakan?
Keren. Apakah ini bisa dipakai juga untuk pencarian torrent?
Misalnya menjalankan torrent web yang bisa streaming video bersama mesin pencari terdesentralisasi
Versi open source juga akan dibuat
Ada versi open source untuk pencarian torrent yang memakai teknologi yang sama di sini
Saya penasaran apakah ini benar-benar mesin pencari, atau hanya frontend yang membuat kueri
select fromSaya tidak mengerti ini membicarakan apa
Ada kalimat seperti “Saya direkomendasikan Liber3, memakai nama domain ENS, berjalan di ENS dan IPFS, sepertinya memakai Glitter, dan merupakan layanan yang dibuat dengan Tendermint”, tetapi terdengar seperti sinyal alien dalam bahasa dari galaksi lain
Saya juga mencoba sesuatu bernama Liber3, tetapi apa pun yang saya lakukan, yang keluar hanya “Oops! Something went wrong. Please refresh or try again later”. Sebenarnya ini semua maksudnya apa?
IPFS adalah InterPlanetary File System, lebih mirip penyimpanan objek terdistribusi seperti S3 P2P yang immutable
Glitter terdengar familier, tetapi tidak langsung teringat
Tendermint adalah mesin konsensus untuk blockchain, dan merupakan bagian dari rangkaian alat yang bersama Inter-Blockchain Communication (IBC) Protocol dan Cosmos SDK berupaya memungkinkan interoperabilitas antar-blockchain
Ekosistem blockchain benar-benar dunia kecil tersendiri. Bukan berarti eksklusif, tetapi cukup berkelompok, jadi kalau tidak aktif mencarinya, hampir tidak akan pernah bersentuhan dengannya
Sebagai tambahan, IPFS layak dilihat jika Anda tertarik pada database atau sistem terdesentralisasi tanpa kepercayaan, bahkan jika Anda skeptis terhadap blockchain. Di dalamnya ada pekerjaan yang cukup menarik, dan timnya juga tidak menumpang suasana demam emas seperti hampir semua proyek blockchain
Anggap saja ini panduan implementasi untuk membuat mesin pencari ebook open source. Tentu masih ada sedikit jargon dalam penjelasan itu, tetapi tidak sampai berupa deretan nama library tertentu
Sebagian besar tulisannya adalah detail implementasi, dan tautannya dipasang dengan baik
Lalu kemudian menyadari bahwa ini sudah ada hampir 15 tahun lalu dan namanya libgen.rs