ระบบเครื่องมือค้นหา
ระบบเครื่องมือค้นหาที่ปรับขนาดได้ซึ่งรองรับทั้งความสามารถในการค้นหาภาพและข้อความโดยใช้ความคล้ายคลึงกันของเวกเตอร์

การค้นหาภาพ

การค้นหาข้อความ
สถาปัตยกรรมระบบ

สถาปัตยกรรมระบบ
คุณสมบัติ
รายละเอียดทางเทคนิค
ไปป์ไลน์การค้นหารูปภาพ
ท่อส่งข้อความ
การประมวลผลและการวิเคราะห์ข้อความ :
- นักวิเคราะห์ Elasticsearch ที่กำหนดเอง:
- เครื่องวิเคราะห์คำหลักที่มีตัวพิมพ์เล็กและการพับ ASCII
- Edge Ngram Analyzer สำหรับการเติมข้อความอัตโนมัติ (min_gram: 2, max_gram: 5)
- เครื่องวิเคราะห์มาตรฐานสำหรับการค้นหาข้อความแบบเต็ม
- ตัวกรองอักขระและโทเค็น
- สนับสนุนข้อความเวียดนาม
วิธีการค้นหา :
Autocomplete (search-as-you-type) :
- Edge Ngram Tokenizer สำหรับการจับคู่คำนำหน้า
- Suggester เสร็จสมบูรณ์แบบกำหนดเอง
- ปรับให้เหมาะสมสำหรับคำแนะนำทันที
- อักขระขั้นต่ำ 2 อักขระสำหรับคำแนะนำ
การค้นหาข้อความแบบเต็ม :
- แบบสอบถามหลายนัดข้ามฟิลด์:
- การจับคู่ฟัซซี่กับความคลุมเครืออัตโนมัติ
- การให้คะแนนแบบกำหนดเองตามตัวชี้วัดทางธุรกิจ:
- อัตราการขาย (เปอร์เซ็นต์ส่วนลด)
- ปริมาณการขาย (> โบนัสการขาย 1,000 รายการ)
- การทำให้เป็นมาตรฐานราคารายการ
การเพิ่มประสิทธิภาพการค้นหา :
- เทมเพลตการให้คะแนนแบบกำหนดเองโดยใช้สคริปต์ Elasticsearch
- การจัดทำดัชนีแบบแบทช์สำหรับการบริโภคข้อมูลที่มีประสิทธิภาพ
- การดำเนินการค้นหาแบบอะซิงโครนัส
- ขนาดผลลัพธ์ที่กำหนดค่าได้
- การจัดการข้อผิดพลาดและการบันทึก
คุณสมบัติ ElasticSearch :
- การแมปดัชนีที่กำหนดเอง
- หลายประเภทและเครื่องวิเคราะห์
- สืบค้นคะแนนฟังก์ชั่น
- การให้คะแนนสคริปต์
- การดำเนินการจัดทำดัชนีจำนวนมาก
สแต็คเทคโนโลยี
การให้บริการแบบจำลอง
- เซิร์ฟเวอร์การอนุมาน Nvidia Triton :
- เอกสารประกอบเซิร์ฟเวอร์ Triton
- การกำหนดเวอร์ชันแบบจำลองและการทดสอบ A/B
- การแบตช์แบบไดนามิก
- การดำเนินการแบบจำลองพร้อมกัน
- การเพิ่มประสิทธิภาพ GPU ด้วย tensorrt
- รูปแบบการแปลงรูปแบบโมเดล:
- pytorch → onnx → tensorrt
โครงสร้างพื้นฐาน
คอนเทนเนอร์ :
- Docker Multi-Stage Builds
- ภาพคอนเทนเนอร์ที่ปรับให้เหมาะสม
- นักเทียบท่าเขียนเพื่อการพัฒนา
orchestration :
- การปรับใช้ Kubernetes
- ชาร์ต Helm สำหรับการจัดการแพ็คเกจ
- การปรับสภาพแบบพ็อดแนวนอน
- การจัดการทรัพยากรและการปรับขนาด
การตรวจสอบและการบันทึก :
- โพรโพรติก
- แดชบอร์ด Grafana
- การติดตามแบบกระจาย
- การตรวจสอบประสิทธิภาพ
เริ่มต้น
- โคลนที่เก็บ:
git clone https://github.com/vectornguyen76/search-engine-system.git
- เริ่มบริการโดยใช้ Docker Compose:
- เข้าถึงบริการ:
- การค้นหารูปภาพ UI: http: // localhost: 8501
- การค้นหาข้อความ UI: http: // localhost: 8502
- Triton Server: http: // localhost: 8000
การพัฒนา
CI/CD Pipeline
คุณภาพรหัส
- Flake8 สำหรับ Python Code Linting
- พิมพ์คำแนะนำและเอกสารประกอบ
- การทดสอบอัตโนมัติในไปป์ไลน์ CI/CD
- กระบวนการตรวจสอบรหัส
การบริจาค
- แยกที่เก็บ
- สร้างสาขาคุณสมบัติของคุณ
- กระทำการเปลี่ยนแปลงของคุณ
- ผลักไปที่สาขา
- สร้างคำขอดึงใหม่
ใบอนุญาต
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT - ดูไฟล์ใบอนุญาตสำหรับรายละเอียด