|
Krotos Modules 3
|
#include <hnswalg.h>
Classes | |
| struct | CompareByFirst |
Public Member Functions | |
| HierarchicalNSW (SpaceInterface< dist_t > *) | |
| HierarchicalNSW (SpaceInterface< dist_t > *s, const std::string &location, bool nmslib=false, size_t max_elements=0) | |
| HierarchicalNSW (SpaceInterface< dist_t > *s, size_t max_elements, size_t M=16, size_t ef_construction=200, size_t random_seed=100) | |
| ~HierarchicalNSW () | |
| labeltype | getExternalLabel (tableint internal_id) const |
| void | setExternalLabel (tableint internal_id, labeltype label) const |
| labeltype * | getExternalLabeLp (tableint internal_id) const |
| char * | getDataByInternalId (tableint internal_id) const |
| int | getRandomLevel (double reverse_size) |
| std::priority_queue< std::pair< dist_t, tableint >, std::vector< std::pair< dist_t, tableint > >, CompareByFirst > | searchBaseLayer (tableint ep_id, const void *data_point, int layer) |
| template<bool has_deletions, bool collect_metrics = false> | |
| std::priority_queue< std::pair< dist_t, tableint >, std::vector< std::pair< dist_t, tableint > >, CompareByFirst > | searchBaseLayerST (tableint ep_id, const void *data_point, size_t ef) const |
| void | getNeighborsByHeuristic2 (std::priority_queue< std::pair< dist_t, tableint >, std::vector< std::pair< dist_t, tableint > >, CompareByFirst > &top_candidates, const size_t M) |
| linklistsizeint * | get_linklist0 (tableint internal_id) const |
| linklistsizeint * | get_linklist (tableint internal_id, int level) const |
| linklistsizeint * | get_linklist_at_level (tableint internal_id, int level) const |
| tableint | mutuallyConnectNewElement (const void *, tableint cur_c, std::priority_queue< std::pair< dist_t, tableint >, std::vector< std::pair< dist_t, tableint > >, CompareByFirst > &top_candidates, int level, bool isUpdate) |
| void | setEf (size_t ef) |
| std::priority_queue< std::pair< dist_t, tableint > > | searchKnnInternal (void *query_data, int k) |
| void | resizeIndex (size_t new_max_elements) |
| void | saveIndex (const std::string &location) |
| void | loadIndex (const std::string &location, SpaceInterface< dist_t > *s, bool, size_t max_elements_i=0) |
| template<typename data_t > | |
| std::vector< data_t > | getDataByLabel (labeltype label) const |
| void | markDelete (labeltype label) |
| void | markDeletedInternal (tableint internalId) |
| void | unmarkDelete (labeltype label) |
| void | unmarkDeletedInternal (tableint internalId) |
| bool | isMarkedDeleted (tableint internalId) const |
| unsigned short int | getListCount (linklistsizeint *ptr) const |
| void | setListCount (linklistsizeint *ptr, unsigned short int size) const |
| void | addPoint (const void *data_point, labeltype label) |
| void | updatePoint (const void *dataPoint, tableint internalId, float updateNeighborProbability) |
| void | repairConnectionsForUpdate (const void *dataPoint, tableint entryPointInternalId, tableint dataPointInternalId, int dataPointLevel, int maxLevel) |
| std::vector< tableint > | getConnectionsWithLock (tableint internalId, int level) |
| tableint | addPoint (const void *data_point, labeltype label, int level) |
| std::priority_queue< std::pair< dist_t, labeltype > > | searchKnn (const void *query_data, size_t k) const |
| void | checkIntegrity () |
Public Member Functions inherited from hnswlib::AlgorithmInterface< dist_t > | |
| virtual std::vector< std::pair< dist_t, labeltype > > | searchKnnCloserFirst (const void *query_data, size_t k) const |
| virtual | ~AlgorithmInterface () |
Public Attributes | |
| size_t | max_elements_ |
| size_t | cur_element_count |
| size_t | size_data_per_element_ |
| size_t | size_links_per_element_ |
| size_t | num_deleted_ |
| size_t | M_ |
| size_t | maxM_ |
| size_t | maxM0_ |
| size_t | ef_construction_ |
| double | mult_ |
| double | revSize_ |
| int | maxlevel_ |
| VisitedListPool * | visited_list_pool_ |
| std::mutex | cur_element_count_guard_ |
| std::vector< std::mutex > | link_list_locks_ |
| std::vector< std::mutex > | link_list_update_locks_ |
| tableint | enterpoint_node_ |
| size_t | size_links_level0_ |
| size_t | offsetData_ |
| size_t | offsetLevel0_ |
| char * | data_level0_memory_ |
| char ** | linkLists_ |
| std::vector< int > | element_levels_ |
| size_t | data_size_ |
| size_t | label_offset_ |
| DISTFUNC< dist_t > | fstdistfunc_ |
| void * | dist_func_param_ |
| std::unordered_map< labeltype, tableint > | label_lookup_ |
| std::default_random_engine | level_generator_ |
| std::default_random_engine | update_probability_generator_ |
| std::atomic< long > | metric_distance_computations |
| std::atomic< long > | metric_hops |
| std::mutex | global |
| size_t | ef_ |
Static Public Attributes | |
| static const tableint | max_update_element_locks = 65536 |
| static const unsigned char | DELETE_MARK = 0x01 |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinevirtual |
Implements hnswlib::AlgorithmInterface< dist_t >.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Checks the first 8 bits of the memory to see if the element is marked deleted.
| internalId |
|
inline |
Optional - check if index is ok:
Optional check end
|
inline |
Marks an element with the given label deleted, does NOT really change the current graph.
| label |
|
inline |
Uses the first 8 bits of the memory for the linked list to store the mark, whereas maxM0_ has to be limited to the lower 24 bits, however, still large enough in almost all cases.
| internalId |
|
inline |
|
inline |
|
inline |
|
inlinevirtual |
Implements hnswlib::AlgorithmInterface< dist_t >.
|
inline |
|
inline |
|
inlinevirtual |
Implements hnswlib::AlgorithmInterface< dist_t >.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Remove the deleted mark of the node, does NOT really change the current graph.
| label |
|
inline |
Remove the deleted mark of the node.
| internalId |
|
inline |
| size_t hnswlib::HierarchicalNSW< dist_t >::cur_element_count |
| std::mutex hnswlib::HierarchicalNSW< dist_t >::cur_element_count_guard_ |
| char* hnswlib::HierarchicalNSW< dist_t >::data_level0_memory_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::data_size_ |
|
static |
| void* hnswlib::HierarchicalNSW< dist_t >::dist_func_param_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::ef_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::ef_construction_ |
| std::vector<int> hnswlib::HierarchicalNSW< dist_t >::element_levels_ |
| tableint hnswlib::HierarchicalNSW< dist_t >::enterpoint_node_ |
| DISTFUNC<dist_t> hnswlib::HierarchicalNSW< dist_t >::fstdistfunc_ |
| std::mutex hnswlib::HierarchicalNSW< dist_t >::global |
| std::unordered_map<labeltype, tableint> hnswlib::HierarchicalNSW< dist_t >::label_lookup_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::label_offset_ |
| std::default_random_engine hnswlib::HierarchicalNSW< dist_t >::level_generator_ |
| std::vector<std::mutex> hnswlib::HierarchicalNSW< dist_t >::link_list_locks_ |
| std::vector<std::mutex> hnswlib::HierarchicalNSW< dist_t >::link_list_update_locks_ |
| char** hnswlib::HierarchicalNSW< dist_t >::linkLists_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::M_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::max_elements_ |
|
static |
| int hnswlib::HierarchicalNSW< dist_t >::maxlevel_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::maxM0_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::maxM_ |
|
mutable |
|
mutable |
| double hnswlib::HierarchicalNSW< dist_t >::mult_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::num_deleted_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::offsetData_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::offsetLevel0_ |
| double hnswlib::HierarchicalNSW< dist_t >::revSize_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::size_data_per_element_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::size_links_level0_ |
| size_t hnswlib::HierarchicalNSW< dist_t >::size_links_per_element_ |
| std::default_random_engine hnswlib::HierarchicalNSW< dist_t >::update_probability_generator_ |
| VisitedListPool* hnswlib::HierarchicalNSW< dist_t >::visited_list_pool_ |