Skip to content

Bug: getting irrelevant closest items when using dtype='bf16' (default) instead of dtype='f16' #505

@alexyalunin

Description

@alexyalunin

Describe the bug

Just updated library from 2.12.0 to 2.15.3
Now I'm getting irrelevant closest items.

I expect for an anchor item to be closest to it by any metric (I use cos), you can see in Expected behavior screenshot. Now after update anchor item is not closest + I get a lot of irrelevant items for it (see the screenshot).

It turns out the difference is in dtype='bf16' which is default in new version. After reverting it back to dtype='f16' I get an expected behabior.

Screenshot 2024-10-14 at 17 03 45

Steps to reproduce

Here is the code I use

from usearch.index import Index
item_count, dimension = train_matrix.shape
index = Index(
    ndim=dimension, # Define the number of dimensions in input vectors
    metric='cos', # Choose 'l2sq', 'haversine' or other metric, default = 'ip'
    dtype='bf16', # Quantize to 'f16' or 'i8' if needed, default = 'f32'
    # connectivity=16, # Optional: Limit number of neighbors per graph node
    # expansion_add=128, # Optional: Control the recall of indexing
    # expansion_search=64, # Optional: Control the quality of the search
    # multi=False, # Optional: Allow multiple vectors per key, default = False
)

_ = index.add(list(range(item_count)), train_matrix)

k = 100
res = index.search(train_matrix, count=k+1)  # +1 because same product is closest
train_similars = train_ids[res.keys]

Expected behavior

using dtype='f16'
Screenshot 2024-10-14 at 17 05 53

USearch version

2.15.3

Operating System

Ubuntu 20.04.6 LTS

Hardware architecture

x86

Which interface are you using?

Python bindings

Contact Details

ale.yalunin@gmail.com

Are you open to being tagged as a contributor?

  • I am open to being mentioned in the project .git history as a contributor

Is there an existing issue for this?

  • I have searched the existing issues

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions