@@ -81,9 +81,6 @@ type Index interface {
8181 SearchBinaryWithIDs (x []uint8 , k int64 , params json.RawMessage ) (distances []int32 ,
8282 labels []int64 , err error )
8383
84- SearchBinaryWithoutIDs (x []uint8 , k int64 , exclude []int64 ,
85- params json.RawMessage ) (distances []int32 , labels []int64 , err error )
86-
8784 SearchBinary (x []uint8 , k int64 ) (distances []int32 ,
8885 labels []int64 , err error )
8986
@@ -397,46 +394,11 @@ func (idx *faissIndex) SearchWithoutIDs(x []float32, k int64, exclude []int64, p
397394 }
398395 defer searchParams .Delete ()
399396
400- d , labels , err := idx .searchWithParams (x , k , searchParams .sp )
401- distances = d .([]float32 )
397+ distances , labels , err = idx .searchWithParams (x , k , searchParams .sp )
402398
403399 return
404400}
405401
406- func (idx * faissIndex ) SearchBinaryWithoutIDs (x []uint8 , k int64 , exclude []int64 ,
407- params json.RawMessage ) (distances []int32 , labels []int64 , err error ,
408- ) {
409- if params == nil && len (exclude ) == 0 {
410- return idx .SearchBinary (x , k )
411- }
412-
413- var selector * C.FaissIDSelector
414- if len (exclude ) > 0 {
415- excludeSelector , err := NewIDSelectorNot (exclude )
416- if err != nil {
417- return nil , nil , err
418- }
419- selector = excludeSelector .Get ()
420- defer excludeSelector .Delete ()
421- }
422-
423- searchParams , err := NewSearchParams (idx , params , selector , nil )
424- if err != nil {
425- return nil , nil , err
426- }
427- defer searchParams .Delete ()
428-
429- nq := (len (x ) * 8 ) / idx .D ()
430-
431- distances = make ([]int32 , int64 (nq )* k )
432- labels = make ([]int64 , int64 (nq )* k )
433-
434- d , labels , err := idx .searchWithParams (x , k , searchParams .sp )
435- distances = d .([]int32 )
436-
437- return distances , labels , nil
438- }
439-
440402func (idx * faissIndex ) SearchBinaryWithIDs (x []uint8 , k int64 ,
441403 params json.RawMessage ) (distances []int32 , labels []int64 , err error ,
442404) {
@@ -497,8 +459,7 @@ func (idx *faissIndex) SearchWithIDs(x []float32, k int64, include []int64,
497459 }
498460 defer searchParams .Delete ()
499461
500- d , labels , err := idx .searchWithParams (x , k , searchParams .sp )
501- distances = d .([]float32 )
462+ distances , labels , err = idx .searchWithParams (x , k , searchParams .sp )
502463 return
503464}
504465
@@ -594,49 +555,23 @@ func (idx *faissIndex) Close() {
594555 C .faiss_IndexBinary_free (idx .idxBinary )
595556}
596557
597- func (idx * faissIndex ) searchWithParams (x interface {} , k int64 , searchParams * C.FaissSearchParameters ) (
598- distances interface {} , labels []int64 , err error ,
558+ func (idx * faissIndex ) searchWithParams (x [] float32 , k int64 , searchParams * C.FaissSearchParameters ) (
559+ distances [] float32 , labels []int64 , err error ,
599560) {
600- floatVec , ok := x .([]float32 )
601- if ok {
602- n := len (floatVec ) / idx .D ()
603- distancesFloat := make ([]float32 , int64 (n )* k )
604- labels = make ([]int64 , int64 (n )* k )
605-
606- if c := C .faiss_Index_search_with_params (
607- idx .idx ,
608- C .idx_t (n ),
609- (* C .float )(& floatVec [0 ]),
610- C .idx_t (k ),
611- searchParams ,
612- (* C .float )(& distancesFloat [0 ]),
613- (* C .idx_t )(& labels [0 ]),
614- ); c != 0 {
615- err = getLastError ()
616- }
617-
618- distances = distancesFloat
619- } else {
620- c , ok := x .([]uint8 )
621- if ok {
622- n := (len (c ) * 8 ) / idx .D ()
623- distancesBinary := make ([]int32 , int64 (n )* k )
624- labels = make ([]int64 , int64 (n )* k )
625-
626- if c := C .faiss_IndexBinary_search_with_params (
627- idx .idxBinary ,
628- C .idx_t (n ),
629- (* C .uint8_t )(& c [0 ]),
630- C .idx_t (k ),
631- searchParams ,
632- (* C .int32_t )(& distancesBinary [0 ]),
633- (* C .idx_t )(& labels [0 ]),
634- ); c != 0 {
635- err = getLastError ()
636- }
561+ n := len (x ) / idx .D ()
562+ distances = make ([]float32 , int64 (n )* k )
563+ labels = make ([]int64 , int64 (n )* k )
637564
638- distances = distancesBinary
639- }
565+ if c := C .faiss_Index_search_with_params (
566+ idx .idx ,
567+ C .idx_t (n ),
568+ (* C .float )(& x [0 ]),
569+ C .idx_t (k ),
570+ searchParams ,
571+ (* C .float )(& distances [0 ]),
572+ (* C .idx_t )(& labels [0 ]),
573+ ); c != 0 {
574+ err = getLastError ()
640575 }
641576
642577 return
0 commit comments