addItemsCol
, getAllNNsCol
and getAllNNsListCol
are the column-based equivalents of addItems
, getAllNNs
and getAllNNsList
, respectively. Note that the returned nearest neighbor data from getAllNNsCol
and getAllNNsListCol
are also stored by column, i.e. the matrices have dimensions k x n
where k
is the number of neighbors, and n
the number of items in the data being searched.byrow
has been added to hnsw_knn
, hnsw_build
and hnsw_search
. By default this is set to TRUE
and indicates that the items in the input matrix are found in each row. To pass column-stored items, set byrow = FALSE
. Any matrices returned by hnsw_search
and hnsw_knn
will now follow the convention provided by the value of byrow
: i.e. if byrow = FALSE
, the matrices contain nearest neighbor information in each column.getItems
, which returns a matrix of the data vectors in the index with the specified integer identifiers. From a feature request made by d4tum (https://github.com/jlmelville/rcpphnsw/issues/18).progress
parameter in the functional interface no longer does anything. When verbose = TRUE
, a progress bar is no longer shown.setNumThreads
method if using the object-based API, and the n_threads
parameter in the hnsw_*
function API. For finer control, a setGrainSize
and grain_size
option is also available in the object and function interface respectively. Thank you to Dmitriy Selivanov for a lot of the work on this.verbose = TRUE
now has incurs substantially less computational overhead associated with calculating the progress bar. Thank you to Samuel Granjeaud for spotting the problem and coming up with various solutions.progress
. By default this is set to "bar"
and will show the progress bar when verbose = TRUE
. If you want a more terse output, set progress = NULL
. progress = NULL
will eventually be the default setting: for now, verbose = TRUE
will get you the progress bar by default for backwards compatibility.markDeleted
, that will remove an object from being retrieved from the index.resizeIndex
, that allows the index to be increased without having to save and reload the index.size
is available for the index objects and reports the number of items added to the index.hnsw_search
would stop
if the number of rows in the input matrix was smaller than k
. This check has been removed. Note that the correct behavior is to ensure that k
is smaller than or equal to index$size()
where index
is the index you are searching. Because the size()
method is new to this version, to preserve compatibility with old indexes, this check hasn’t been added to hnsw_search
. If this matters to you, manually compare index$size()
with k
before running hnsw_search
. An error will be thrown if k
neighbors can’t be found in the index. Thank you to Yuxing Liao for spotting this and the pull request to remove the check.Initial release.