Skip to content

@saehrimnir/druidjs / Annoy

Class: Annoy<T>

Defined in: knn/Annoy.js:45

Annoy-style (Approximate Nearest Neighbors Oh Yeah) implementation using Random Projection Trees.

This implementation builds multiple random projection trees where each tree randomly selects two points and splits the space based on a hyperplane equidistant between them.

Key features:

  • Multiple random projection trees for better recall
  • Each tree uses random hyperplanes for splitting
  • Priority queue search for better recall
  • Combines results from all trees

Best suited for:

  • High-dimensional data
  • Approximate nearest neighbor search
  • Large datasets
  • When high recall is needed with approximate methods

Template

See

Extends

  • KNN

Type Parameters

Type ParameterDescription
T extends number[] | Float64Array

Constructors

Constructor

ts
new Annoy<T>(elements: T[], parameters?: ParametersAnnoy): Annoy<T>;

Defined in: knn/Annoy.js:52

Creates a new Annoy-style index with random projection trees.

Parameters

ParameterTypeDescription
elementsT[]Elements to index
parameters?ParametersAnnoyConfiguration parameters

Returns

Annoy<T>

Overrides

ts
KNN.constructor

Properties

PropertyTypeInherited fromDefined in
_elementsT[]KNN._elementsknn/KNN.js:14
_maxPointsPerLeafnumber-knn/Annoy.js:69
_metricMetric-knn/Annoy.js:67
_numTreesnumber-knn/Annoy.js:68
_parametersParametersAnnoyKNN._parametersknn/KNN.js:16
_randomizerRandomizer-knn/Annoy.js:71
_seednumber-knn/Annoy.js:70
_type"array" | "typed"KNN._typeknn/KNN.js:18

Accessors

num_nodes

Get Signature

ts
get num_nodes(): number;

Defined in: knn/Annoy.js:101

Get the total number of nodes in all trees.

Returns

number


num_trees

Get Signature

ts
get num_trees(): number;

Defined in: knn/Annoy.js:93

Get the number of trees in the index.

Returns

number

Methods

add()

ts
add(elements: T[]): Annoy<T>;

Defined in: knn/Annoy.js:124

Add elements to the Annoy index.

Parameters

ParameterTypeDescription
elementsT[]-

Returns

Annoy<T>


ts
search(query: T, k?: number): {
  distance: number;
  element: T;
  index: number;
}[];

Defined in: knn/Annoy.js:279

Search for k approximate nearest neighbors.

Parameters

ParameterTypeDefault valueDescription
queryTundefined-
k?number5-

Returns

{ distance: number; element: T; index: number; }[]

Overrides

ts
KNN.search

search_by_index()

ts
search_by_index(i: number, k?: number): {
  distance: number;
  element: T;
  index: number;
}[];

Defined in: knn/Annoy.js:398

Parameters

ParameterTypeDefault valueDescription
inumberundefined-
k?number5-

Returns

{ distance: number; element: T; index: number; }[]

Overrides

ts
KNN.search_by_index

search_index()

ts
search_index(i: number, k?: number): {
  distance: number;
  element: T;
  index: number;
}[];

Defined in: knn/Annoy.js:410

Alias for search_by_index for backward compatibility.

Parameters

ParameterTypeDefault valueDescription
inumberundefinedIndex of the query element
k?number5Number of nearest neighbors to return

Returns

{ distance: number; element: T; index: number; }[]