Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ Please mark all change in change log and use the issue from GitHub - \#1535 Degradation searching performance with metric_type: binary_idmap - \#1556 Index file not created after table and index created - \#1560 Search crashed with Super-high dimensional binary vector - \#1571 Meta engine type become IDMAP after drop index for BINARY table ## Feature - \#216 Add CLI to get server info Loading core/src/db/DBImpl.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -366,8 +366,8 @@ DBImpl::PreloadTable(const std::string& table_id) { if (file.file_type_ == meta::TableFileSchema::FILE_TYPE::RAW || file.file_type_ == meta::TableFileSchema::FILE_TYPE::TO_INDEX || file.file_type_ == meta::TableFileSchema::FILE_TYPE::BACKUP) { engine_type = server::ValidationUtil::IsBinaryMetricType(file.metric_type_) ? EngineType::FAISS_BIN_IDMAP : EngineType::FAISS_IDMAP; engine_type = utils::IsBinaryMetricType(file.metric_type_) ? EngineType::FAISS_BIN_IDMAP : EngineType::FAISS_IDMAP; } else { engine_type = (EngineType)file.engine_type_; } Loading Loading @@ -1019,7 +1019,7 @@ DBImpl::GetVectorByIdHelper(const std::string& table_id, IDNumber vector_id, Vec auto deleted = std::find(deleted_docs.begin(), deleted_docs.end(), offset); if (deleted == deleted_docs.end()) { // Load raw vector bool is_binary = server::ValidationUtil::IsBinaryMetricType(file.metric_type_); bool is_binary = utils::IsBinaryMetricType(file.metric_type_); size_t single_vector_bytes = is_binary ? file.dimension_ / 8 : file.dimension_ * sizeof(float); std::vector<uint8_t> raw_vector; status = segment_reader.LoadVectors(offset * single_vector_bytes, single_vector_bytes, raw_vector); Loading core/src/db/Utils.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -220,6 +220,19 @@ IsRawIndexType(int32_t type) { return (type == (int32_t)EngineType::FAISS_IDMAP) || (type == (int32_t)EngineType::FAISS_BIN_IDMAP); } bool IsBinaryIndexType(int32_t index_type) { return (index_type == (int32_t)engine::EngineType::FAISS_BIN_IDMAP) || (index_type == (int32_t)engine::EngineType::FAISS_BIN_IVFFLAT); } bool IsBinaryMetricType(int32_t metric_type) { return (metric_type == (int32_t)engine::MetricType::HAMMING) || (metric_type == (int32_t)engine::MetricType::JACCARD) || (metric_type == (int32_t)engine::MetricType::TANIMOTO); } meta::DateT GetDate(const std::time_t& t, int day_delta) { struct tm ltm; Loading core/src/db/Utils.h +6 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,12 @@ IsSameIndex(const TableIndex& index1, const TableIndex& index2); bool IsRawIndexType(int32_t type); static bool IsBinaryIndexType(int32_t index_type); bool IsBinaryMetricType(int32_t metric_type); meta::DateT GetDate(const std::time_t& t, int day_delta = 0); meta::DateT Loading core/src/db/engine/ExecutionEngineImpl.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -100,9 +100,8 @@ ExecutionEngineImpl::ExecutionEngineImpl(uint16_t dimension, const std::string& index_type_(index_type), metric_type_(metric_type), index_params_(index_params) { EngineType tmp_index_type = server::ValidationUtil::IsBinaryMetricType((int32_t)metric_type) ? EngineType::FAISS_BIN_IDMAP : EngineType::FAISS_IDMAP; EngineType tmp_index_type = utils::IsBinaryMetricType((int32_t)metric_type) ? EngineType::FAISS_BIN_IDMAP : EngineType::FAISS_IDMAP; index_ = CreatetVecIndex(tmp_index_type); if (!index_) { throw Exception(DB_ERROR, "Unsupported index type"); Loading Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ Please mark all change in change log and use the issue from GitHub - \#1535 Degradation searching performance with metric_type: binary_idmap - \#1556 Index file not created after table and index created - \#1560 Search crashed with Super-high dimensional binary vector - \#1571 Meta engine type become IDMAP after drop index for BINARY table ## Feature - \#216 Add CLI to get server info Loading
core/src/db/DBImpl.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -366,8 +366,8 @@ DBImpl::PreloadTable(const std::string& table_id) { if (file.file_type_ == meta::TableFileSchema::FILE_TYPE::RAW || file.file_type_ == meta::TableFileSchema::FILE_TYPE::TO_INDEX || file.file_type_ == meta::TableFileSchema::FILE_TYPE::BACKUP) { engine_type = server::ValidationUtil::IsBinaryMetricType(file.metric_type_) ? EngineType::FAISS_BIN_IDMAP : EngineType::FAISS_IDMAP; engine_type = utils::IsBinaryMetricType(file.metric_type_) ? EngineType::FAISS_BIN_IDMAP : EngineType::FAISS_IDMAP; } else { engine_type = (EngineType)file.engine_type_; } Loading Loading @@ -1019,7 +1019,7 @@ DBImpl::GetVectorByIdHelper(const std::string& table_id, IDNumber vector_id, Vec auto deleted = std::find(deleted_docs.begin(), deleted_docs.end(), offset); if (deleted == deleted_docs.end()) { // Load raw vector bool is_binary = server::ValidationUtil::IsBinaryMetricType(file.metric_type_); bool is_binary = utils::IsBinaryMetricType(file.metric_type_); size_t single_vector_bytes = is_binary ? file.dimension_ / 8 : file.dimension_ * sizeof(float); std::vector<uint8_t> raw_vector; status = segment_reader.LoadVectors(offset * single_vector_bytes, single_vector_bytes, raw_vector); Loading
core/src/db/Utils.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -220,6 +220,19 @@ IsRawIndexType(int32_t type) { return (type == (int32_t)EngineType::FAISS_IDMAP) || (type == (int32_t)EngineType::FAISS_BIN_IDMAP); } bool IsBinaryIndexType(int32_t index_type) { return (index_type == (int32_t)engine::EngineType::FAISS_BIN_IDMAP) || (index_type == (int32_t)engine::EngineType::FAISS_BIN_IVFFLAT); } bool IsBinaryMetricType(int32_t metric_type) { return (metric_type == (int32_t)engine::MetricType::HAMMING) || (metric_type == (int32_t)engine::MetricType::JACCARD) || (metric_type == (int32_t)engine::MetricType::TANIMOTO); } meta::DateT GetDate(const std::time_t& t, int day_delta) { struct tm ltm; Loading
core/src/db/Utils.h +6 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,12 @@ IsSameIndex(const TableIndex& index1, const TableIndex& index2); bool IsRawIndexType(int32_t type); static bool IsBinaryIndexType(int32_t index_type); bool IsBinaryMetricType(int32_t metric_type); meta::DateT GetDate(const std::time_t& t, int day_delta = 0); meta::DateT Loading
core/src/db/engine/ExecutionEngineImpl.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -100,9 +100,8 @@ ExecutionEngineImpl::ExecutionEngineImpl(uint16_t dimension, const std::string& index_type_(index_type), metric_type_(metric_type), index_params_(index_params) { EngineType tmp_index_type = server::ValidationUtil::IsBinaryMetricType((int32_t)metric_type) ? EngineType::FAISS_BIN_IDMAP : EngineType::FAISS_IDMAP; EngineType tmp_index_type = utils::IsBinaryMetricType((int32_t)metric_type) ? EngineType::FAISS_BIN_IDMAP : EngineType::FAISS_IDMAP; index_ = CreatetVecIndex(tmp_index_type); if (!index_) { throw Exception(DB_ERROR, "Unsupported index type"); Loading