From fe3a3bc97840ce21a0ac9b6ae3325e481eb94153 Mon Sep 17 00:00:00 2001 From: Aditi Ahuja Date: Mon, 20 Nov 2023 11:44:15 +0530 Subject: [PATCH 1/2] Modified vector reader interface --- segment_vector.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/segment_vector.go b/segment_vector.go index 235f847..f73f24a 100644 --- a/segment_vector.go +++ b/segment_vector.go @@ -17,7 +17,10 @@ package segment -import "github.com/RoaringBitmap/roaring" +import ( + "github.com/RoaringBitmap/roaring" + index "github.com/blevesearch/bleve_index_api" +) type VecPostingsList interface { DiskStatsReporter @@ -54,7 +57,9 @@ type VecPostingsIterator interface { type VectorSegment interface { Segment - SimilarVectors(field string, qVector []float32, k int64, except *roaring.Bitmap) (VecPostingsList, error) + ReadVectorIndex(field string) (index.VectorIndex, error) + SearchSimilarVectors(vecIndex index.VectorIndex, field string, qVector []float32, + k int64, except *roaring.Bitmap) (VecPostingsList, error) } type VecPosting interface { From 3a6e314f78cfdc69a9b226cfd08952b4547408b0 Mon Sep 17 00:00:00 2001 From: Aditi Ahuja Date: Tue, 28 Nov 2023 18:13:14 +0530 Subject: [PATCH 2/2] addressed reviews --- segment_vector.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/segment_vector.go b/segment_vector.go index f73f24a..e203b98 100644 --- a/segment_vector.go +++ b/segment_vector.go @@ -19,7 +19,6 @@ package segment import ( "github.com/RoaringBitmap/roaring" - index "github.com/blevesearch/bleve_index_api" ) type VecPostingsList interface { @@ -57,8 +56,8 @@ type VecPostingsIterator interface { type VectorSegment interface { Segment - ReadVectorIndex(field string) (index.VectorIndex, error) - SearchSimilarVectors(vecIndex index.VectorIndex, field string, qVector []float32, + GetVectorIndex(field string) (VectorIndex, error) + SearchSimilarVectors(vecIndex VectorIndex, field string, qVector []float32, k int64, except *roaring.Bitmap) (VecPostingsList, error) } @@ -69,3 +68,11 @@ type VecPosting interface { Size() int } + +type VectorIndex interface { + // Searches for the top 'k' similar vectors to the ones in 'x' + // Returns the distances and labels(IDs) for the similar vectors. + Search(x []float32, k int64) (distances []float32, labels []int64, err error) + + Close() +}