Skip to content

Commit 0d9a4f3

Browse files
Revert "hacky - search binary without ids"
This reverts commit 73e9e4b.
1 parent 42a99f0 commit 0d9a4f3

File tree

2 files changed

+18
-98
lines changed

2 files changed

+18
-98
lines changed

index.go

Lines changed: 17 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
440402
func (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

search_params.go

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package faiss
22

33
/*
44
#include <faiss/c_api/Index_c.h>
5-
#include <faiss/c_api/IndexBinary_c.h>
65
#include <faiss/c_api/IndexIVF_c.h>
76
#include <faiss/c_api/impl/AuxIndexStructures_c.h>
87
*/
@@ -79,11 +78,7 @@ func NewSearchParams(idx Index, params json.RawMessage, sel *C.FaissIDSelector,
7978
nlist = int(C.faiss_IndexIVF_nlist(ivfIdx))
8079
nprobe = int(C.faiss_IndexIVF_nprobe(ivfIdx))
8180
nvecs = int(C.faiss_Index_ntotal(idx.cPtr()))
82-
} else if bivfIdx := C.faiss_IndexBinaryIVF_cast(idx.cPtrBinary()); bivfIdx != nil {
83-
nlist = int(C.faiss_IndexBinaryIVF_nlist(bivfIdx))
84-
nprobe = int(C.faiss_IndexBinaryIVF_nprobe(bivfIdx))
85-
nvecs = int(C.faiss_IndexBinary_ntotal(idx.cPtrBinary()))
86-
}
81+
}
8782

8883
if defaultParams != nil {
8984
if defaultParams.Nlist > 0 {
@@ -122,16 +117,6 @@ func NewSearchParams(idx Index, params json.RawMessage, sel *C.FaissIDSelector,
122117
rv.Delete()
123118
return nil, fmt.Errorf("failed to create faiss IVF search params")
124119
}
125-
} else if bivfIdx := C.faiss_IndexBinaryIVF_cast(idx.cPtrBinary()); bivfIdx != nil {
126-
if c := C.faiss_SearchParametersIVF_new_with(
127-
&rv.sp,
128-
sel,
129-
C.size_t(nprobe),
130-
C.size_t(maxCodes),
131-
); c != 0 {
132-
rv.Delete()
133-
return nil, fmt.Errorf("failed to create faiss BIVF search params")
134-
}
135120
}
136121
return rv, nil
137122
}

0 commit comments

Comments
 (0)