diff --git a/README.md b/README.md
index ad727a4..b3e0afb 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,7 @@
🐦 X (Twitter)
-**Zvec** is an open-source, in-process vector database — lightweight, lightning-fast, and designed to embed directly into applications. Built on **Proxima** (Alibaba's battle-tested vector search engine), it delivers production-grade, low-latency, scalable similarity search with minimal setup.
+**Zvec** is an open-source, in-process vector database — lightweight, lightning-fast, and designed to embed directly into applications. Battle-tested within Alibaba Group, it delivers production-grade, low-latency and scalable similarity search with minimal setup.
> [!Important]
> 🚀 **v0.3.1 (Apr 17, 2026)**
diff --git a/src/db/collection.cc b/src/db/collection.cc
index c554149..e75492b 100644
--- a/src/db/collection.cc
+++ b/src/db/collection.cc
@@ -624,10 +624,11 @@ Status CollectionImpl::execute_tasks(
Status CollectionImpl::DropIndex(const std::string &column_name) {
CHECK_COLLECTION_READONLY_RETURN_STATUS;
- CHECK_DESTROY_RETURN_STATUS(destroyed_, false);
std::lock_guard lock(schema_handle_mtx_);
+ CHECK_DESTROY_RETURN_STATUS(destroyed_, false);
+
auto new_schema = std::make_shared(*schema_);
auto s = new_schema->drop_index(column_name);
CHECK_RETURN_STATUS(s);
@@ -1548,8 +1549,6 @@ Status CollectionImpl::DeleteByFilter(const std::string &filter) {
CHECK_DESTROY_RETURN_STATUS(destroyed_, false);
- auto segments = get_all_segments();
-
VectorQuery query;
query.filter_ = filter;
query.topk_ = INT32_MAX;
diff --git a/src/db/common/concurrent_roaring_bitmap.h b/src/db/common/concurrent_roaring_bitmap.h
index 8d5f106..d1c6bd4 100644
--- a/src/db/common/concurrent_roaring_bitmap.h
+++ b/src/db/common/concurrent_roaring_bitmap.h
@@ -79,7 +79,8 @@ class ConcurrentRoaringBitmap32 {
std::shared_lock lock(mutex_);
uint64_t max_rank{0}, min_rank{0};
max_rank = roaring_bitmap_rank(bitmap_, max_doc_id);
- min_rank = roaring_bitmap_rank(bitmap_, min_doc_id - 1);
+ min_rank =
+ min_doc_id == 0 ? 0 : roaring_bitmap_rank(bitmap_, min_doc_id - 1);
return max_rank - min_rank;
}
diff --git a/src/db/common/error_code.cc b/src/db/common/error_code.cc
index d24c9cd..df7211a 100644
--- a/src/db/common/error_code.cc
+++ b/src/db/common/error_code.cc
@@ -123,8 +123,10 @@ PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidCollectionName, 2042,
PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidPartitionName, 2043,
"Invalid partition name");
PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidFieldName, 2044, "Invalid field name");
-PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidChannelCount, 2045, "Invalid field name");
-PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidReplicaCount, 2046, "Invalid field name");
+PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidChannelCount, 2045,
+ "Invalid channel count");
+PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidReplicaCount, 2046,
+ "Invalid replica count");
PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidJson, 2047, "Invalid json");
// used by master
PROXIMA_ZVEC_ERROR_CODE_DEFINE(InvalidClusterConfig, 2048,
diff --git a/src/db/common/error_code.h b/src/db/common/error_code.h
index 625cd66..71b7308 100644
--- a/src/db/common/error_code.h
+++ b/src/db/common/error_code.h
@@ -144,8 +144,6 @@ PROXIMA_ZVEC_ERROR_CODE_DECLARE(UnreadyQueue);
PROXIMA_ZVEC_ERROR_CODE_DECLARE(ScheduleError);
PROXIMA_ZVEC_ERROR_CODE_DECLARE(TaskIsRunning);
-PROXIMA_ZVEC_ERROR_CODE_DECLARE(DirectoryAlreadyExists);
-PROXIMA_ZVEC_ERROR_CODE_DECLARE(DirectoryNotExists);
// 2000~2999 [Client Check]
PROXIMA_ZVEC_ERROR_CODE_DECLARE(EmptyCollectionName);
diff --git a/src/db/common/file_helper.h b/src/db/common/file_helper.h
index 7be6090..95d5b2a 100644
--- a/src/db/common/file_helper.h
+++ b/src/db/common/file_helper.h
@@ -41,7 +41,7 @@ enum class FileID : uint32_t {
/*
* File name coresponding to file id
*/
-static const char *GetFileName(FileID t) {
+inline const char *GetFileName(FileID t) {
switch (t) {
case FileID::ID_FILE:
return "idmap";
diff --git a/src/db/common/rocbsdb_context.cc b/src/db/common/rocksdb_context.cc
similarity index 100%
rename from src/db/common/rocbsdb_context.cc
rename to src/db/common/rocksdb_context.cc
index 790456a..42867cc 100644
--- a/src/db/common/rocbsdb_context.cc
+++ b/src/db/common/rocksdb_context.cc
@@ -13,12 +13,12 @@
// limitations under the License.
+#include "rocksdb_context.h"
#include
#include
#include
#include
#include
-#include "rocksdb_context.h"
namespace zvec {
diff --git a/src/db/common/utils.h b/src/db/common/utils.h
index 43369f1..c238b92 100644
--- a/src/db/common/utils.h
+++ b/src/db/common/utils.h
@@ -11,6 +11,8 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
+#pragma once
+
#include
namespace zvec {
diff --git a/src/include/zvec/db/doc.h b/src/include/zvec/db/doc.h
index d8d649e..c78028c 100644
--- a/src/include/zvec/db/doc.h
+++ b/src/include/zvec/db/doc.h
@@ -323,8 +323,8 @@ class Doc {
private:
std::string pk_;
float score_{0.0f};
- uint64_t doc_id_;
- Operator op_;
+ uint64_t doc_id_{0};
+ Operator op_{Operator::INSERT};
template
static constexpr bool is_valid_type_v =
@@ -341,17 +341,17 @@ class Doc {
std::is_same_v> || // 10
std::is_same_v> || // 11
std::is_same_v> || // 12
- std::is_same_v> || // 13
- std::is_same_v> || // 14
+ std::is_same_v> || // 13
+ std::is_same_v> || // 14
std::is_same_v> || // 15
std::is_same_v> || // 16
std::is_same_v> || // 17
std::is_same_v> || // 18
std::is_same_v> || // 19
std::is_same_v<
- T, std::pair, std::vector>> || // 20
+ T, std::pair, std::vector>> || // 20
std::is_same_v<
- T, std::pair, std::vector>>; // 21
+ T, std::pair, std::vector>>; // 21
std::unordered_map fields_;
};
diff --git a/src/include/zvec/db/options.h b/src/include/zvec/db/options.h
index 1f2a9cb..8c3e8c5 100644
--- a/src/include/zvec/db/options.h
+++ b/src/include/zvec/db/options.h
@@ -17,11 +17,11 @@
namespace zvec {
-const uint32_t DEFAULT_MAX_BUFFER_SIZE = 64 * 1024 * 1024; // 128M
+const uint32_t DEFAULT_MAX_BUFFER_SIZE = 64 * 1024 * 1024; // 64M
struct CollectionOptions {
bool read_only_{false};
- bool enable_mmap_{true}; // ignnored when load collection
+ bool enable_mmap_{true}; // ignored when load collection
uint32_t max_buffer_size_{
DEFAULT_MAX_BUFFER_SIZE}; // ignored when read_only=true