mirror of https://github.com/milvus-io/milvus.git
Remove unused index param check (#22271)
Signed-off-by: Yudong Cai <yudong.cai@zilliz.com>pull/22325/head
parent
5936723904
commit
d4e0b6e91b
internal/util/indexparamcheck
|
@ -65,23 +65,11 @@ const (
|
|||
DiskAnnMinDim = 32
|
||||
DiskAnnMaxDim = 1024
|
||||
|
||||
NgtMinEdgeSize = 1
|
||||
NgtMaxEdgeSize = 200
|
||||
|
||||
HNSWMinEfConstruction = 8
|
||||
HNSWMaxEfConstruction = 512
|
||||
HNSWMinM = 4
|
||||
HNSWMaxM = 64
|
||||
|
||||
MinKNNG = 5
|
||||
MaxKNNG = 300
|
||||
MinSearchLength = 10
|
||||
MaxSearchLength = 300
|
||||
MinOutDegree = 5
|
||||
MaxOutDegree = 300
|
||||
MinCandidatePoolSize = 50
|
||||
MaxCandidatePoolSize = 1000
|
||||
|
||||
MinNTrees = 1
|
||||
// too large of n_trees takes much time, if there is real requirement, change this threshold.
|
||||
MaxNTrees = 1024
|
||||
|
@ -95,24 +83,12 @@ const (
|
|||
NBITS = "nbits"
|
||||
IVFM = "m"
|
||||
|
||||
KNNG = "knng"
|
||||
SearchLength = "search_length"
|
||||
OutDegree = "out_degree"
|
||||
CANDIDATE = "candidate_pool_size"
|
||||
|
||||
EFConstruction = "efConstruction"
|
||||
HNSWM = "M"
|
||||
|
||||
PQM = "PQM"
|
||||
NTREES = "n_trees"
|
||||
|
||||
EdgeSize = "edge_size"
|
||||
ForcedlyPrunedEdgeSize = "forcedly_pruned_edge_size"
|
||||
SelectivelyPrunedEdgeSize = "selectively_pruned_edge_size"
|
||||
|
||||
OutgoingEdgeSize = "outgoing_edge_size"
|
||||
IncomingEdgeSize = "incoming_edge_size"
|
||||
|
||||
IndexMode = "index_mode"
|
||||
CPUMode = "CPU"
|
||||
GPUMode = "GPU"
|
||||
|
@ -324,41 +300,6 @@ func newBinIVFConfAdapter() *BinIVFConfAdapter {
|
|||
return &BinIVFConfAdapter{}
|
||||
}
|
||||
|
||||
type NSGConfAdapter struct {
|
||||
BaseConfAdapter
|
||||
}
|
||||
|
||||
// CheckTrain checks if a nsg index can be built with specific parameters.
|
||||
func (adapter *NSGConfAdapter) CheckTrain(params map[string]string) bool {
|
||||
if !CheckStrByValues(params, Metric, METRICS) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, KNNG, MinKNNG, MaxKNNG) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, SearchLength, MinSearchLength, MaxSearchLength) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, OutDegree, MinOutDegree, MaxOutDegree) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, CANDIDATE, MinCandidatePoolSize, MaxCandidatePoolSize) {
|
||||
return false
|
||||
}
|
||||
|
||||
// skip checking the number of rows
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func newNSGConfAdapter() *NSGConfAdapter {
|
||||
return &NSGConfAdapter{}
|
||||
}
|
||||
|
||||
// HNSWConfAdapter checks if a hnsw index can be built.
|
||||
type HNSWConfAdapter struct {
|
||||
BaseConfAdapter
|
||||
|
@ -399,143 +340,6 @@ func newANNOYConfAdapter() *ANNOYConfAdapter {
|
|||
return &ANNOYConfAdapter{}
|
||||
}
|
||||
|
||||
// RHNSWFlatConfAdapter checks if a rhnsw flat index can be built.
|
||||
type RHNSWFlatConfAdapter struct {
|
||||
BaseConfAdapter
|
||||
}
|
||||
|
||||
// CheckTrain checks if a rhnsw flat index can be built with specific parameters.
|
||||
func (adapter *RHNSWFlatConfAdapter) CheckTrain(params map[string]string) bool {
|
||||
if !CheckIntByRange(params, EFConstruction, HNSWMinEfConstruction, HNSWMaxEfConstruction) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, HNSWM, HNSWMinM, HNSWMaxM) {
|
||||
return false
|
||||
}
|
||||
|
||||
return adapter.BaseConfAdapter.CheckTrain(params)
|
||||
}
|
||||
|
||||
func newRHNSWFlatConfAdapter() *RHNSWFlatConfAdapter {
|
||||
return &RHNSWFlatConfAdapter{}
|
||||
}
|
||||
|
||||
// RHNSWPQConfAdapter checks if a rhnsw pq index can be built.
|
||||
type RHNSWPQConfAdapter struct {
|
||||
BaseConfAdapter
|
||||
IVFPQConfAdapter
|
||||
}
|
||||
|
||||
// CheckTrain checks if a rhnsw pq index can be built with specific parameters.
|
||||
func (adapter *RHNSWPQConfAdapter) CheckTrain(params map[string]string) bool {
|
||||
if !adapter.BaseConfAdapter.CheckTrain(params) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, EFConstruction, HNSWMinEfConstruction, HNSWMaxEfConstruction) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, HNSWM, HNSWMinM, HNSWMaxM) {
|
||||
return false
|
||||
}
|
||||
|
||||
dimension, _ := strconv.Atoi(params[DIM])
|
||||
pqmStr, ok := params[PQM]
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
pqm, err := strconv.Atoi(pqmStr)
|
||||
if err != nil || pqm == 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
return adapter.IVFPQConfAdapter.checkCPUPQParams(dimension, pqm)
|
||||
}
|
||||
|
||||
func newRHNSWPQConfAdapter() *RHNSWPQConfAdapter {
|
||||
return &RHNSWPQConfAdapter{}
|
||||
}
|
||||
|
||||
// RHNSWSQConfAdapter checks if a rhnsw sq index can be built.
|
||||
type RHNSWSQConfAdapter struct {
|
||||
BaseConfAdapter
|
||||
}
|
||||
|
||||
// CheckTrain checks if a rhnsw sq index can be built with specific parameters.
|
||||
func (adapter *RHNSWSQConfAdapter) CheckTrain(params map[string]string) bool {
|
||||
if !CheckIntByRange(params, EFConstruction, HNSWMinEfConstruction, HNSWMaxEfConstruction) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, HNSWM, HNSWMinM, HNSWMaxM) {
|
||||
return false
|
||||
}
|
||||
|
||||
return adapter.BaseConfAdapter.CheckTrain(params)
|
||||
}
|
||||
|
||||
func newRHNSWSQConfAdapter() *RHNSWSQConfAdapter {
|
||||
return &RHNSWSQConfAdapter{}
|
||||
}
|
||||
|
||||
// NGTPANNGConfAdapter checks if a NGT_PANNG index can be built.
|
||||
type NGTPANNGConfAdapter struct {
|
||||
BaseConfAdapter
|
||||
}
|
||||
|
||||
func (adapter *NGTPANNGConfAdapter) CheckTrain(params map[string]string) bool {
|
||||
if !CheckIntByRange(params, EdgeSize, NgtMinEdgeSize, NgtMaxEdgeSize) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, ForcedlyPrunedEdgeSize, NgtMinEdgeSize, NgtMaxEdgeSize) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, SelectivelyPrunedEdgeSize, NgtMinEdgeSize, NgtMaxEdgeSize) {
|
||||
return false
|
||||
}
|
||||
|
||||
selectivelyPrunedEdgeSize, _ := strconv.Atoi(params[SelectivelyPrunedEdgeSize])
|
||||
forcedlyPrunedEdgeSize, _ := strconv.Atoi(params[ForcedlyPrunedEdgeSize])
|
||||
if selectivelyPrunedEdgeSize >= forcedlyPrunedEdgeSize {
|
||||
return false
|
||||
}
|
||||
|
||||
return adapter.BaseConfAdapter.CheckTrain(params)
|
||||
}
|
||||
|
||||
func newNGTPANNGConfAdapter() *NGTPANNGConfAdapter {
|
||||
return &NGTPANNGConfAdapter{}
|
||||
}
|
||||
|
||||
// NGTONNGConfAdapter checks if a NGT_ONNG index can be built.
|
||||
type NGTONNGConfAdapter struct {
|
||||
BaseConfAdapter
|
||||
}
|
||||
|
||||
func (adapter *NGTONNGConfAdapter) CheckTrain(params map[string]string) bool {
|
||||
if !CheckIntByRange(params, EdgeSize, NgtMinEdgeSize, NgtMaxEdgeSize) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, OutgoingEdgeSize, NgtMinEdgeSize, NgtMaxEdgeSize) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !CheckIntByRange(params, IncomingEdgeSize, NgtMinEdgeSize, NgtMaxEdgeSize) {
|
||||
return false
|
||||
}
|
||||
|
||||
return adapter.BaseConfAdapter.CheckTrain(params)
|
||||
}
|
||||
|
||||
func newNGTONNGConfAdapter() *NGTONNGConfAdapter {
|
||||
return &NGTONNGConfAdapter{}
|
||||
}
|
||||
|
||||
type DISKANNConfAdapter struct {
|
||||
BaseConfAdapter
|
||||
}
|
||||
|
|
|
@ -49,17 +49,10 @@ func (mgr *ConfAdapterMgrImpl) registerConfAdapter() {
|
|||
mgr.adapters[IndexFaissIvfFlat] = newIVFConfAdapter()
|
||||
mgr.adapters[IndexFaissIvfPQ] = newIVFPQConfAdapter()
|
||||
mgr.adapters[IndexFaissIvfSQ8] = newIVFSQConfAdapter()
|
||||
mgr.adapters[IndexFaissIvfSQ8H] = newIVFSQConfAdapter()
|
||||
mgr.adapters[IndexFaissBinIDMap] = newBinIDMAPConfAdapter()
|
||||
mgr.adapters[IndexFaissBinIvfFlat] = newBinIVFConfAdapter()
|
||||
mgr.adapters[IndexNSG] = newNSGConfAdapter()
|
||||
mgr.adapters[IndexHNSW] = newHNSWConfAdapter()
|
||||
mgr.adapters[IndexANNOY] = newANNOYConfAdapter()
|
||||
mgr.adapters[IndexRHNSWFlat] = newRHNSWFlatConfAdapter()
|
||||
mgr.adapters[IndexRHNSWPQ] = newRHNSWPQConfAdapter()
|
||||
mgr.adapters[IndexRHNSWSQ] = newRHNSWSQConfAdapter()
|
||||
mgr.adapters[IndexNGTPANNG] = newNGTPANNGConfAdapter()
|
||||
mgr.adapters[IndexNGTONNG] = newNGTONNGConfAdapter()
|
||||
mgr.adapters[IndexDISKANN] = newDISKANNConfAdapter()
|
||||
}
|
||||
|
||||
|
|
|
@ -53,12 +53,6 @@ func Test_GetConfAdapterMgrInstance(t *testing.T) {
|
|||
_, ok = adapter.(*IVFSQConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexFaissIvfSQ8H)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*IVFSQConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexFaissBinIDMap)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
|
@ -71,53 +65,17 @@ func Test_GetConfAdapterMgrInstance(t *testing.T) {
|
|||
_, ok = adapter.(*BinIVFConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexNSG)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*NSGConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexHNSW)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*HNSWConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexRHNSWFlat)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*RHNSWFlatConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexRHNSWPQ)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*RHNSWPQConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexRHNSWSQ)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*RHNSWSQConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexANNOY)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*ANNOYConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexNGTPANNG)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*NGTPANNGConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexNGTONNG)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*NGTONNGConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
}
|
||||
|
||||
func TestConfAdapterMgrImpl_GetAdapter(t *testing.T) {
|
||||
|
@ -155,12 +113,6 @@ func TestConfAdapterMgrImpl_GetAdapter(t *testing.T) {
|
|||
_, ok = adapter.(*IVFSQConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexFaissIvfSQ8H)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*IVFSQConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexFaissBinIDMap)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
|
@ -173,53 +125,17 @@ func TestConfAdapterMgrImpl_GetAdapter(t *testing.T) {
|
|||
_, ok = adapter.(*BinIVFConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexNSG)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*NSGConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexHNSW)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*HNSWConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexRHNSWFlat)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*RHNSWFlatConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexRHNSWPQ)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*RHNSWPQConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexRHNSWSQ)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*RHNSWSQConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexANNOY)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*ANNOYConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexNGTPANNG)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*NGTPANNGConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
|
||||
adapter, err = adapterMgr.GetAdapter(IndexNGTONNG)
|
||||
assert.Equal(t, nil, err)
|
||||
assert.NotEqual(t, nil, adapter)
|
||||
_, ok = adapter.(*NGTONNGConfAdapter)
|
||||
assert.Equal(t, true, ok)
|
||||
}
|
||||
|
||||
func TestConfAdapterMgrImpl_GetAdapter_multiple_threads(t *testing.T) {
|
||||
|
|
|
@ -266,69 +266,6 @@ func TestBinIVFConfAdapter_CheckTrain(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// NSGConfAdapter checks if a nsg index can be built.
|
||||
func TestNSGConfAdapter_CheckTrain(t *testing.T) {
|
||||
validParams := map[string]string{
|
||||
DIM: strconv.Itoa(128),
|
||||
NLIST: strconv.Itoa(163),
|
||||
KNNG: strconv.Itoa(20),
|
||||
SearchLength: strconv.Itoa(40),
|
||||
OutDegree: strconv.Itoa(30),
|
||||
CANDIDATE: strconv.Itoa(100),
|
||||
Metric: L2,
|
||||
}
|
||||
|
||||
invalidMatricParams := copyParams(validParams)
|
||||
invalidMatricParams[Metric] = JACCARD
|
||||
|
||||
invalidKNNGParamsMin := copyParams(validParams)
|
||||
invalidKNNGParamsMin[KNNG] = strconv.Itoa(MinKNNG - 1)
|
||||
|
||||
invalidKNNGParamsMax := copyParams(validParams)
|
||||
invalidKNNGParamsMax[KNNG] = strconv.Itoa(MaxKNNG + 1)
|
||||
|
||||
invalidLengthParamsMin := copyParams(validParams)
|
||||
invalidLengthParamsMin[SearchLength] = strconv.Itoa(MinSearchLength - 1)
|
||||
|
||||
invalidLengthParamsMax := copyParams(validParams)
|
||||
invalidLengthParamsMax[SearchLength] = strconv.Itoa(MaxSearchLength + 1)
|
||||
|
||||
invalidDegreeParamsMin := copyParams(validParams)
|
||||
invalidDegreeParamsMin[OutDegree] = strconv.Itoa(MinOutDegree - 1)
|
||||
|
||||
invalidDegreeParamsMax := copyParams(validParams)
|
||||
invalidDegreeParamsMax[OutDegree] = strconv.Itoa(MaxOutDegree + 1)
|
||||
|
||||
invalidPoolParamsMin := copyParams(validParams)
|
||||
invalidPoolParamsMin[CANDIDATE] = strconv.Itoa(MinCandidatePoolSize - 1)
|
||||
|
||||
invalidPoolParamsMax := copyParams(validParams)
|
||||
invalidPoolParamsMax[CANDIDATE] = strconv.Itoa(MaxCandidatePoolSize + 1)
|
||||
|
||||
cases := []struct {
|
||||
params map[string]string
|
||||
want bool
|
||||
}{
|
||||
{validParams, true},
|
||||
{invalidMatricParams, false},
|
||||
{invalidKNNGParamsMin, false},
|
||||
{invalidKNNGParamsMax, false},
|
||||
{invalidLengthParamsMin, false},
|
||||
{invalidLengthParamsMax, false},
|
||||
{invalidDegreeParamsMin, false},
|
||||
{invalidDegreeParamsMax, false},
|
||||
{invalidPoolParamsMin, false},
|
||||
{invalidPoolParamsMax, false},
|
||||
}
|
||||
|
||||
adapter := newNSGConfAdapter()
|
||||
for _, test := range cases {
|
||||
if got := adapter.CheckTrain(test.params); got != test.want {
|
||||
t.Errorf("NSGConfAdapter.CheckTrain(%v) = %v", test.params, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// HNSWConfAdapter checks if a hnsw index can be built.
|
||||
func TestHNSWConfAdapter_CheckTrain(t *testing.T) {
|
||||
validParams := map[string]string{
|
||||
|
@ -399,242 +336,3 @@ func TestANNOYConfAdapter_CheckTrain(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestRHNSWFlatConfAdapter_CheckTrain(t *testing.T) {
|
||||
validParams := map[string]string{
|
||||
DIM: strconv.Itoa(128),
|
||||
HNSWM: strconv.Itoa(16),
|
||||
EFConstruction: strconv.Itoa(200),
|
||||
Metric: L2,
|
||||
}
|
||||
|
||||
invalidEfParamsMin := copyParams(validParams)
|
||||
invalidEfParamsMin[EFConstruction] = strconv.Itoa(HNSWMinEfConstruction - 1)
|
||||
|
||||
invalidEfParamsMax := copyParams(validParams)
|
||||
invalidEfParamsMax[EFConstruction] = strconv.Itoa(HNSWMaxEfConstruction + 1)
|
||||
|
||||
invalidMParamsMin := copyParams(validParams)
|
||||
invalidMParamsMin[HNSWM] = strconv.Itoa(HNSWMinM - 1)
|
||||
|
||||
invalidMParamsMax := copyParams(validParams)
|
||||
invalidMParamsMax[HNSWM] = strconv.Itoa(HNSWMaxM + 1)
|
||||
|
||||
cases := []struct {
|
||||
params map[string]string
|
||||
want bool
|
||||
}{
|
||||
{validParams, true},
|
||||
{invalidEfParamsMin, false},
|
||||
{invalidEfParamsMax, false},
|
||||
{invalidMParamsMin, false},
|
||||
{invalidMParamsMax, false},
|
||||
}
|
||||
|
||||
adapter := newRHNSWFlatConfAdapter()
|
||||
for _, test := range cases {
|
||||
if got := adapter.CheckTrain(test.params); got != test.want {
|
||||
t.Errorf("RHNSWFlatConfAdapter.CheckTrain(%v) = %v", test.params, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestRHNSWPQConfAdapter_CheckTrain(t *testing.T) {
|
||||
validParams := map[string]string{
|
||||
DIM: strconv.Itoa(128),
|
||||
HNSWM: strconv.Itoa(16),
|
||||
PQM: strconv.Itoa(8),
|
||||
EFConstruction: strconv.Itoa(200),
|
||||
Metric: L2,
|
||||
}
|
||||
|
||||
invalidMatricParams := copyParams(validParams)
|
||||
invalidMatricParams[Metric] = JACCARD
|
||||
|
||||
invalidEfParamsMin := copyParams(validParams)
|
||||
invalidEfParamsMin[EFConstruction] = strconv.Itoa(HNSWMinEfConstruction - 1)
|
||||
|
||||
invalidEfParamsMax := copyParams(validParams)
|
||||
invalidEfParamsMax[EFConstruction] = strconv.Itoa(HNSWMaxEfConstruction + 1)
|
||||
|
||||
invalidMParamsMin := copyParams(validParams)
|
||||
invalidMParamsMin[HNSWM] = strconv.Itoa(HNSWMinM - 1)
|
||||
|
||||
invalidMParamsMax := copyParams(validParams)
|
||||
invalidMParamsMax[HNSWM] = strconv.Itoa(HNSWMaxM + 1)
|
||||
|
||||
invalidParamsWithoutPQM := map[string]string{
|
||||
DIM: strconv.Itoa(128),
|
||||
HNSWM: strconv.Itoa(16),
|
||||
EFConstruction: strconv.Itoa(200),
|
||||
Metric: L2,
|
||||
}
|
||||
|
||||
invalidParamsPQM := copyParams(validParams)
|
||||
invalidParamsPQM[PQM] = "NAN"
|
||||
|
||||
invalidParamsPQMZero := copyParams(validParams)
|
||||
invalidParamsPQMZero[PQM] = "0"
|
||||
|
||||
cases := []struct {
|
||||
params map[string]string
|
||||
want bool
|
||||
}{
|
||||
{validParams, true},
|
||||
{invalidMatricParams, false},
|
||||
{invalidEfParamsMin, false},
|
||||
{invalidEfParamsMax, false},
|
||||
{invalidMParamsMin, false},
|
||||
{invalidMParamsMax, false},
|
||||
{invalidParamsWithoutPQM, false},
|
||||
{invalidParamsPQM, false},
|
||||
{invalidParamsPQMZero, false},
|
||||
}
|
||||
|
||||
adapter := newRHNSWPQConfAdapter()
|
||||
for _, test := range cases {
|
||||
if got := adapter.CheckTrain(test.params); got != test.want {
|
||||
t.Errorf("RHNSWPQConfAdapter.CheckTrain(%v) = %v", test.params, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestRHNSWSQConfAdapter_CheckTrain(t *testing.T) {
|
||||
validParams := map[string]string{
|
||||
DIM: strconv.Itoa(128),
|
||||
HNSWM: strconv.Itoa(16),
|
||||
EFConstruction: strconv.Itoa(200),
|
||||
Metric: L2,
|
||||
}
|
||||
|
||||
invalidEfParamsMin := copyParams(validParams)
|
||||
invalidEfParamsMin[EFConstruction] = strconv.Itoa(HNSWMinEfConstruction - 1)
|
||||
|
||||
invalidEfParamsMax := copyParams(validParams)
|
||||
invalidEfParamsMax[EFConstruction] = strconv.Itoa(HNSWMaxEfConstruction + 1)
|
||||
|
||||
invalidMParamsMin := copyParams(validParams)
|
||||
invalidMParamsMin[HNSWM] = strconv.Itoa(HNSWMinM - 1)
|
||||
|
||||
invalidMParamsMax := copyParams(validParams)
|
||||
invalidMParamsMax[HNSWM] = strconv.Itoa(HNSWMaxM + 1)
|
||||
|
||||
cases := []struct {
|
||||
params map[string]string
|
||||
want bool
|
||||
}{
|
||||
{validParams, true},
|
||||
{invalidEfParamsMin, false},
|
||||
{invalidEfParamsMax, false},
|
||||
{invalidMParamsMin, false},
|
||||
{invalidMParamsMax, false},
|
||||
}
|
||||
|
||||
adapter := newRHNSWSQConfAdapter()
|
||||
for _, test := range cases {
|
||||
if got := adapter.CheckTrain(test.params); got != test.want {
|
||||
t.Errorf("RHNSWSQConfAdapter.CheckTrain(%v) = %v", test.params, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNGTPANNGConfAdapter_CheckTrain(t *testing.T) {
|
||||
validParams := map[string]string{
|
||||
DIM: strconv.Itoa(128),
|
||||
EdgeSize: strconv.Itoa(10),
|
||||
ForcedlyPrunedEdgeSize: strconv.Itoa(60),
|
||||
SelectivelyPrunedEdgeSize: strconv.Itoa(30),
|
||||
Metric: L2,
|
||||
}
|
||||
|
||||
invalidEdgeSizeParamsMin := copyParams(validParams)
|
||||
invalidEdgeSizeParamsMin[EdgeSize] = strconv.Itoa(NgtMinEdgeSize - 1)
|
||||
|
||||
invalidEdgeSizeParamsMax := copyParams(validParams)
|
||||
invalidEdgeSizeParamsMax[EdgeSize] = strconv.Itoa(NgtMaxEdgeSize + 1)
|
||||
|
||||
invalidFPEdgeSizeParamsMin := copyParams(validParams)
|
||||
invalidFPEdgeSizeParamsMin[ForcedlyPrunedEdgeSize] = strconv.Itoa(NgtMinEdgeSize - 1)
|
||||
|
||||
invalidFPEdgeSizeParamsMax := copyParams(validParams)
|
||||
invalidFPEdgeSizeParamsMax[ForcedlyPrunedEdgeSize] = strconv.Itoa(NgtMaxEdgeSize + 1)
|
||||
|
||||
invalidSPEdgeSizeParamsMin := copyParams(validParams)
|
||||
invalidSPEdgeSizeParamsMin[SelectivelyPrunedEdgeSize] = strconv.Itoa(NgtMinEdgeSize - 1)
|
||||
|
||||
invalidSPEdgeSizeParamsMax := copyParams(validParams)
|
||||
invalidSPEdgeSizeParamsMax[SelectivelyPrunedEdgeSize] = strconv.Itoa(NgtMaxEdgeSize + 1)
|
||||
|
||||
invalidSPFPParams := copyParams(validParams)
|
||||
invalidSPFPParams[SelectivelyPrunedEdgeSize] = strconv.Itoa(60)
|
||||
invalidSPFPParams[ForcedlyPrunedEdgeSize] = strconv.Itoa(30)
|
||||
|
||||
cases := []struct {
|
||||
params map[string]string
|
||||
want bool
|
||||
}{
|
||||
{validParams, true},
|
||||
{invalidEdgeSizeParamsMin, false},
|
||||
{invalidEdgeSizeParamsMax, false},
|
||||
{invalidFPEdgeSizeParamsMin, false},
|
||||
{invalidFPEdgeSizeParamsMax, false},
|
||||
{invalidSPEdgeSizeParamsMin, false},
|
||||
{invalidSPEdgeSizeParamsMax, false},
|
||||
{invalidSPFPParams, false},
|
||||
}
|
||||
|
||||
adapter := newNGTPANNGConfAdapter()
|
||||
for _, test := range cases {
|
||||
if got := adapter.CheckTrain(test.params); got != test.want {
|
||||
t.Errorf("NGTPANNGConfAdapter.CheckTrain(%v) = %v", test.params, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNGTONNGConfAdapter_CheckTrain(t *testing.T) {
|
||||
validParams := map[string]string{
|
||||
DIM: strconv.Itoa(128),
|
||||
EdgeSize: strconv.Itoa(20),
|
||||
OutgoingEdgeSize: strconv.Itoa(5),
|
||||
IncomingEdgeSize: strconv.Itoa(40),
|
||||
Metric: L2,
|
||||
}
|
||||
|
||||
invalidEdgeSizeParamsMin := copyParams(validParams)
|
||||
invalidEdgeSizeParamsMin[EdgeSize] = strconv.Itoa(NgtMinEdgeSize - 1)
|
||||
|
||||
invalidEdgeSizeParamsMax := copyParams(validParams)
|
||||
invalidEdgeSizeParamsMax[EdgeSize] = strconv.Itoa(NgtMaxEdgeSize + 1)
|
||||
|
||||
invalidOutEdgeSizeParamsMin := copyParams(validParams)
|
||||
invalidOutEdgeSizeParamsMin[OutgoingEdgeSize] = strconv.Itoa(NgtMinEdgeSize - 1)
|
||||
|
||||
invalidOutEdgeSizeParamsMax := copyParams(validParams)
|
||||
invalidOutEdgeSizeParamsMax[OutgoingEdgeSize] = strconv.Itoa(NgtMaxEdgeSize + 1)
|
||||
|
||||
invalidInEdgeSizeParamsMin := copyParams(validParams)
|
||||
invalidInEdgeSizeParamsMin[IncomingEdgeSize] = strconv.Itoa(NgtMinEdgeSize - 1)
|
||||
|
||||
invalidInEdgeSizeParamsMax := copyParams(validParams)
|
||||
invalidInEdgeSizeParamsMax[IncomingEdgeSize] = strconv.Itoa(NgtMaxEdgeSize + 1)
|
||||
|
||||
cases := []struct {
|
||||
params map[string]string
|
||||
want bool
|
||||
}{
|
||||
{validParams, true},
|
||||
{invalidEdgeSizeParamsMin, false},
|
||||
{invalidEdgeSizeParamsMax, false},
|
||||
{invalidOutEdgeSizeParamsMin, false},
|
||||
{invalidOutEdgeSizeParamsMax, false},
|
||||
{invalidInEdgeSizeParamsMin, false},
|
||||
{invalidInEdgeSizeParamsMax, false},
|
||||
}
|
||||
|
||||
adapter := newNGTONNGConfAdapter()
|
||||
for _, test := range cases {
|
||||
if got := adapter.CheckTrain(test.params); got != test.want {
|
||||
t.Errorf("NGTONNGConfAdapter.CheckTrain(%v) = %v", test.params, test.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,16 +20,9 @@ const (
|
|||
IndexFaissIvfFlat IndexType = "IVF_FLAT"
|
||||
IndexFaissIvfPQ IndexType = "IVF_PQ"
|
||||
IndexFaissIvfSQ8 IndexType = "IVF_SQ8"
|
||||
IndexFaissIvfSQ8H IndexType = "IVF_SQ8_HYBRID"
|
||||
IndexFaissBinIDMap IndexType = "BIN_FLAT"
|
||||
IndexFaissBinIvfFlat IndexType = "BIN_IVF_FLAT"
|
||||
IndexNSG IndexType = "NSG"
|
||||
IndexHNSW IndexType = "HNSW"
|
||||
IndexRHNSWFlat IndexType = "RHNSW_FLAT"
|
||||
IndexRHNSWPQ IndexType = "RHNSW_PQ"
|
||||
IndexRHNSWSQ IndexType = "RHNSW_SQ"
|
||||
IndexANNOY IndexType = "ANNOY"
|
||||
IndexNGTPANNG IndexType = "NGT_PANNG"
|
||||
IndexNGTONNG IndexType = "NGT_ONNG"
|
||||
IndexDISKANN IndexType = "DISKANN"
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue