LamentSearch.jl เป็นห้องสมุดสำหรับการค้นหาเพื่อนบ้านที่ใกล้ที่สุด โดยเฉพาะอย่างยิ่งมันมีการใช้งานสำหรับ SearchGraph, เป็นดัชนีการค้นหาที่รวดเร็วและยืดหยุ่นโดยใช้ฟังก์ชั่นการวัดใด ๆ มันถูกออกแบบมาเพื่อรองรับมัลติเธรดในฟังก์ชั่นและโครงสร้างส่วนใหญ่
แพ็คเกจมีดัชนีต่อไปนี้:
ParallelExhaustiveSearch : ดัชนีการค้นหาแรงเดรัจฉานที่แต่ละแบบสอบถามได้รับการแก้ไขโดยใช้เธรดที่มีอยู่ทั้งหมดExhaustiveSearch : ดัชนีการค้นหาแรงเดรัจฉานแต่ละแบบสอบถามได้รับการแก้ไขโดยใช้เธรดเดียวSearchGraph : ดัชนีการค้นหาโดยประมาณพร้อมการก่อสร้างแบบขนานชุดฟังก์ชันหลักคือ:
search : แก้คำถามเดียวsearchbatch : แก้ชุดการสืบค้นallknn : คำนวณไฟล์ neardup : ลบข้อมูลใกล้ชิดจากชุดข้อมูลเมตริกclosestpair : คำนวณคู่ที่ใกล้ที่สุดในชุดข้อมูลเมตริกคำจำกัดความที่แม่นยำของฟังก์ชั่นเหล่านี้และชุดฟังก์ชันและโครงสร้างที่สมบูรณ์สามารถพบได้ในเอกสารประกอบ
ขณะนี้มีแพ็คเกจหลายอย่างที่อุทิศให้กับการค้นหาเพื่อนบ้านที่ใกล้ที่สุดเช่นเรามี NearestNeighbors.jl กับ neumnneighbors.jl, RegionTrees.jl และ JuliaNeighbors ใช้โครงสร้างการค้นหาเช่น KD-Trees, ต้นบอล, Quadtrees, Octrees, BK-Trees, VP-Tree และโครงสร้างหลายมิติและ metric โครงสร้างเหล่านี้ทำงานได้ค่อนข้างดีสำหรับข้อมูลมิติต่ำเนื่องจากได้รับการออกแบบมาเพื่อแก้ปัญหาการสืบค้นความคล้ายคลึงกันที่แน่นอน
มีแพ็คเกจหลายอย่างที่ทำการค้นหาความคล้ายคลึงกันโดยประมาณเช่น Rayuela.jl โดยใช้แผนการเชิงปริมาณผลิตภัณฑ์ wrapper สำหรับห้องสมุด FAISS Faiss.jl ห้องสมุด FAISS ให้การใช้งานที่มีประสิทธิภาพสูงของแผนการเชิงปริมาณผลิตภัณฑ์และแผนการแฮชที่ไวต่อท้องถิ่นพร้อมกับการใช้งานด้านอุตสาหกรรมของดัชนี HNSW NearestNeighborDescent.jl jl ใช้อัลกอริทึมการค้นหาที่อยู่เบื้องหลัง pynndescent
แพ็คเกจ SimilaritySearch.jl พยายามที่จะเสริมสร้างระบบนิเวศด้วยโครงสร้างการค้นหาและอัลกอริธึมที่ออกแบบมาเพื่อใช้ประโยชน์จากระบบมัลติเธรดและคุณสมบัติการสร้างอัตโนมัติที่เป็นเอกลักษณ์ซึ่งทำให้การใช้งานของผู้ปฏิบัติงานง่ายขึ้น คุณสมบัติเหล่านี้มีการดำเนินการอย่างรัดกุมและมีประสิทธิภาพเนื่องจากพลวัตการเขียนโปรแกรมของ Julia การเขียนโปรแกรมและประสิทธิภาพ เกี่ยวกับลักษณะการปฏิบัติงานเวลาการก่อสร้างจะลดลงอย่างมากเมื่อเทียบกับวิธีการที่คล้ายกันโดยไม่ลดประสิทธิภาพการค้นหาหรือคุณภาพผลลัพธ์
คุณสามารถติดตั้งแพ็คเกจดังนี้
] add SimilaritySearch . jlนอกจากนี้คุณสามารถเรียกใช้ชุดการทดสอบได้ดังนี้
] test SimilaritySearchโปรดดูตัวอย่าง คุณจะพบรายการสมุดบันทึก Jupyter และ Pluto และสคริปต์บางส่วนที่เป็นตัวอย่างของการใช้งาน
ยินดีต้อนรับการมีส่วนร่วม กรุณากรอกคำขอดึงสำหรับการจัดทำเอกสารและการใช้งานการมีส่วนร่วม สำหรับปัญหาโปรดกรอกข้อมูลด้วยข้อมูลที่จำเป็น (ดูด้านล่าง) หากคุณมีวิธีแก้ปัญหาอยู่แล้วโปรดจัดทำคำขอดึงด้วย
รายงานปัญหาในแพ็คเกจซึ่งเป็นตัวอย่างที่ทำซ้ำได้น้อยที่สุด หากปัญหาขึ้นอยู่กับข้อมูลโปรดอย่าลืมให้ข้อมูลที่จำเป็นเพื่อทำซ้ำ
SearchGraph โครงสร้างการค้นหาหลักคือ SearchGraph, เป็นกราฟที่มีคุณสมบัติหลายอย่างซึ่งส่วนใหญ่เกิดจากชุดข้อมูลที่ถูกจัดทำดัชนี ข้อ จำกัด ที่ทราบบางอย่างเกี่ยวข้องกับลักษณะเหล่านี้ ตัวอย่างเช่น:
ต้นฉบับต่อไปนี้อธิบายและเปรียบเทียบดัชนี SearchGraph (แพ็คเกจเวอร์ชัน 0.6 ):
@article{tellezscalable,
title={A scalable solution to the nearest neighbor search problem through local-search methods on neighbor graphs},
author={Tellez, Eric S and Ruiz, Guillermo and Chavez, Edgar and Graff, Mario},
journal={Pattern Analysis and Applications},
pages={1--15},
publisher={Springer}
}
อัลกอริทึมปัจจุบัน (เวอร์ชัน 0.8 และ 0.9 ) อธิบายและเปรียบเทียบในต้นฉบับต่อไปนี้:
@misc{tellez2022similarity,
title={Similarity search on neighbor's graphs with automatic Pareto optimal performance and minimum expected quality setups based on hyperparameter optimization},
author={Eric S. Tellez and Guillermo Ruiz},
year={2022},
eprint={2201.07917},
archivePrefix={arXiv},
primaryClass={cs.IR}
}
แพ็คเกจนี้อธิบายไว้ในกระดาษ Joss:
Eric S. Tellez และ Guillermo Ruiz
SimilaritySearch.jl: ดัชนีเพื่อนบ้านที่ใกล้ที่สุดสำหรับจูเลีย วารสารซอฟต์แวร์โอเพ่นซอร์ส https://doi.org/10.21105/joss.04442
อัลกอริทึมของรุ่นนี้เหมือนกับ v0.8 แต่ทำลายความเข้ากันได้ของ API:
Polyester เพื่อจัดการมัลติเธรดแทนเธรด@เธรดallknn รักษาการอ้างอิงตนเองเพื่อทำให้อัลกอริทึมง่ายขึ้นและปรับปรุงประสิทธิภาพ ( allknn ใน v0.8 ลบการอ้างอิงตนเองโดยอัตโนมัติ)คนอื่น:
SearchGraph กราฟtimedsearchbatch ทำให้ง่ายต่อการปรับโครงสร้าง SearchGraph ให้เป็นเวิร์กโหลดและแอปพลิเคชันที่แตกต่างกัน ตัวอย่างเช่น
โปรดดูที่ https://github.com/sadit/similaritysearchdemos และ https://github.com/sadit/similaritysearch.jl/blob/main/test/testsearchgraph.jl สำหรับตัวอย่างการทำงาน
มันแนะนำ refactoring ที่สำคัญ โดยเฉพาะอย่างยิ่งมันทำให้การใช้วัตถุบริบทอย่างชัดเจนสำหรับฟังก์ชั่นส่วนใหญ่ นอกจากนี้ยังแนะนำขั้นตอนการบันทึกอย่างง่าย อย่างไรก็ตามเรารักษาความเข้ากันได้ในฟังก์ชั่นสาธารณะจำนวนมากโดยใช้การใช้วัตถุบริบทเริ่มต้นโดยนัย