ANNS
1.0.0
이것은 Anns Sota 알고리즘의 매우 기본적인 라이브러리입니다. C ++/C ++ 표준 Libarary로 작성되었으며 고차원 공간의 점수를 구축하고 쿼리하는 데 사용할 수 있습니다. 라이브러리는 인덱스를 구축하고 쿼리하기위한 다양한 알고리즘을 제공합니다. 이 라이브러리는 사용하기 쉽고 비교적 고성능을 제공하도록 설계되었습니다.
너무 많은 노력없이 자신의 Anns Index Alogrithm을 구축하는 데 매우 유용한 도구입니다.
이것은 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에 있으며 여기에서 다운로드 할 수 있습니다. Ann -Benchmark에 프레임 워크 기반을 구축하여 데이터 세트를 다운로드하여 VECS -format로 변환했습니다. Anns/DataSet에서 코드를 찾을 수 있습니다.
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>
/* ... */