Skip to content

Commit

Permalink
gh-1168 [skip-ci] WIP unit test sempath builder
Browse files Browse the repository at this point in the history
  • Loading branch information
etiennedi committed Jul 10, 2020
1 parent fb6f403 commit c9f065e
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 0 deletions.
5 changes: 5 additions & 0 deletions usecases/sempath/builder.go
Expand Up @@ -22,6 +22,7 @@ import (
"strings"
"time"

"github.com/davecgh/go-spew/spew"
"github.com/etiennedi/go-tsne/tsne"
"github.com/pkg/errors"
"github.com/semi-technologies/weaviate/entities/models"
Expand Down Expand Up @@ -118,6 +119,8 @@ func (f *PathBuilder) calculatePathPerObject(obj search.Result, allObjects []sea
}
}

spew.Dump(projectedNeighbors)

path := f.buildPath(projectedNeighbors, projectedSearchVector, projectedTargetVector)
return f.addDistancesToPath(path, neighbors, params.SearchVector, obj.Vector)
}
Expand Down Expand Up @@ -427,5 +430,7 @@ func cosineDist(a, b []float32) (float32, error) {
return 0, err
}

fmt.Printf("input 1: %f\ninput 2: %f\n: sim: %f\n\n", a, b, sim)

return 1 - sim, nil
}
98 changes: 98 additions & 0 deletions usecases/sempath/builder_test.go
@@ -0,0 +1,98 @@
package sempath

import (
"context"
"testing"

"github.com/davecgh/go-spew/spew"
"github.com/semi-technologies/weaviate/entities/models"
"github.com/semi-technologies/weaviate/entities/schema/kind"
"github.com/semi-technologies/weaviate/entities/search"
"github.com/stretchr/testify/require"
)

func TestSemanticPathBuilder(t *testing.T) {
c11y := &fakeC11y{}
b := New(c11y)

b.fixedSeed = 1000 // control randomness in unit test

input := []search.Result{
search.Result{
ID: "7fe919ed-2ef6-4087-856c-a307046bf895",
Kind: kind.Thing,
ClassName: "Foo",
Vector: []float32{1, 0.1},
},
}
searchVector := []float32{0.3, 0.3}

c11y.neighbors = []*models.NearestNeighbors{
&models.NearestNeighbors{
Neighbors: []*models.NearestNeighbor{
&models.NearestNeighbor{
Concept: "good1",
Vector: []float32{0.5, 0.1},
},
&models.NearestNeighbor{
Concept: "good2",
Vector: []float32{0.7, 0.2},
},
&models.NearestNeighbor{
Concept: "good3",
Vector: []float32{0.9, 0.1},
},
&models.NearestNeighbor{
Concept: "good4",
Vector: []float32{0.55, 0.1},
},
&models.NearestNeighbor{
Concept: "good5",
Vector: []float32{0.77, 0.2},
},
&models.NearestNeighbor{
Concept: "good6",
Vector: []float32{0.99, 0.1},
},
&models.NearestNeighbor{
Concept: "bad1",
Vector: []float32{-0.1, -3},
},
&models.NearestNeighbor{
Concept: "bad2",
Vector: []float32{-0.15, -2.75},
},
&models.NearestNeighbor{
Concept: "bad3",
Vector: []float32{-0.22, -2.35},
},
&models.NearestNeighbor{
Concept: "bad4",
Vector: []float32{0.1, -3.3},
},
&models.NearestNeighbor{
Concept: "bad5",
Vector: []float32{0.15, -2.5},
},
&models.NearestNeighbor{
Concept: "bad6",
Vector: []float32{-0.4, -2.25},
},
},
},
}

res, err := b.CalculatePath(input, &Params{SearchVector: searchVector})
require.Nil(t, err)

spew.Dump(res)
t.Fail()
}

type fakeC11y struct {
neighbors []*models.NearestNeighbors
}

func (f *fakeC11y) MultiNearestWordsByVector(ctx context.Context, vectors [][]float32, k, n int) ([]*models.NearestNeighbors, error) {
return f.neighbors, nil
}

0 comments on commit c9f065e

Please sign in to comment.