Skip to content

Basic Example Does not work #693

Description

@Dakantz

Basically, what the title says... when I run the example from the README:

from annoy import AnnoyIndex
import random

f = 40  # Length of item vector that will be indexed

t = AnnoyIndex(f, 'angular')
for i in range(1000):
    v = [random.gauss(0, 1) for z in range(f)]
    t.add_item(i, v)

t.build(10) # 10 trees
t.save('test.ann')

# ...

u = AnnoyIndex(f, 'angular')
u.load('test.ann') # super fast, will just mmap the file
print(u.get_nns_by_item(0, 1000)) # will find the 1000 nearest neighbors

I only get the first vector:

[0]

And when I use multiple orthogonal vectors:

import numpy as np
import annoy

N = 200
annoy_index = annoy.AnnoyIndex(N, metric="angular")

for i in range(N):
    vec = np.zeros(N, dtype=np.float64) + 0.01 * np.random.rand(N)
    vec[i] = 1.0
    annoy_index.add_item(i, vec)

print("Items:", annoy_index.get_n_items())

annoy_index.build(10)

query_vec = np.zeros(N, dtype=np.float64)
query_vec[5] = 1.0

ids, distances = annoy_index.get_nns_by_vector(query_vec, 20, search_k=200, include_distances=True)
print("IDs:", ids)
print("Distances:", distances)

I also only get a single vector:

Items: 200
IDs: [0]
Distances: [1.4107773303985596]

Can anyone explain what I am doing wrong?
My platform is:

System: M2 Mac
Python 3.14.0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions