Greenfinger 2.0: เว็บครอว์เลอร์ JVM กระจายศูนย์ตัวใหม่
รู้จัก Greenfinger 2.0 เว็บครอว์เลอร์แบบกระจายศูนย์บน JVM ที่ไม่ต้องติดตั้งฐานข้อมูลหรือเซิร์ฟเวอร์ค้นหา พร้อมรองรับการค้นหาข้อความและรูปภาพได้ทันที

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- Greenfinger 2.0 เป็นเว็บครอว์เลอร์แบบกระจายศูนย์ที่พัฒนาบน JVM
- ไม่ต้องติดตั้งฐานข้อมูล เซิร์ฟเวอร์ค้นหา หรือใช้ API Key ในการรันรอบแรก
- รองรับการค้นหาทั้งคำสำคัญ ข้อความความหมาย และการอธิบายภาพด้วย AI ท้องถิ่น
- สถาปัตยกรรมแบบไร้หัวหน้า (No coordinator) ช่วยให้การทำงานต่อเนื่องแม้โหนดจะหยุดทำงาน
ในแวดวงการพัฒนาซอฟต์แวร์ การจัดเก็บและค้นหาข้อมูลจากเว็บไซต์ขนาดใหญ่มักเป็นเรื่องยุ่งยากที่ต้องอาศัยโครงสร้างพื้นฐานที่ซับซ้อน ล่าสุดโปรเจกต์ Greenfinger 2.0 ได้นำเสนอแนวทางใหม่ในการทำเว็บครอว์เลอร์แบบกระจายศูนย์บน JVM (Java Virtual Machine) ที่ถูกออกแบบมาให้ใช้งานง่ายโดยไม่ต้องติดตั้งระบบฐานข้อมูล เซิร์ฟเวอร์ค้นหา หรือลงทะเบียนรับ API Key ล่วงหน้า ระบบจะทำการจัดเก็บหน้าเว็บ รูปภาพ และทุกเวอร์ชัน พร้อมเปิดให้ค้นหาได้อย่างรวดเร็วผ่านคำสำคัญ ความหมาย หรือแม้กระทั่งการบรรยายภาพที่ผู้ใช้งานจดจำได้
ด้านสถาปัตยกรรมภายใน Greenfinger 2.0 ทำงานโดยแบ่งข้อมูลออกเป็น 3 เลเยอร์หลัก ได้แก่:
- File: จัดเก็บหน้าเว็บ ต้นฉบับบทความ และรูปภาพทั้งหมดลงในดิสก์ท้องถิ่น, MinIO หรือระบบจัดเก็บข้อมูล S3
- Index: จัดทำดัชนีข้อความค้นหาเต็มรูปแบบผ่านทาง Lucene ฝังตัวหรือ Elasticsearch
- Vector: จัดเก็บส่วนของข้อความและเวกเตอร์ของรูปภาพ (Image Embeddings) รองรับ Lucene ฝังตัว, Qdrant, Weaviate และ Elasticsearch

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
จุดเด่นสำคัญคือเลเยอร์ไฟล์จะทำงานตลอดเวลา และฐานข้อมูลจะทำหน้าที่เก็บเฉพาะเมทาดาต้าเท่านั้น ทำให้เมื่อระบบค้นหาอย่าง Elasticsearch เกิดขัดข้อง หรือมีความต้องการเปลี่ยนตัววิเคราะห์ข้อมูลในอีกหกเดือนถัดมา ผู้ใช้สามารถสั่งรีเพลย์ข้อมูลใหม่ได้อย่างรวดเร็วด้วยคำสั่งชุดเดียวโดยไม่ต้องดึงข้อมูลจากเว็บไซต์ต้นทางใหม่อีกรอบ นอกจากนี้ การสลับไปใช้ที่เก็บข้อมูลบนคลาวด์อย่าง MinIO, AWS S3 หรือ Google Cloud Storage ก็ทำได้ง่ายผ่านการกำหนดค่าเพียงสามบรรทัดเท่านั้น
ในแง่ของการประมวลผล Greenfinger 2.0 ไม่มีกระบวนการกลางหรือตัวจัดการคิว (Coordinator) ในเส้นทางการดึงข้อมูล แต่ละโหนดจะทำงานร่วมกันแบบกระจายศูนย์ โหนด A อาจพบ URL ใหม่และส่งให้โหนด C เป็นผู้จัดการ หรือโหนดสามารถเข้าร่วมและออกจากระบบได้ทันทีกลางคันระหว่างการครอว์ล การสิ้นสุดการทำงานจะถูกตรวจสอบร่วมกันผ่านตัวนับที่แชร์ไว้โดยอ้างอิงจากขนาดการดึงสูงสุด (maxFetchSize) และระยะเวลา ทำให้ปัญหาโหนดหัวหน้าเสียชีวิตกลางคันแล้วทำให้กระบวนการค้างเติ่งไม่เกิดขึ้นอีกต่อไป
"Query: what happens when a star runs out of fuel . Top answer: the supernova remnants page, which never contains that sentence."
Greenfinger Documentation
การที่ระบบสามารถค้นหาเจอหน้าเว็บที่ตรงกับความหมายของคำถาม แม้ว่าประโยคนั้นจะไม่ได้ปรากฏอยู่บนหน้าเว็บเพจเลย ถือเป็นจุดแข็งของการประยุกต์ใช้โมเดลเวกเตอร์และการฝังตัว (Embeddings) ร่วมกับเครื่องมือค้นหาสมัยใหม่ ซึ่งช่วยแก้ปัญหาข้อจำกัดของระบบจับคู่คำแบบดั้งเดิมที่มักพลาดข้อมูลสำคัญหากผู้ใช้จำคีย์เวิร์ดตรงๆ ไม่ได้
ระบบรองรับการอ่านเอกสารหลากหลายรูปแบบ ทั้งข้อความ, Markdown และ CSV ในตัว พร้อมรองรับ PDF, Word และ Excel ผ่านการเพิ่มการตั้งค่าทรัพยากร โมเดลการฝังตัวทำงานในเครื่องแบบท้องถิ่นโดยไม่ต้องสมัครใช้งานบัญชีใดๆ โดยใช้ multilingual-e5-small สำหรับข้อความ และ SigLIP 2 สำหรับรูปภาพผ่าน ONNX ส่วนหน้าเว็บอินเทอร์เฟซพัฒนาด้วย Angular 21 พร้อม Signal และ Material 3 เชื่อมต่อกับ REST endpoints เดียวกันกับที่โค้ดของผู้ใช้งานเรียกใช้
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น