View Source HNSWLib.BFIndex (hnswlib v0.1.2)

Documentation for HNSWLib.BFIndex.

Summary

Functions

Add items to the index.

Delete vectors with the given labels from the index.

Query the index with a single vector or a list of vectors.

Construct a new BFIndex

Save current index to disk.

Functions

Link to this function

add_items(self, data, opts \\ [])

View Source
@spec add_items(
  %HNSWLib.BFIndex{dim: term(), reference: term(), space: term()},
  Nx.Tensor.t(),
  [
    {:ids, Nx.Tensor.t() | [non_neg_integer()] | nil}
  ]
) :: :ok | {:error, String.t()}

Add items to the index.

Positional Parameters
  • data: Nx.Tensor.t().

    Data to add to the index.

Keyword Parameters
  • ids: Nx.Tensor.t() | [non_neg_integer()] | nil.

    IDs to assign to the data.

    If nil, IDs will be assigned sequentially starting from 0.

    Defaults to nil.

Link to this function

delete_vector(self, label)

View Source

Delete vectors with the given labels from the index.

Link to this function

knn_query(self, query, opts \\ [])

View Source
@spec knn_query(
  %HNSWLib.BFIndex{dim: term(), reference: term(), space: term()},
  Nx.Tensor.t() | binary() | [binary()],
  [{:k, pos_integer()}]
) :: :ok | {:error, String.t()}

Query the index with a single vector or a list of vectors.

Positional Parameters
  • query: Nx.Tensor.t() | binary() | [binary()].

    A vector or a list of vectors to query.

    If query is a list of vectors, the vectors must be of the same dimension.

Keyword Paramters
  • k: pos_integer().

    Number of nearest neighbors to return.

Link to this function

load_index(space, dim, path, opts \\ [])

View Source
@spec load_index(:cosine | :ip | :l2, non_neg_integer(), Path.t(), [
  {:max_elements, non_neg_integer()}
]) ::
  {:ok, %HNSWLib.BFIndex{dim: term(), reference: term(), space: term()}}
  | {:error, String.t()}

Load index from disk.

Positional Parameters
  • space: :cosine | :ip | :l2.

    An atom that indicates the vector space. Valid values are

    • :cosine, cosine space
    • :ip, inner product space
    • :l2, L2 space
  • dim: non_neg_integer().

    Number of dimensions for each vector.

  • path: Path.t().

    Path to load the index from.

Keyword Parameters
  • max_elements: non_neg_integer().

    Maximum number of elements to load from the index.

    If set to 0, all elements will be loaded.

    Defaults to 0.

Link to this function

new(space, dim, max_elements)

View Source
@spec new(:cosine | :ip | :l2, non_neg_integer(), non_neg_integer()) ::
  {:ok, %HNSWLib.BFIndex{dim: term(), reference: term(), space: term()}}
  | {:error, String.t()}

Construct a new BFIndex

Positional Parameters
  • space: :cosine | :ip | :l2.

    An atom that indicates the vector space. Valid values are

    • :cosine, cosine space
    • :ip, inner product space
    • :l2, L2 space
  • dim: non_neg_integer().

    Number of dimensions for each vector.

  • max_elements: non_neg_integer().

    Number of maximum elements.

@spec save_index(
  %HNSWLib.BFIndex{dim: term(), reference: term(), space: term()},
  Path.t()
) ::
  {:ok, integer()} | {:error, String.t()}

Save current index to disk.

Positional Parameters
  • path: Path.t().

    Path to save the index to.