Skip to content

Accuracy, Correctness, new Python & JavaScript APIs #606

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

ashvardanian
Copy link
Contributor

@ashvardanian ashvardanian commented May 14, 2025

This is a "major minor" release 😅
It doesn't break anything, doesn't change too much, but will be beneficial to all users - big or small - from indie devs to larger orgs (AFAIK every major AI lab now uses USearch), and is mostly driven by the community, not by me. So thanks to everyone!

  • @ycw66 found a core algorithmic issue, which yielded a 30% recall improvement in my testing 👏
  • @frank-lsf suggested a new API to forward variadic arguments in Index.restore in Python 👏
  • @abetomo noticed the error handling issues in newly multi-threaded JS batched methods 👏
  • @mapleFU fixed radius update issue when passing filter predicates to the core engine 👏

abetomo and others added 13 commits November 1, 2024 14:54
Crash if there is an error in batch addition.
Example:

```
const usearch = require('usearch');
const index = new usearch.Index({ metric: 'l2sq', connectivity: 16, dimensions: 3 });
index.add(42n, new Float32Array([0.2, 0.6, 0.4]));
index.add(
  [41n, 42n, 43n],
  [[0.1, 0.6, 0.4], [0.2, 0.6, 0.4], [0.3, 0.6, 0.4]]
)
```

`42n` is duplicated, which causes an error, but then it crash.

It seems that it is not better to throw an exception during the process,
so we changed it to throw it after it is completed.
Co-authored-by: Ash Vardanian <1983160+ashvardanian@users.noreply.github.com>
Fixes a correctness bug caused by a wrong memory override.
This PR adds a 3rd contant-capacity priority queue specifically
for refinements. This positively affects the accuracy at a negligible
memory cost.

---------

Co-authored-by: Ash Vardanian <1983160+ashvardanian@users.noreply.github.com>
@ashvardanian ashvardanian changed the title Accuracy, Correctness, and JS Multi-threading Accuracy, Correctness, new Python & JavaScript APIs May 14, 2025
@@ -351,8 +354,14 @@ export class Index {
);
}

if ((!Number.isNaN(threads) && typeof threads !== "number") || threads < 0) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the validation of threads is the same, it would be better to make it a method.
I will refactor it if you like.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants