Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,6 @@ set(ZVEC_BUILD_TARGETS
--target zvec_turbo
--target zvec
)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
list(APPEND ZVEC_BUILD_TARGETS --target core_knn_diskann)
set(ZVEC_DISKANN_LIB ${ZVEC_LIB_DIR}/libcore_knn_diskann.a)
list(APPEND ZVEC_BYPRODUCTS ${ZVEC_DISKANN_LIB})
endif()
set(ZVEC_CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release)
if(MSVC)
list(APPEND ZVEC_CMAKE_ARGS
Expand Down Expand Up @@ -208,7 +203,6 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_link_libraries(zvec-core INTERFACE
-Wl,--whole-archive
zvec_core
${ZVEC_DISKANN_LIB}
-Wl,--no-whole-archive
-Wl,--start-group
zvec-ailego
Expand Down
297 changes: 160 additions & 137 deletions package-lock.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,10 @@
"@types/jest": "^29.5.0",
"cmake-js": "^8.0.0",
"jest": "^29.7.0",
"node-addon-api": "*",
"ts-jest": "^29.1.2",
"node-addon-api": "^8.9.0",
"ts-jest": "^29.4.11",
"ts-node": "^10.9.2",
"typedoc": "^0.28.16",
"typedoc": "^0.28.20",
"typedoc-material-theme": "^1.4.1",
"typescript": "^5.9.3"
},
Expand Down
30 changes: 30 additions & 0 deletions src/binding/config.cc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "config.h"
#include <zvec/ailego/io/io_backend.h>
#include <zvec/db/config.h>
#include "types.h"

Expand Down Expand Up @@ -27,6 +28,17 @@ Napi::Object CreateLogLevelObject(Napi::Env env) {
}


Napi::Object CreateIOBackendTypeObject(Napi::Env env) {
Napi::Object obj = Napi::Object::New(env);
obj.Set("PREAD", static_cast<uint8_t>(
zvec::ailego::IOBackendType::kPread));
obj.Set("LIBAIO", static_cast<uint8_t>(
zvec::ailego::IOBackendType::kLibAio));
obj.Freeze();
return obj;
}


Napi::Value Initialize(const Napi::CallbackInfo &info) {
Napi::Env env = info.Env();
if (info.Length() != 1 || !info[0].IsObject()) {
Expand Down Expand Up @@ -210,14 +222,32 @@ Napi::Value GetDefaultJiebaDictDir(const Napi::CallbackInfo &info) {
}


Napi::Value GetIOBackendType(const Napi::CallbackInfo &info) {
return Napi::Number::New(
info.Env(),
static_cast<uint8_t>(zvec::ailego::current_io_backend_type()));
}


Napi::Value GetIOBackendDescription(const Napi::CallbackInfo &info) {
return Napi::String::New(
info.Env(), zvec::ailego::current_io_backend_description());
}


Napi::Object InitConfig(Napi::Env env, Napi::Object exports) {
exports.Set("LogType", CreateLogTypeObject(env));
exports.Set("LogLevel", CreateLogLevelObject(env));
exports.Set("IOBackendType", CreateIOBackendTypeObject(env));
exports.Set("initialize", Napi::Function::New(env, Initialize));
exports.Set("setDefaultJiebaDictDir",
Napi::Function::New(env, SetDefaultJiebaDictDir));
exports.Set("getDefaultJiebaDictDir",
Napi::Function::New(env, GetDefaultJiebaDictDir));
exports.Set("getIOBackendType",
Napi::Function::New(env, GetIOBackendType));
exports.Set("getIOBackendDescription",
Napi::Function::New(env, GetIOBackendDescription));
return exports;
}

Expand Down
12 changes: 11 additions & 1 deletion src/binding/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,19 @@ Napi::Object CreateLogTypeObject(Napi::Env env);

Napi::Object CreateLogLevelObject(Napi::Env env);

Napi::Object CreateIOBackendTypeObject(Napi::Env env);

Napi::Value Initialize(const Napi::CallbackInfo &info);

Napi::Value SetDefaultJiebaDictDir(const Napi::CallbackInfo &info);

Napi::Value GetDefaultJiebaDictDir(const Napi::CallbackInfo &info);

Napi::Value GetIOBackendType(const Napi::CallbackInfo &info);

Napi::Value GetIOBackendDescription(const Napi::CallbackInfo &info);

Napi::Object InitConfig(Napi::Env env, Napi::Object exports);


} // namespace binding
} // namespace binding
6 changes: 6 additions & 0 deletions src/index.d.mts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ export {
ZVecCreateAndOpen,
ZVecDataType,
ZVecGetDefaultJiebaDictDir,
ZVecGetIOBackendDescription,
ZVecGetIOBackendType,
ZVecIOBackendType,
ZVecIndexType,
ZVecInitialize,
ZVecLogLevel,
Expand Down Expand Up @@ -58,10 +61,13 @@ declare const _default: {
ZVecQuantizeType: typeof import('./index.js').ZVecQuantizeType;
ZVecLogType: typeof import('./index.js').ZVecLogType;
ZVecLogLevel: typeof import('./index.js').ZVecLogLevel;
ZVecIOBackendType: typeof import('./index.js').ZVecIOBackendType;
ZVecCollectionSchema: typeof import('./index.js').ZVecCollectionSchema;
ZVecInitialize: typeof import('./index.js').ZVecInitialize;
ZVecSetDefaultJiebaDictDir: typeof import('./index.js').ZVecSetDefaultJiebaDictDir;
ZVecGetDefaultJiebaDictDir: typeof import('./index.js').ZVecGetDefaultJiebaDictDir;
ZVecGetIOBackendType: typeof import('./index.js').ZVecGetIOBackendType;
ZVecGetIOBackendDescription: typeof import('./index.js').ZVecGetIOBackendDescription;
ZVecCreateAndOpen: typeof import('./index.js').ZVecCreateAndOpen;
ZVecOpen: typeof import('./index.js').ZVecOpen;
isZVecError: typeof import('./index.js').isZVecError;
Expand Down
32 changes: 32 additions & 0 deletions src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,21 @@ export declare const ZVecLogLevel: {
export type ZVecLogLevel = typeof ZVecLogLevel[keyof typeof ZVecLogLevel];


/**
* Numeric enum object defining I/O backends used by DiskANN disk reads.
*
* @group Global Configuration
*/
export declare const ZVecIOBackendType: {
/** Synchronous pread-based I/O. */
readonly PREAD: 0;
/** Asynchronous I/O through libaio. */
readonly LIBAIO: 1;
};

export type ZVecIOBackendType = typeof ZVecIOBackendType[keyof typeof ZVecIOBackendType];


/**
* Configuration options for initializing Zvec globally.
*
Expand Down Expand Up @@ -233,6 +248,20 @@ export function ZVecSetDefaultJiebaDictDir(dir: string): void;
*/
export function ZVecGetDefaultJiebaDictDir(): string;

/**
* Returns the active I/O backend used for DiskANN disk reads.
*
* @group Global Configuration
*/
export function ZVecGetIOBackendType(): ZVecIOBackendType;

/**
* Returns a human-readable description of the active DiskANN I/O backend.
*
* @group Global Configuration
*/
export function ZVecGetIOBackendDescription(): string;

/**
* Base interface for index parameters, requiring the type of index.
*
Expand Down Expand Up @@ -1481,10 +1510,13 @@ declare const _default: {
ZVecQuantizeType: typeof ZVecQuantizeType;
ZVecLogType: typeof ZVecLogType;
ZVecLogLevel: typeof ZVecLogLevel;
ZVecIOBackendType: typeof ZVecIOBackendType;
ZVecCollectionSchema: typeof ZVecCollectionSchema;
ZVecInitialize: typeof ZVecInitialize;
ZVecSetDefaultJiebaDictDir: typeof ZVecSetDefaultJiebaDictDir;
ZVecGetDefaultJiebaDictDir: typeof ZVecGetDefaultJiebaDictDir;
ZVecGetIOBackendType: typeof ZVecGetIOBackendType;
ZVecGetIOBackendDescription: typeof ZVecGetIOBackendDescription;
ZVecCreateAndOpen: typeof ZVecCreateAndOpen;
ZVecOpen: typeof ZVecOpen;
isZVecError: typeof isZVecError;
Expand Down
3 changes: 3 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,13 @@ module.exports = {
ZVecQuantizeType: binding.QuantizeType,
ZVecLogType: binding.LogType,
ZVecLogLevel: binding.LogLevel,
ZVecIOBackendType: binding.IOBackendType,
ZVecCollectionSchema: binding.CollectionSchema,
ZVecInitialize: binding.initialize,
ZVecSetDefaultJiebaDictDir: binding.setDefaultJiebaDictDir,
ZVecGetDefaultJiebaDictDir: binding.getDefaultJiebaDictDir,
ZVecGetIOBackendType: binding.getIOBackendType,
ZVecGetIOBackendDescription: binding.getIOBackendDescription,
ZVecCreateAndOpen: binding.createAndOpen,
ZVecOpen: binding.open,
isZVecError,
Expand Down
3 changes: 3 additions & 0 deletions src/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ export const ZVecMetricType = cjs.ZVecMetricType;
export const ZVecQuantizeType = cjs.ZVecQuantizeType;
export const ZVecLogType = cjs.ZVecLogType;
export const ZVecLogLevel = cjs.ZVecLogLevel;
export const ZVecIOBackendType = cjs.ZVecIOBackendType;
export const ZVecCollectionSchema = cjs.ZVecCollectionSchema;
export const ZVecInitialize = cjs.ZVecInitialize;
export const ZVecSetDefaultJiebaDictDir = cjs.ZVecSetDefaultJiebaDictDir;
export const ZVecGetDefaultJiebaDictDir = cjs.ZVecGetDefaultJiebaDictDir;
export const ZVecGetIOBackendType = cjs.ZVecGetIOBackendType;
export const ZVecGetIOBackendDescription = cjs.ZVecGetIOBackendDescription;
export const ZVecCreateAndOpen = cjs.ZVecCreateAndOpen;
export const ZVecOpen = cjs.ZVecOpen;
export const isZVecError = cjs.isZVecError;
Expand Down
2 changes: 1 addition & 1 deletion src/zvec
Submodule zvec updated 1 files
+9 −7 src/core/CMakeLists.txt
1 change: 0 additions & 1 deletion tests/schema.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import {
ZVecQuantizeType
} from '../src/index';


describe('CollectionSchema', () => {
it('should create a simple schema correctly', () => {
const schema = new ZVecCollectionSchema({
Expand Down
Loading