Proyek ini telah dibuat untuk menunjukkan bagaimana kita dapat membangun mesin pencari modern menggunakan struktur embeddings teks langsung (transformator huggingface) dan database vektor.
Sebagai dasar untuk data pencarian, saya menggunakan data situs web CommonCrawl selama enam bulan terakhir merangkak, tetapi karena butuh hampir dua minggu di laptop saya (M1 max) untuk memvektorisasi ~ domain 1MLN, saya berasumsi siapa pun yang akan menggunakan repositori ini tidak akan mencoba untuk memvektor seluruh dataset?
Untuk menjalankan proyek ini secara lokal, Anda akan membutuhkan!
data-worker dan webapp (next.js)Proyek ini tidak dioptimalkan untuk produksi, jadi tidak ada implementasi penyebaran produksi "satu perintah". Ini akan menjadi contoh cara membangun pencarian situs web Anda untuk membuat hasil lebih seperti google (jenis ...)
Anda akan menemukan informasi lebih lanjut tentang penggunaan antarmuka Embeddings Teks Huggingface di halaman GitHub resmi mereka. Namun, untuk konteks repositori ini, saya tertarik untuk menyusunnya untuk MacOS M1 dan menggunakannya dengan GPU logam M1 Max, yang hanya tersedia melalui kompilasi langsung. Anda dapat menggunakan wadah Docker Prosesor berbasis Intel, yang prebuilt dan tersedia untuk NVIDIA GPU.
Perintah di bawah ini akan mengkloning antarmuka Text Embeddings dan membangunnya untuk driver logam MacOS untuk menggunakan M1 Processor GPU.
git clone https://github.com/huggingface/text-embeddings-inference.git
cd text-embeddings-inference
cargo install --path router -F candle -F metalMungkin butuh beberapa menit dan 100% dari CPU Anda, jadi ambil kopi sementara ☕️
Direktori data-worker berisi skrip node.js sederhana, yang dirancang untuk mengunduh jangka waktu data CommonCrawl yang ditentukan dan mulai vektorisasi konten teks dari HTML yang dirangkak dan menyimpan hasil sebagai vektori ke database Qdrant dan MongoDB untuk referensi pencarian di kemudian hari.
Penting untuk dicatat bahwa jumlah data sangat besar untuk "lari lokal", jadi jangan mencoba menunggu sampai vektorisasi selesai, akan memakan waktu berbulan -bulan berturut -turut untuk menyelesaikan ini jika akan muat di laptop Anda. Setelah 2 minggu eksekusi, saya baru saja menyerah, karena butuh hampir 300GB penyimpanan dan saya hanya memiliki 4% dari 6 bulan dataset CommonCrawl.
webapp itu sendiri sangat sederhana selanjutnya. Aplikasi JS dengan CSS tailwind dan beberapa file khusus di dalam direktori webapp/src/utils , di mana saya memiliki fungsionalitas menghubungkan ke MongoDB, database Qdrant dan juga permintaan ke antarmuka Embeddings SMS untuk memvektori teks pencarian sebelum melakukan permintaan pencarian yang sebenarnya.
Perintah -perintah di bawah ini adalah langkah -langkah untuk menjalankan proyek ini secara lokal dan memulai vektorisasi dan mencari dataset CommonCrawl.
BAAI/bge-large-en-v1.5 MTEB untuk Vektorisasi cd text-embeddings-inference
text-embeddings-router --model-id BAAI/bge-large-en-v1.5 --max-client-batch-size 5000 --port 88882. Terminal Baru: Klon Repositori ini dan jalankan layanan Docker Compose untuk MongoDB dan Qdrant
git clone [email protected]:tigranbs/search-engine-example-text-embeddings.git
cd search-engine-example-text-embeddings
docker compose up -d3. Terminal Baru: Jalankan Pekerja Data untuk memulai vektorisasi data pencarian dengan mengunduh file CommonCrawl dan mengirimkannya ke antarmuka Embeddings Teks
cd search-engine-example-text-embeddings
cd data-worker
npm i
npm start4 Terminal Baru: Jalankan Webapp untuk mulai mencari
cd search-engine-example-text-embeddings
cd webapp
npm i
npm run devSetelah langkah -langkah itu, Anda harus dapat menavigasi ke http: // localhost: 3000 dan melihat halaman pencarian, yang akan bekerja langsung dengan mongoDB dan qdrant di atas teks yang sudah disinkronkan yang sudah Anda miliki.