นี่เป็นห้องสมุดพื้นฐานของอัลกอริทึม ANNS SOTA มันถูกเขียนขึ้นใน Libarary มาตรฐาน C ++/C ++ และสามารถใช้ในการสร้างและสอบถามดัชนีของคะแนนในพื้นที่มิติสูง ห้องสมุดมีอัลกอริทึมที่หลากหลายสำหรับการสร้างและสอบถามดัชนี ห้องสมุดได้รับการออกแบบให้ใช้งานง่ายและให้ประสิทธิภาพที่ค่อนข้างสูง
เป็นเครื่องมือที่มีประโยชน์มากสำหรับคุณในการสร้าง Alogrithm ดัชนี Anns ของคุณเองโดยไม่ต้องใช้ความพยายามมากเกินไป
นี่คือตัวอย่างของวิธีการใช้ไลบรารี ANNS เพื่อสร้างและสอบถามดัชนี
DataSetWrapper< data_t > base, query;
GroundTruth gt;
base.load( " data/sift-128-euclidean.train.fvecs " );
query.load( " data/sift-128-euclidean.test.fvecs " );
gt.load( " data/sift-128-euclidean.cover.uniform-0-1.ivecs " );
const size_t k = 1 ;
utils::Timer timer;
// build index
HNSW< data_t , metrics::euclidean> index ( 32 , 128 );
index.set_num_threads( 24 );
timer.start();
index.build(base);
timer.stop();
cout << " Build time: " << timer.get() << endl;
// query with different parameters
ofstream out ( " hnsw_postfilter.csv " );
for ( size_t ef = 1 ; ef <= 128 ; ef++)
{
timer. reset ();
matrix_id_t knn;
matrix_di_t dis;
timer. start ();
index . search (query, k, ef, knn, dis);
timer. stop ();
out << timer. get () << " , " << gt. recall (k, knn) << endl;
}ชุดข้อมูลทั้งหมดที่ใช้ในไลบรารีนี้อยู่ใน VECS -Format ซึ่งคุณสามารถดาวน์โหลดได้จากที่นี่ ฉันได้สร้างฐานเฟรมเวิร์กบนเบนช์มาร์กเพื่อดาวน์โหลดชุดข้อมูลและแปลงเป็น VECS -Format คุณสามารถค้นหารหัสในชุดข้อมูล Anns/
หากคุณมีความสนใจในการพัฒนาเดลต้าของอัลกอริทึม Ann คุณสามารถหายใจจากชั้นเรียนที่ใช้ดัชนีและใช้อัลกอริทึมของคุณเองเพื่อรักษา API ดั้งเดิม ตัวอย่างเช่น
template < typename data_t , typename label_t , float (*distance)( const data_t *, const data_t *, size_t )>
class PostFilterHCNNG : public HCNNG < data_t , distance>
/* ... */