ไลบรารี Hann สำหรับการค้นหาเวกเตอร์ในภาษา Go ได้รับความสนใจ แต่ชุมชนเรียกร้องให้มีการทดสอบประสิทธิภาพ

BigGo Editorial Team
ไลบรารี Hann สำหรับการค้นหาเวกเตอร์ในภาษา Go ได้รับความสนใจ แต่ชุมชนเรียกร้องให้มีการทดสอบประสิทธิภาพ

ชุมชนโอเพนซอร์สได้แสดงความสนใจใน Hann ซึ่งเป็นไลบรารีใหม่สำหรับการค้นหาเพื่อนบ้านที่ใกล้เคียงโดยประมาณ (ANN) ที่มีประสิทธิภาพสูงสำหรับภาษา Go ในขณะเดียวกันก็ชี้ให้เห็นถึงช่องว่างที่สำคัญ: การขาดการเปรียบเทียบประสิทธิภาพกับโซลูชันการค้นหาเวกเตอร์ที่มีอยู่แล้ว

ชุมชนเรียกร้องการเปรียบเทียบประสิทธิภาพ

ผู้ใช้ที่ตรวจสอบความสามารถของ Hann ได้ชี้ให้เห็นอย่างสม่ำเสมอถึงความจำเป็นในการทดสอบประสิทธิภาพโดยเปรียบเทียบกับโซลูชันการค้นหาเวกเตอร์ที่มีอยู่แล้ว ผู้แสดงความคิดเห็นหลายคนได้กล่าวถึงการขาดข้อมูลประสิทธิภาพที่เปรียบเทียบ Hann กับทางเลือกยอดนิยมอย่าง Redis, Vertex, Elasticsearch และ FAISS ข้อเสนอแนะนี้เน้นย้ำถึงความต้องการทั่วไปในชุมชนเทคนิค: ตัวชี้วัดประสิทธิภาพที่เป็นรูปธรรมซึ่งช่วยให้นักพัฒนาสามารถตัดสินใจอย่างมีข้อมูลเมื่อเลือกเครื่องมือสำหรับโปรเจกต์ของพวกเขา

ไลบรารีที่ยอดเยี่ยม... ตอนนี้มีวิธีที่เป็นเนทีฟในภาษา Go สำหรับสร้างเวกเตอร์จากข้อความไหม?

ความคิดเห็นข้างต้นเน้นให้เห็นอีกแง่มุมที่น่าสนใจของการสนทนา - ระบบนิเวศรอบการค้นหาเวกเตอร์ใน Go ในขณะที่ Hann มอบความสามารถในการค้นหา ผู้ใช้ยังมองหาเครื่องมือเสริมเพื่อสร้างเอมเบดดิงจากข้อความ โดยมีข้อเสนอแนะเช่น Ollama ที่ถูกนำเสนอเป็นโซลูชันที่เป็นไปได้

ความกังวลของชุมชน

  • ขาดการเปรียบเทียบประสิทธิภาพกับโซลูชันที่มีอยู่แล้ว ( Redis , Vertex , Elastic , FAISS )
  • การพึ่งพาคอมไพเลอร์ภาษา C แทนที่จะเป็นการพัฒนาด้วย Go ล้วน
  • ประสิทธิภาพการทำงานของการใช้ HNSW ที่ยังไม่เป็นที่ทราบแน่ชัด
  • การบูรณาการกับเครื่องมือสร้างเวกเตอร์สำหรับข้อความ

แนวทางการพัฒนาสร้างคำถาม

