coder / coder/hnsw

Question - Is the test case correct?

Open
#7 1 comment 0 reactions 0 assignees View on GitHub
question
Dominant language
Go
Stars
237
Forks
32
PR merge metrics
No merged PRs in 30d

Description

Hey Team,
Is the following test case correct?

```go
func TestGraph_AddSearch(t *testing.T) {
t.Parallel()

g := newTestGraph[int]()

for i := 0; i < 128; i++ {
g.Add(
Node[int]{
Key: i,
Value: Vector{float32(i)},
},
)
}

al := Analyzer[int]{Graph: g}

// Layers should be approximately log2(128) = 7
// Look for an approximate doubling of the number of nodes in each layer.
require.Equal(t, []int{
128,
67,
28,
12,
6,
2,
1,
1,
}, al.Topography())

nearest := g.Search(
[]float32{64.5},
4,
)

require.Len(t, nearest, 4)
require.EqualValues(
t,
[]Node[int]{
{64, Vector{64}},
{65, Vector{65}},
{62, Vector{62}},
{63, Vector{63}},
},
nearest,
)
}
```

I think 66 is closer to 64.5 as compared to 62. Or am I missing something here?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.