โครงการนี้ถูกสร้างขึ้นเพื่อแสดงให้เห็นว่าเราสามารถสร้างเครื่องมือค้นหาที่ทันสมัยโดยใช้โครงสร้างที่ตรงไปตรงมาของการฝังข้อความ (HuggingFace Transformers) และฐานข้อมูลเวกเตอร์
เป็นพื้นฐานสำหรับข้อมูลการค้นหาฉันใช้ข้อมูลเว็บไซต์ที่รวบรวมข้อมูลหกเดือนสุดท้ายของ Commoncraw
ในการเรียกใช้โครงการนี้ในพื้นที่คุณจะ ต้อง!
data-worker และ webapp (next.js)โครงการนี้ไม่ได้รับการปรับให้เหมาะสมสำหรับการผลิตดังนั้นจึงไม่มีการใช้งานการปรับใช้การผลิตแบบ“ คำสั่ง” นี่จะเป็นตัวอย่างของวิธีการสร้างการค้นหาเว็บไซต์ของคุณเพื่อให้ผลลัพธ์เช่น Google (ชนิดของ ... )
คุณจะพบข้อมูลเพิ่มเติมเกี่ยวกับการใช้อินเทอร์เฟซ Embeddings Text HuggingFace ในหน้า GitHub อย่างเป็นทางการของพวกเขา ถึงกระนั้นสำหรับบริบทของที่เก็บนี้ฉันสนใจรวบรวมมันสำหรับ MacOS M1 และใช้กับ M1 Max Metal GPU ซึ่งมีให้เฉพาะผ่านการรวบรวมโดยตรง คุณสามารถใช้คอนเทนเนอร์ Docker ของโปรเซสเซอร์ที่ใช้ Intel ซึ่งเป็น prebuilt และพร้อมใช้งานสำหรับ Nvidia GPU
คำสั่งด้านล่างจะโคลนอินเทอร์เฟซ Embeddings Text และสร้างขึ้นสำหรับไดรเวอร์ MacOS Metal เพื่อใช้ GPU โปรเซสเซอร์ M1
git clone https://github.com/huggingface/text-embeddings-inference.git
cd text-embeddings-inference
cargo install --path router -F candle -F metalอาจใช้เวลาไม่กี่นาทีและ 100% ของ CPU ของคุณดังนั้นหยิบกาแฟในเวลาเดียวกัน☕
ไดเรกทอรี data-worker มีสคริปต์ Node.js อย่างง่ายซึ่งได้รับการออกแบบมาเพื่อดาวน์โหลดกรอบเวลาข้อมูล Commoncrawl ที่ระบุและเริ่ม vectorizing เนื้อหาข้อความจาก HTML ที่รวบรวมไว้และบันทึกผลลัพธ์เป็นเวกเตอร์ไปยังฐานข้อมูล QDRANT และ MongoDB สำหรับการอ้างอิงในภายหลัง
เป็นสิ่งสำคัญที่จะต้องทราบว่าจำนวนข้อมูลมีขนาดใหญ่มากสำหรับ "การรันในท้องถิ่น" ดังนั้นอย่าพยายามรอจนกว่าการทำให้ vectorization เสร็จสมบูรณ์จะต้องใช้เวลาหลายเดือนติดต่อกันเพื่อให้เสร็จสิ้นหากมันจะพอดีกับแล็ปท็อปของคุณ หลังจากดำเนินการ 2 สัปดาห์ฉันเพิ่งยอมแพ้เพราะใช้พื้นที่เก็บข้อมูลเกือบ 300GB และฉันทำเพียง 4% จากชุดข้อมูล Commoncrawl 6 เดือน
webapp นั้นเป็นแอพ Next.js ที่ง่ายมากที่มี CSS Tailwind และไฟล์ที่กำหนดเองบางไฟล์ภายในไดเรกทอรี webapp/src/utils ซึ่งฉันมีฟังก์ชั่นการเชื่อมต่อกับ MongoDB ฐานข้อมูล QDRANT และขอให้เชื่อมต่อข้อความเชื่อมต่อข้อความค้นหา
คำสั่งเหล่านั้นด้านล่างเป็นขั้นตอนในการเรียกใช้โครงการนี้ในเครื่องและเริ่ม vectorizing และค้นหาชุดข้อมูล Commoncrawl
BAAI/bge-large-en-v1.5 MTEB รุ่นสำหรับ Vectoriztion cd text-embeddings-inference
text-embeddings-router --model-id BAAI/bge-large-en-v1.5 --max-client-batch-size 5000 --port 88882. เทอร์มินัลใหม่: โคลนที่เก็บนี้และเรียกใช้บริการนักเทียบท่าแต่งเพลงสำหรับ MongoDB และ QDRANT
git clone [email protected]:tigranbs/search-engine-example-text-embeddings.git
cd search-engine-example-text-embeddings
docker compose up -d3. เทอร์มินัลใหม่: เรียกใช้ข้อมูลผู้ทำงานเพื่อเริ่มการใช้ข้อมูลการค้นหาโดยการดาวน์โหลดไฟล์ Commoncrawl และส่งไปยังอินเทอร์เฟซ Embeddings Text
cd search-engine-example-text-embeddings
cd data-worker
npm i
npm start4 เทอร์มินัลใหม่: เรียกใช้ WebApp เพื่อเริ่มค้นหา
cd search-engine-example-text-embeddings
cd webapp
npm i
npm run devหลังจากขั้นตอนเหล่านั้นคุณควรจะสามารถนำทางไปยัง http: // localhost: 3000 และดูหน้าการค้นหาซึ่งจะทำงานโดยตรงกับ MongoDB และ Qdrant ด้านบนของข้อความ syncronized ที่คุณจะมีอยู่แล้ว