mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
add sparse float vector support to different milvus components, including proxy, data node to receive and write sparse float vectors to binlog, query node to handle search requests, index node to build index for sparse float column, etc. https://github.com/milvus-io/milvus/issues/29419 --------- Signed-off-by: Buqian Zheng <zhengbuqian@gmail.com>
44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package indexparamcheck
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/milvus-io/milvus-proto/go-api/v2/schemapb"
|
|
)
|
|
|
|
type hnswChecker struct {
|
|
floatVectorBaseChecker
|
|
}
|
|
|
|
func (c hnswChecker) StaticCheck(params map[string]string) error {
|
|
if !CheckIntByRange(params, EFConstruction, HNSWMinEfConstruction, HNSWMaxEfConstruction) {
|
|
return errOutOfRange(EFConstruction, HNSWMinEfConstruction, HNSWMaxEfConstruction)
|
|
}
|
|
if !CheckIntByRange(params, HNSWM, HNSWMinM, HNSWMaxM) {
|
|
return errOutOfRange(HNSWM, HNSWMinM, HNSWMaxM)
|
|
}
|
|
if !CheckStrByValues(params, Metric, HnswMetrics) {
|
|
return fmt.Errorf("metric type %s not found or not supported, supported: %v", params[Metric], HnswMetrics)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c hnswChecker) CheckTrain(params map[string]string) error {
|
|
if err := c.StaticCheck(params); err != nil {
|
|
return err
|
|
}
|
|
return c.baseChecker.CheckTrain(params)
|
|
}
|
|
|
|
func (c hnswChecker) CheckValidDataType(dType schemapb.DataType) error {
|
|
// TODO(SPARSE) we'll add sparse vector support in HNSW later in cardinal
|
|
if dType != schemapb.DataType_FloatVector && dType != schemapb.DataType_BinaryVector && dType != schemapb.DataType_Float16Vector && dType != schemapb.DataType_BFloat16Vector {
|
|
return fmt.Errorf("only support float vector or binary vector")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func newHnswChecker() IndexChecker {
|
|
return &hnswChecker{}
|
|
}
|