@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
- https://github.com/spotify/annoy
- https://erikbern.com/2015/09/24/nearest-neighbors-and-vector-models-epilogue-curse-of-dimensionality.html
Extends
KNN
Type Parameters
| Type Parameter | Description |
|---|---|
T extends number[] | Float64Array |
Constructors
Constructor
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
| Parameter | Type | Description |
|---|---|---|
elements | T[] | Elements to index |
parameters? | ParametersAnnoy | Configuration parameters |
Returns
Annoy<T>
Overrides
KNN.constructorProperties
| Property | Type | Inherited from | Defined in |
|---|---|---|---|
_elements | T[] | KNN._elements | knn/KNN.js:14 |
_maxPointsPerLeaf | number | - | knn/Annoy.js:69 |
_metric | Metric | - | knn/Annoy.js:67 |
_numTrees | number | - | knn/Annoy.js:68 |
_parameters | ParametersAnnoy | KNN._parameters | knn/KNN.js:16 |
_randomizer | Randomizer | - | knn/Annoy.js:71 |
_seed | number | - | knn/Annoy.js:70 |
_type | "array" | "typed" | KNN._type | knn/KNN.js:18 |
Accessors
num_nodes
Get Signature
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
get num_trees(): number;Defined in: knn/Annoy.js:93
Get the number of trees in the index.
Returns
number
Methods
add()
add(elements: T[]): Annoy<T>;Defined in: knn/Annoy.js:124
Add elements to the Annoy index.
Parameters
| Parameter | Type | Description |
|---|---|---|
elements | T[] | - |
Returns
Annoy<T>
search()
search(query: T, k?: number): {
distance: number;
element: T;
index: number;
}[];Defined in: knn/Annoy.js:279
Search for k approximate nearest neighbors.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
query | T | undefined | - |
k? | number | 5 | - |
Returns
{ distance: number; element: T; index: number; }[]
Overrides
KNN.searchsearch_by_index()
search_by_index(i: number, k?: number): {
distance: number;
element: T;
index: number;
}[];Defined in: knn/Annoy.js:398
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
i | number | undefined | - |
k? | number | 5 | - |
Returns
{ distance: number; element: T; index: number; }[]
Overrides
KNN.search_by_indexsearch_index()
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
| Parameter | Type | Default value | Description |
|---|---|---|---|
i | number | undefined | Index of the query element |
k? | number | 5 | Number of nearest neighbors to return |
Returns
{ distance: number; element: T; index: number; }[]