กลยุทธ์การพัฒนาของ Hann ได้จุดประกายการถกเถียงทางเทคนิคในหมู่นักพัฒนา Go ไลบรารีนี้ต้องการคอมไพเลอร์ C หรือ C++ เนื่องจากการใช้คำสั่ง SIMD (AVX) สำหรับการคำนวณระยะทางที่รวดเร็ว ซึ่งถูกนำไปใช้ผ่าน FFI (Foreign Function Interface) ไปยัง C การเลือกการออกแบบนี้ทำให้นักพัฒนาบางคนตั้งคำถามว่าการพัฒนาด้วย Go ล้วนอาจเป็นที่ต้องการมากกว่า โดยผู้แสดงความคิดเห็นคนหนึ่งแนะนำว่าส่วนที่เป็น C อาจถูกเขียนใหม่ในแอสเซมบลีโดยใช้เครื่องมือเช่นไลบรารี avo เพื่อกำจัดการพึ่งพาคอมไพเลอร์ภายนอก

ภาพรวมคุณสมบัติของ Hann

  • ดัชนีที่รองรับ: HNSW (Hierarchical Navigable Small World), PQIVF (Product Quantization Inverted File), RPT (Random Projection Tree)
  • เมตริกระยะทาง: ระยะทางแบบยุคลิด, ยุคลิดกำลังสอง, แมนฮัตตัน และโคไซน์ (HNSW); เฉพาะแบบยุคลิดเท่านั้น (PQIVF, RPT)
  • การพัฒนา: ใช้ภาษา Go ร่วมกับโค้ด C สำหรับการคำนวณระยะทางที่เพิ่มประสิทธิภาพด้วย SIMD (AVX)
  • ความต้องการ: Go 1.21 ขึ้นไป, คอมไพเลอร์ C/C++, CPU ที่รองรับ AVX
  • ความสามารถหลัก: การดำเนินการแบบกลุ่ม, การเก็บข้อมูลถาวรบนดิสก์, เวกเตอร์ที่มีมิติตามต้องการ

ประสิทธิภาพเปรียบเทียบของการพัฒนา HNSW

สมาชิกในชุมชนหลายคนที่มีประสบการณ์ในเทคโนโลยีการค้นหาเวกเตอร์สังเกตว่าไม่ใช่ทุกการพัฒนาของอัลกอริทึม Hierarchical Navigable Small World (HNSW) - หนึ่งในดัชนีที่ Hann รองรับ - จะมีประสิทธิภาพเท่ากัน มีการแบ่งปันการอ้างอิงไปยังเว็บไซต์ ann-benchmarks.com พร้อมคำแนะนำว่า Hann ควรทดสอบประสิทธิภาพการพัฒนา HNSW ของตนเทียบกับรายอื่น และอาจนำเทคนิคจากเวอร์ชันที่มีประสิทธิภาพดีที่สุดมาใช้ สิ่งนี้เน้นย้ำความเป็นจริงที่ละเอียดอ่อนของการพัฒนาอัลกอริทึม ที่แนวทางทางทฤษฎีสามารถให้ประสิทธิภาพในโลกแห่งความเป็นจริงที่แตกต่างกันอย่างมีนัยสำคัญตามรายละเอียดการพัฒนา

Hann เป็นการเพิ่มเติมที่น่าสนใจให้กับระบบนิเวศ Go สำหรับนักพัฒนาที่ทำงานกับความสามารถในการค้นหาเวกเตอร์ ในขณะที่ชุดคุณสมบัติของมันดูครอบคลุม - รองรับประเภทดัชนีหลายแบบรวมถึง HNSW, PQIVF และ RPT พร้อมเมตริกระยะทางที่หลากหลาย - การสนทนาในชุมชนทำให้เห็นชัดว่าข้อมูลประสิทธิภาพเชิงประจักษ์จะมีความสำคัญต่อการนำไปใช้ ในขณะที่การค้นหาเวกเตอร์มีความสำคัญมากขึ้นสำหรับแอปพลิเคชันที่เกี่ยวข้องกับ AI, การเรียนรู้ของเครื่อง และการค้นหาเชิงความหมาย นักพัฒนา Go จะติดตามอย่างใกล้ชิดเพื่อดูว่า Hann จะวัดผลเทียบกับทางเลือกที่มีอยู่แล้วได้อย่างไร

อ้างอิง: Hann