Classes | |
| struct | DistanceComputer |
| struct | MinimaxHeap |
| struct | NodeDistCloser |
| to sort pairs of (id, distance) from nearest to fathest or the reverse More... | |
| struct | NodeDistFarther |
Public Types | |
| typedef int | storage_idx_t |
| internal storage of vectors (32 bits: this is expensive) | |
| typedef Index::idx_t | idx_t |
| Faiss results are 64-bit. | |
|
typedef std::pair< float, storage_idx_t > | Node |
Public Member Functions | |
| void | set_default_probas (int M, float levelMult) |
| void | set_nb_neighbors (int level_no, int n) |
| set nb of neighbors for this level (before adding anything) | |
| int | nb_neighbors (int layer_no) const |
| nb of neighbors for this level | |
| int | cum_nb_neighbors (int layer_no) const |
| cumumlative nb up to (and excluding) this level | |
| void | neighbor_range (idx_t no, int layer_no, size_t *begin, size_t *end) const |
| range of entries in the neighbors table of vertex no at layer_no | |
| HNSW (int M=32) | |
| only mandatory parameter: nb of neighbors | |
| int | random_level () |
| pick a random level for a new point | |
| void | fill_with_random_links (size_t n) |
| add n random levels to table (for debugging...) | |
| void | add_links_starting_from (DistanceComputer &ptdis, storage_idx_t pt_id, storage_idx_t nearest, float d_nearest, int level, omp_lock_t *locks, VisitedTable &vt) |
| void | add_with_locks (DistanceComputer &ptdis, int pt_level, int pt_id, std::vector< omp_lock_t > &locks, VisitedTable &vt) |
| int | search_from_candidates (DistanceComputer &qdis, int k, idx_t *I, float *D, MinimaxHeap &candidates, VisitedTable &vt, int level, int nres_in=0) const |
| std::priority_queue< Node > | search_from (const Node &node, DistanceComputer &qdis, int ef, VisitedTable *vt) const |
| void | search (DistanceComputer &qdis, int k, idx_t *I, float *D, VisitedTable &vt) const |
| search interface | |
| void | reset () |
| void | clear_neighbor_tables (int level) |
| void | print_neighbor_stats (int level) const |
| int | prepare_level_tab (size_t n, bool preset_levels=false) |
Static Public Member Functions | |
| static void | shrink_neighbor_list (DistanceComputer &qdis, std::priority_queue< NodeDistFarther > &input, std::vector< NodeDistFarther > &output, int max_size) |
Public Attributes | |
| std::vector< double > | assign_probas |
| assignment probability to each layer (sum=1) | |
| std::vector< int > | cum_nneighbor_per_level |
| std::vector< int > | levels |
| level of each vector (base level = 1), size = ntotal | |
| std::vector< size_t > | offsets |
| std::vector< storage_idx_t > | neighbors |
| storage_idx_t | entry_point |
| entry point in the search structure (one of the points with maximum level | |
| faiss::RandomGenerator | rng |
| int | max_level |
| maximum level | |
| int | efConstruction |
| expansion factor at construction time | |
| int | efSearch |
| expansion factor at search time | |
| int | upper_beam |
| number of entry points in levels > 0. | |
| void faiss::HNSW::add_links_starting_from | ( | DistanceComputer & | ptdis, |
| storage_idx_t | pt_id, | ||
| storage_idx_t | nearest, | ||
| float | d_nearest, | ||
| int | level, | ||
| omp_lock_t * | locks, | ||
| VisitedTable & | vt | ||
| ) |
| void faiss::HNSW::add_with_locks | ( | DistanceComputer & | ptdis, |
| int | pt_level, | ||
| int | pt_id, | ||
| std::vector< omp_lock_t > & | locks, | ||
| VisitedTable & | vt | ||
| ) |
| int faiss::HNSW::search_from_candidates | ( | DistanceComputer & | qdis, |
| int | k, | ||
| idx_t * | I, | ||
| float * | D, | ||
| MinimaxHeap & | candidates, | ||
| VisitedTable & | vt, | ||
| int | level, | ||
| int | nres_in = 0 |
||
| ) | const |
| void faiss::HNSW::set_default_probas | ( | int | M, |
| float | levelMult | ||
| ) |
|
static |
| std::vector<int> faiss::HNSW::cum_nneighbor_per_level |
| std::vector<storage_idx_t> faiss::HNSW::neighbors |
| std::vector<size_t> faiss::HNSW::offsets |
1.8.5