## [[3.0.0](https://github.com/yoshoku/hnswlib-node/compare/v2.1.1...v3.0.0)] - 2024-03-11 - Update dependencies: node-addon-api@8.0.0. - Drop support for Node.js v16.x. - Update dev-dependencies. - Add tests for type definitions. ## [[2.1.1](https://github.com/yoshoku/hnswlib-node/compare/v2.1.0...v2.1.1)] - 2024-02-27 - Fix type definition of `initIndex` method in `HierarchicalNSW` ([#177](https://github.com/yoshoku/hnswlib-node/pull/177)). ## [[2.1.0](https://github.com/yoshoku/hnswlib-node/compare/v2.0.0...v2.1.0)] - 2023-12-16 - Update bundled hnswlib to v0.8.0. - Multi-vector document search and epsilon search, which are added only to the C++ version, are not supported. These features will be supported in future release. ## [[2.0.0](https://github.com/yoshoku/hnswlib-node/compare/v1.4.2...v2.0.0)] - 2023-06-24 - Update dependencies: node-addon-api@7.0.0. - Drop support for Node.js v14.x and v19.x. - Update dev-dependencies. ## [[1.4.2](https://github.com/yoshoku/hnswlib-node/compare/v1.4.1...v1.4.2)] - 2023-03-10 - Add support for cosine space option to constructor of HierarchicalNSW and BruteforceSearch ([#51](https://github.com/yoshoku/hnswlib-node/issues/51)). ```javascript import { HierarchicalNSW } from 'hnswlib-node'; // Setting the spaceName argument to 'cosine'. const index = new HierarchicalNSW('cosine', 3); index.initIndex({ maxElements: 3 }); index.addPoint([1, 2, 3], 1); index.addPoint([4, 5, 6], 2); index.addPoint([7, 8, 9], 3); // Searching based on cosine distance (1 subtract cosine similarity). console.table(index.searchKnn([1, 2, 2], 2)); // ┌───────────┬──────────────────────┬──────────────────────┐ // │ (index) │ 0 │ 1 │ // ├───────────┼──────────────────────┼──────────────────────┤ // │ distances │ 0.012341678142547607 │ 0.018790483474731445 │ // │ neighbors │ 2 │ 3 │ // └───────────┴──────────────────────┴──────────────────────┘ ``` - Update dev-dependencies. ## [[1.4.1](https://github.com/yoshoku/hnswlib-node/compare/v1.4.0...v1.4.1)] - 2023-03-05 - Add `getPoint` function to HierarchicalNSW. ```javascript import { HierarchicalNSW } from 'hnswlib-node'; const index = new HierarchicalNSW('l2', 3); index.initIndex({ maxElements: 2 }); index.addPoint([1, 2, 3], 1); index.addPoint([4, 5, 6], 2); console.log(index.getPoint(1)); // [ 1, 2, 3 ] console.log(index.getPoint(2)); // [ 4, 5, 6 ] ``` - Fix example codes in CHANGELOG. - Update dev-dependencies. ## [[1.4.0](https://github.com/yoshoku/hnswlib-node/compare/v1.3.0...v1.4.0)] - 2023-02-26 - Add development directories to npmignore. - Update dependencies: node-addon-api@6.0.0. - Update and add dev-dependencies. - Fix some config files. ## [[1.3.0](https://github.com/yoshoku/hnswlib-node/compare/v1.2.0...v1.3.0)] - 2023-02-19 - Updete bundled hnswlib to v0.7.0. - Add support for named arguments in `initIndex` of HierarchicalNSW. - Add support for replacing an element marked for deletion with a new element. ```javascript import { HierarchicalNSW } from 'hnswlib-node'; const index = new HierarchicalNSW('l2', 3); index.initIndex({ maxElements: 2 }); index.addPoint([1, 2, 3], 1); index.addPoint([4, 5, 6], 2); index.markDelete(1); // HierarchicalNSW throws the error here since the number of data points has reached maxElements: // Hnswlib Error: The number of elements exceeds the specified limit index.addPoint([6, 5, 4], 3); ``` ```javascript import { HierarchicalNSW } from 'hnswlib-node'; const index = new HierarchicalNSW('l2', 3); // Initizaling the index with `allowReplaceDeleted` set to true. index.initIndex({ maxElements: 2, allowReplaceDeleted: true }); index.addPoint([1, 2, 3], 1); index.addPoint([4, 5, 6], 2); index.markDelete(1); // By setting the third argument (replaceDeleted) to true, HierarchicalNSW does not throw the error // since the newly added datum point will replace the deleted datum point. index.addPoint([6, 5, 4], 3, true); ``` - Add support filtering function by label in `searchKnn` of BruteforeceSearch and HierarchicalNSW. ```javascript import { HierarchicalNSW } from 'hnswlib-node'; const index = new HierarchicalNSW('l2', 3); index.initIndex({ maxElements: 4 }); index.addPoint([1, 2, 3], 1); index.addPoint([1, 3, 3], 2); index.addPoint([1, 2, 3], 3); index.addPoint([1, 3, 3], 4); // setting filter funtion that allows only even labels. const filter = (label: number): boolean => label % 2 == 0; console.table(index.searchKnn([1, 2, 3], 2, filter)); // ┌───────────┬───┬───┐ // │ (index) │ 0 │ 1 │ // ├───────────┼───┼───┤ // │ distances │ 1 │ 1 │ // │ neighbors │ 2 │ 4 │ // └───────────┴───┴───┘ ``` - Remove deprecated functions `loadIndex` and `saveIndex` from BruteforeceSearch and HierarchicalNSW. - Update dev-dependencies. ## [[1.2.0](https://github.com/yoshoku/hnswlib-node/compare/v1.1.0...v1.2.0)] - 2022-11-26 - Update dependencies: node-addon-api@5.0.0. - Update dev-dependencies. ## [[1.1.0](https://github.com/yoshoku/hnswlib-node/compare/v1.0.3...v1.1.0)] - 2022-04-29 - Add `readIndex`, `writeIndex`, `readIndexSync`, and `writeIndexSync` functions to BruteforeceSearch and HierarchicalNSW. - Deprecate `loadIndex` and `saveIndex` functions on BruteforeceSearch and HierarchicalNSW, use `readIndexSync` and `writeIndexSync` instead. ## [[1.0.3](https://github.com/yoshoku/hnswlib-node/compare/v1.0.2...v1.0.3)] - 2022-04-14 - Change array type notation in declaration file. ## [[1.0.2](https://github.com/yoshoku/hnswlib-node/compare/v1.0.1...v1.0.2)] - 2022-03-21 - Change to call the constructor when loading the search index on the BruteforeceSearch class. - Fix to use the member variable of the original BruteforeceSearch class for the maximum number of elements. ## [[1.0.1](https://github.com/yoshoku/hnswlib-node/compare/v1.0.0...v1.0.1)] - 2022-03-19 - Add API documentation. ## [1.0.0] - 2022-03-13 - Initial release.